在使用aiogram中的回调函数时,若需要返回一个布尔类型的值而不是字符串,可以采用以下的解决方法。
将返回值转换为布尔类型。
在回调函数中,将返回值通过python内置函数bool()
进行转换,如下所示:
async def my_callback_handler(query: types.CallbackQuery):
data = query.data
result = my_function(data)
await query.answer(text='处理完成')
await query.message.edit_text(text='返回结果为{}'.format(bool(result)))
在上述代码中,my_function()
函数返回一个字符串类型的值。
通过bool()
函数将其转换为bool类型的值,如果返回的字符串不为空,将返回值设为True,否则设为False。
最后在调用message.edit_text()
时,将返回的结果转换为字符串类型进行显示。
通过传递额外的参数来返回布尔类型。 通过设置回调查询的参数来返回布尔类型的值。
async def my_callback_handler(query: types.CallbackQuery, callback_data: dict):
data = query.data
result = my_function(data)
await query.answer(text='处理完成')
await query.message.edit_text(text='返回结果为{}'.format(callback_data['ok']))
my_button_callback = CallbackData('my_button', 'action')
button = InlineKeyboardButton('Do action', callback_data=my_button_callback.new(action='my_action', ok=True))
在上述代码中,我们为回调按钮设置了额外的参数‘ok’。
通过在回调函数my_callback_handler()
中传入参数callback_data
,可以获取到回调按钮中设置的参数。
在回调函数中直接获取参数中的‘ok’值即可,不需要再进行转换。