не срабатывает callback в aiogram 2.x
в общем, проблема такая. Написал бота, через какое-то время потребовалось его доработать, плюс появились странные баги - многие функции не срабатывали, хотя должны были. Скачал бота к себе с сервера, не меняя ничего, кроме токена, запускаю и бот тупо игнорит все колбеки. Код, который логически должен работать - не работает. Тогда я написал самого простого бота с инлайн кнопкой, код настолько простой, что там тупо негде ошибаться(хотя я не исключаю ошибку) и все равно колбек не работает. Умоляю, помогите. Версия aiogram==2.25. Сколько раз на stack не писал, ни разу на мой вопрос никто не ответил(
код не в скринах: хендлеры:
from aiogram import types, Dispatcher
from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton
async def start(msg: types.Message):
markup = InlineKeyboardMarkup(row_width=2)
markup.add(InlineKeyboardButton('Start', callback_data='start'))
await msg.answer(f'Hello, {msg.from_user.first_name}!', reply_markup=markup)
async def some_button_process(call: types.CallbackQuery):
await call.answer()
await call.message.edit_text(f'You clicked {call.data}')
def register(dp: Dispatcher):
dp.register_message_handler(start, commands=['start'])
dp.register_callback_query_handler(some_button_process, text='start')
запуск бота:
from aiogram import executor
from loguru import logger
from helper import dp
import handler
async def on_startup(_):
logger.info('Bot started')
if __name__ == '__main__':
handler.register(dp)
executor.start_polling(dp, skip_updates=False, on_startup=on_startup)
код helper.py:
from config import TOKEN
from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.types import ParseMode
storage=MemoryStorage()
bot = Bot(token=TOKEN, parse_mode=ParseMode.HTML)
dp = Dispatcher(bot, storage=MemoryStorage())
Дополнение 1:
Кто-то очень добрый и умный посоветовал мне посмотреть список апдейтов(ну или понятия не имею, что именно)
добавилось в on_startup(_):
info = await bot.get_webhook_info()
logger.info(info)
вывод в логи:
{"url": "", "has_custom_certificate": false, "pending_update_count": 0, "allowed_updates": ["message", "chat_join_request"]}
если я все верно понял, разрешены только апдейты в виде новых сообщений и заявок на вступление в чат, а все остальные - игнорируются. Если я угадал, то как это можно исправить?
Ответы (1 шт):
Можно прописать те апдейты, которые вы хотите получать: например:
allowed_updates=["message", "inline_query", "callback_query"]
Полный список апдейтов есть в документации к Telegram Bot API, можно перечислить все. Единого какого-то значения, что принимать все апдейты, в aiogram, насколько я знаю, нет. В aiogram 3, если не прописываешь, то, по умолчанию принимается все.
Какие апдейты принимает бот, можно проверить, используя ссылку: https://api.telegram.org/bot123456:abcd/getWebhookInfo, где 123456:abcd - это токен бота.
Вообще, странно, что у вас бот начал принимать ограниченное количество апдейтов, ип ри это в коде это не прописано


