Как сделать фото и кнопки текст в канал через интервал который в течение дня увеличивается а ночью уменьшаться
` import logging from aiogram import Bot, Dispatcher, executor, types from aiogram.contrib.middlewares.logging import LoggingMiddleware from aiogram.dispatcher import Dispatcher from aiogram.dispatcher.webhook import SendMessage from aiogram.utils.executor import start_webhook import aiogram.utils.markdown as fmt from aiogram.contrib.fsm_storage.memory import MemoryStorage from apscheduler.schedulers.background import BackgroundScheduler
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
# Django
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
application = get_wsgi_application()
from db import *
from pytils import numeral
from datetime import datetime, timedelta, time
import asyncio
import requests
import json
import typing
import re
import random
import time
from aiogram.types.web_app_info import WebAppInfo
from aiogram.types import ReplyKeyboardRemove, \
ReplyKeyboardMarkup, KeyboardButton, \
InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.utils.callback_data import CallbackData
cb = CallbackData("bot", "id", "action")
logging.basicConfig(level=logging.INFO)
tgbot = Settings.objects.get(id = '1')
NOTSUB_MESSAGE = "Для доступа, необходимо подписаться"
CHANNELS = [
["подписаться", "-1001600180086", "https://t.me/+LGzhrhrhrrrwIzNjYy"],
]
def botoChannels():
keyboard = InlineKeyboardMarkup(row_width=3)
btnDoneSub = InlineKeyboardButton(text="Главное меню......", callback_data=" ")
keyboard.insert(btnDoneSub)
return keyboard
def showChannels():
keyboard = InlineKeyboardMarkup(row_width=1)
for channel in CHANNELS:
btn = InlineKeyboardButton(text=channel[0], url=channel[2])
keyboard.insert(btn)
btnDoneSub = InlineKeyboardButton(text="Подписался", callback_data="subchanneldone")
keyboard.insert(btnDoneSub)
return keyboard
async def check_sub_channels(_channels, user_id):
for channel in _channels:
chat_member = await bot.get_chat_member(chat_id=channel[1], user_id=user_id)
print(chat_member['status'])
if chat_member['status'] == 'left':
return False
return True
import asyncio
bot = Bot(parse_mode='HTML',token=tgbot.admin_ip)
dp = Dispatcher(bot, storage=MemoryStorage())
dp.middleware.setup(LoggingMiddleware())
print(tgbot.admin_ip)
CHANNEL_ID = -10020054365443
async def send_message(channel_id: int, text: str):
await bot.send_message(channel_id, text)
async def main():
keyboard = types.InlineKeyboardMarkup()
keyboard.add(types.InlineKeyboardButton(text="💬 ЧАТ", url="https://t.me/+PiyiuivkpVtgrrtgtgri"), types.InlineKeyboardButton(text="🔝 ОТЗЫВЫ", url="https://t.me/+boDuY5Hqgrtgrg"))
await send_message(CHANNEL_ID, '<b>Hello!</b>', reply_markup=keyboard, parse_mode='HTML')
teksi = f"Криптовалют в 2024 году: \nнадежные, с минимальной комиссией и депозитом ... \nНа примере обмена Сбербанк (RUB) → Лайткоин (LTC)"
photo = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Bitcoin_Digital_Currency_Logo.png/300px-Bitcoin_Digital_Currency_Logo.png.jpg"
url1 = f"https://api.telegram.org/bot{tgbot.admin_ip}/Sendphoto?chat_id={tgbot.id_for_notification1}&photo={photo}&caption={teksi}.&parse_mode=HTML"
url2 = f"https://api.telegram.org/bot{tgbot.admin_ip}/Sendphoto?chat_id={tgbot.id_for_notification2}&photo={photo}&caption={teksi}..&parse_mode=HTML"
url3 = f"https://api.telegram.org/bot{tgbot.admin_ip}/Sendphoto?chat_id={tgbot.id_for_notification3}&photo={photo}&caption={teksi}...&parse_mode=HTML"
scheduler1 = BackgroundScheduler()
scheduler2 = BackgroundScheduler()
scheduler3 = BackgroundScheduler()
scheduler4 = BackgroundScheduler()
def fun1():
requests.post(f'{url1}')
target_time = datetime.now() + timedelta(seconds=150)
#Цикл для отображения оставшегося времени каждую секунду
while True:
# Разница между текущим временем и временем таймера
remaining_time = target_time - datetime.now()
# Если время вышло, выходим из цикла
if remaining_time.total_seconds() <= 0:
print("Время вышло!")
break
# Вывод оставшегося времени в секундах
print("\rОсталось {} секунд".format(int(remaining_time.total_seconds())), end="")
# Пауза на 1 секунду
time.sleep(10)
while True:
now = datetime.now()
current_time = now.strftime("%H:%M:%S")
if current_time == '3:28:00':
print("Время ПРИШЛО")
def fun2():
requests.post(f'{url2}')
target_time = datetime.now() + timedelta(seconds=200)
#Цикл для отображения оставшегося времени каждую секунду
while True:
# Разница между текущим временем и временем таймера
remaining_time = target_time - datetime.now()
# Если время вышло, выходим из цикла
if remaining_time.total_seconds() <= 0:
print("Время вышло!")
break
# Вывод оставшегося времени в секундах
print("\rОсталось {} секунд".format(int(remaining_time.total_seconds())), end="")
# Пауза на 1 секунду
time.sleep(10)
while True:
now = datetime.now()
current_time = now.strftime("%H:%M:%S")
if current_time == '3:27:00':
print("Время ПРИШЛО")
def fun3():
requests.post(f'{url3}')
target_time = datetime.now() + timedelta(seconds=250)
#Цикл для отображения оставшегося времени каждую секунду
while True:
# Разница между текущим временем и временем таймера
remaining_time = target_time - datetime.now()
# Если время вышло, выходим из цикла
if remaining_time.total_seconds() <= 0:
print("Время вышло!")
break
# Вывод оставшегося времени в секундах
print("\rОсталось {} секунд".format(int(remaining_time.total_seconds())), end="")
# Пауза на 1 секунду
time.sleep(10)
while True:
now = datetime.now()
current_time = now.strftime("%H:%M:%S")
if current_time == '3:25:00':
print("Время ПРИШЛО")
if __name__ == '__main__':
scheduler1.add_job(id='Scheduled task', func=fun1, trigger='interval', seconds=150)
scheduler1.start()
scheduler2.add_job(id='Scheduled task', func=fun2, trigger='interval', seconds=200)
scheduler2.start()
scheduler3.add_job(id='Scheduled task', func=fun3, trigger='interval', seconds=250)
scheduler3.start()
while True:
time.sleep(1)`