Как использовать модуль asyncio в telebot?
import telebot
import asyncio
list = []
bot = telebot.AsyncTeleBot('')
@bot.message_handler()
async def get_message(message):
if str(message.chat.id) not in list:
list.append(str(message.chat.id))
await asyncio.sleep(60)
list.remove(str(message.chat.id))
if str(message.chat.id) in list:
bot.send_message(message.chat.id, "Попробуй позже")
asyncio.run(bot.polling())
Когда приходит сообщение высвечивается ошибка
RuntimeWarning: coroutine 'get_message' was never awaited
task(*args, **kwargs)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Ответы (2 шт):
"Как использовать модуль asyncio в telebot?" - Скорее всего, никак. Разумных путей не видно.
Судя по документации telebot не поддерживает асинхронность. Декоратор заточен на обычные функции, а не корутины.
А судя по реализации AsyncTeleBot (в документации тоже об этом говорится) - это всего лишь модификация TeleBot, которая любой вызов API выносит в отдельный поток, после чего результаты вызова просто можно дождаться потом, а параллельно делать что-то другое. Никакого отношения к ключевым словам async/await.
Все просто. AsyncTeleBot уже создал за тебя корутину при получении сообщения, так что уже выполняет это действие в отдельном потоке по этому тебе нужно добавить await перед sending_message
await bot.send_message(message.chat.id, "Попробуй позже")