Не могу реализовать этот счетчик, после того как отправилась фотка в канал с описанием и двумя кнопками, я по ней нажимаю, и ничего не происходит, возможно хендлер не ловит, или нужно чтобы начинался полинг, но сообщения в канал отправляются пока не наступит полинг, когда он начнется сообщения не отправляется, не знаю как исправить все это, очень был бы рад, если бы кто-то помог!!!
import asyncio
from asyncio.log import logger
from os import listdir
from aiogram import types
from aiogram.types import InputFile
from aiogram.utils.markdown import hlink
from config import channels
from keyboards.good_or_bad import good_or_bad_keyboard
from loader import bot, dp
from utils.notify_admins import on_startup_notify
import datetime
async def on_startup(dp):
await on_startup_notify(dp)
async def send_photo(chat_id: int, photo: InputFile, caption: str):
await bot.send_photo(chat_id, photo, caption)
# Переменные для итерации фото
mypath = "images"
photos = list()
formats = ['.jpg', '.jpeg', '.png']
savedSet = set()
# Переменные для ссылки на канал
one = '9x16 - Name Channel'
two = 't.me/link_on_channel'
three = '@name_channel'
url = two
# Переменные для итерации времени
time_3 = str(datetime.time(hour=11, minute=39))
time_3 = time_3[:-3]
time_5 = str(datetime.time(hour=11, minute=40))
time_5 = time_5[:-3]
time_7 = str(datetime.time(hour=11, minute=41))
time_7 = time_7[:-3]
# Переменные для итерации реакций
async def main(dp):
async def generator_1(param):
param += 1
return param
x_global = 0
y_global = 0
while True:
@dp.callback_query_handler(text_contains='good')
async def good_reaction(call: types.CallbackQuery):
await call.answer('Вам понравилась публикация')
x_local = 0
x_local = x_global
await generator_1(param=x_local)
@dp.callback_query_handler(text_contains='bad')
async def bad_reaction(call: types.CallbackQuery):
await call.answer('Вам не понравилась публикация')
y_local = 0
y_local = y_global
await generator_1(param=y_local)
now_global = datetime.datetime.now()
now_global = str(now_global.time())
now_global = now_global.split('.')[0]
now_global = now_global[:-3]
if now_global == time_3:
for i in formats:
for j in filter(lambda x: x.endswith(i), listdir(mypath)):
photos.append(j)
for i in photos:
now_local = datetime.datetime.now()
now_local = str(now_local.time())
now_local = now_local.split('.')[0]
now_local = now_local[:-3]
if now_local == time_3 or time_5 or time_7:
with open(f"{mypath}/{i}", 'rb') as photo:
print(f'Сейчас {now_local}')
print('Отправляю фото')
await bot.send_photo(chat_id=channels, photo=photo, caption=f'{hlink(one, url=two)}\n'
f'{hlink(two, url=two)}\n'
f'{hlink(three, url=two)}',
reply_markup=good_or_bad_keyboard)
@dp.callback_query_handler(text_contains='good')
async def good_reaction(call: types.CallbackQuery):
await call.answer('Вам понравилась публикация')
x_local = 0
x_local = x_global
await generator_1(param=x_local)
@dp.callback_query_handler(text_contains='bad')
async def bad_reaction(call: types.CallbackQuery):
await call.answer('Вам не понравилась публикация')
y_local = 0
y_local = y_global
await generator_1(param=y_local)
await asyncio.sleep(60)
if now_local == time_7:
print('Остановка')
await asyncio.sleep(120)
else:
pass
try:
await dp.start_polling()
finally:
await dp.storage.close()
await dp.storage.wait_closed()
await bot.session.close()
if __name__ == '__main__':
try:
asyncio.run(main(dp))
except (KeyboardInterrupt, SystemExit):
logger.error("Bot stopped!")