@memsartem

Как остановить работу Телеграмм Бота?

Всем привет, пишу бота на aiogram, мне необходимо сделать так, чтобы я смог остановить работу бота при помощи ввода данных в саму программу, а не в бот. Возможно ли как то это реализовать?
  • Вопрос задан
  • 3966 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Это будет непросто.
Стандартный input() - строго синхронный, он остановит выполнение программы до своего завершения.
Можно попробовать что-то в духе:
import asyncio

loop = asyncio.get_event_loop()
bot = Bot(token=TOKEN)
dp = Dispatcher(bot=bot)

async def delay_exit():
    #запускаем input() без параметров в отдельном потоке
    # await не продолжит выполнение, пока поток не отработает
    # но в то же время цикл бота будет работать независимо от этого потока
    await loop.run_in_executor(None, input) 
    dp.stop_polling()
    await dp.wait_closed()
    await bot.close()

if __name__ == '__main__':
    loop.create_task(delay_exit()) # планируем выполнение delay_exit() и продолжаем
    loop.run_until_complete(dp.start_polling()) # работаем, пока dp.start_polling() не выполнится
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы