не срабатывает callback в aiogram 2.x

в общем, проблема такая. Написал бота, через какое-то время потребовалось его доработать, плюс появились странные баги - многие функции не срабатывали, хотя должны были. Скачал бота к себе с сервера, не меняя ничего, кроме токена, запускаю и бот тупо игнорит все колбеки. Код, который логически должен работать - не работает. Тогда я написал самого простого бота с инлайн кнопкой, код настолько простой, что там тупо негде ошибаться(хотя я не исключаю ошибку) и все равно колбек не работает. Умоляю, помогите. Версия aiogram==2.25. Сколько раз на stack не писал, ни разу на мой вопрос никто не ответил(

код в скринах: хендлеры

запуск бота идет с этого файла

тут находятся экземпляры классов Bot и Dispatcher

код не в скринах: хендлеры:

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 шт):

Автор решения: CausonQ

Можно прописать те апдейты, которые вы хотите получать: например:

allowed_updates=["message", "inline_query", "callback_query"]

Полный список апдейтов есть в документации к Telegram Bot API, можно перечислить все. Единого какого-то значения, что принимать все апдейты, в aiogram, насколько я знаю, нет. В aiogram 3, если не прописываешь, то, по умолчанию принимается все.

Какие апдейты принимает бот, можно проверить, используя ссылку: https://api.telegram.org/bot123456:abcd/getWebhookInfo, где 123456:abcd - это токен бота.

Вообще, странно, что у вас бот начал принимать ограниченное количество апдейтов, ип ри это в коде это не прописано

→ Ссылка