как отправлять сообщения через бота в ровно определенное время?
Не могу осуществить отправку сообщений через каждые три часа. Пробовал с schedule, но увы происходит краш:
TypeError: the first argument must be callable
Понимаю, что сие процесс можно осуществить при помощи цикла While, но как это сделать, чтобы весь бот не лег?
Буду рад любому ответу в решении данного вопроса. В долгу не останусь.
UPD: Прошу прощения, что не приложил код сразу:
# Проверка времени рассылки #
async def check_time(m: types.Message):
check_time = cursor.execute(f'SELECT * FROM send WHERE group_id = {m.chat.id}').fetchone()
if check_time is None:
cursor.execute(f'INSERT INTO send VALUES (?, ?, ?)', (m.chat.id, 10800, m.date)) # 10800 - это время через которое должно быть отправлено время, в секундах
conn.commit()
if check_time is not None:
check_time = check_time[1]
return check_time
# Рассылка
async def send(m: types.Message):
time_ = await check_time(m) # time_ - указывает через какое время будет отправлено сообщение (параметр может изменяться)
await bot.send_message(chat_id= m.chat.id, text='text"') # именно это сообщение должно отправляться через промежуток времени time_
# ну, а это какие-то горе попытки (пытался сделать подобным этому - https://ru.stackoverflow.com/questions/1232276/)
def schedule_checker():
while True:
schedule.run_pending()
sleep(60)
if __name__ == '__main__':
schedule.every(1).minutes.do(send) # тут ругается на то, что аргумента нэма.. send_() missing 1 required positional argument: 'm'
Thread(target=schedule_checker).start()
executor.start_polling(dp, skip_updates=True)
По возможности всё расписал. Параметр time_ нигде не затрагивается, но хочется, чтобы именно от него зависела отправка сообщений по времени.
P.S: Код немножко изменил, но все же это не помогло решению проблемы..