@Zanziile

Telegram bot Как назначить время и уведомить через заданное время?

Делаю бота для упрощения быта. Суть вопроса: Как сделать так, чтобы после команды "/Уведомление" бот просил ввести целое(int) число, затем говорил "Хорошо напомню через n" и присылал сообщение "Топить печку!" через введение время
P.S. Aiogram

6378bd63b300b568836714.png!
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
По правилам ресурса код стоит выкладывать текстом, оборачивая тэгом code.
Вам подойдут очереди сообщений (rq, Celery, queue, asyncio.Queue).
Примитивно ставить задачу в цикл событий.
P.S. Рекомендую очереди
@dp.message_handler(commands=['some_command'])
async def some_handler(message: Message):
    text = 'Текст для отправки '
    DELAY = 10
    _loop = asyncio.get_running_loop()
    _loop.call_later(DELAY, func, message.from_user.id, text)

async def func(chat_id, text):
    await dp.bot.send_message(chat_id, text)

UPD Рекомендации
1. Избавьтесь от n = int(input()). Вызов input блокирует выполнение кода, как и time.sleep
2. Ознакомьтесь с встроенной в aiogram машиной состояний (FSM). Меняя state отлавливайте введенное пользователем число.
3. Избавьтесь от конструкции try: except: проверяя является ли message.text числом
if message.text.isdigit():
    print('ok')
else:
    print('Это не число')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы