问题可能出在设置按钮的回调时,需要使用dp.register_callback_query_handler()
而不是dp.register_message_handler()
,因为按钮的交互是在回调查询中处理的。
以下是示例代码:
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.utils.callback_data import CallbackData
# 定义回调数据
button_cb = CallbackData("button", "button_id")
# 定义按钮
button = InlineKeyboardMarkup().add(
InlineKeyboardButton("点击按钮", callback_data=button_cb.new(button_id="unique_id"))
)
# 注册回调查询处理函数
@dp.callback_query_handler(button_cb.filter())
async def process_callback_button(callback_query: types.CallbackQuery, callback_data: dict):
button_id = callback_data["button_id"]
# 执行处理逻辑
在上述代码中,我们首先定义了回调数据并将其与按钮关联。然后,我们在dp.callback_query_handler()
中注册处理回调查询的函数,并使用button_cb.filter()
来过滤我们所定义的回调数据。最后,我们在处理函数中提取所需的按钮ID并执行相应的处理逻辑。