def test_callback(self):
# first insert the callbackhandler, register it and start polling
def button(bot, update):
query = update.callback_query
bot.editMessageText(text="Selected option: %s" % query.data,
chat_id=query.message.chat_id,
message_id=query.message.message_id)
dp = self.updater.dispatcher
dp.add_handler(CallbackQueryHandler(button))
self.updater.start_polling()
# the start callback in this example generates a message that will be edited, so let's mimick that message
# for future reference
keyboard = [[InlineKeyboardButton("Option 1", callback_data='1'),
InlineKeyboardButton("Option 2", callback_data='2')],
[InlineKeyboardButton("Option 3", callback_data='3')]]
reply_markup = InlineKeyboardMarkup(keyboard)
chat = self.cg.get_chat()
start_message = self.bot.sendMessage(chat_id=chat.id, text='Please choose:', reply_markup=reply_markup)
# now let's create some callback query's to send
u1 = self.cqg.get_callback_query(message=start_message, data="1")
u2 = self.cqg.get_callback_query(message=start_message, data="2")
u3 = self.cqg.get_callback_query(message=start_message, data="3")
# And test them one by one
self.bot.insertUpdate(u1)
data = self.bot.sent_messages[-1]
self.assertEqual(data['text'], "Selected option: 1")
self.assertEqual(data['chat_id'], start_message.chat.id)
self.assertEqual(data['message_id'], start_message.message_id)
self.bot.insertUpdate(u2)
data = self.bot.sent_messages[-1]
self.assertEqual(data['text'], "Selected option: 2")
self.assertEqual(data['chat_id'], start_message.chat.id)
self.assertEqual(data['message_id'], start_message.message_id)
self.bot.insertUpdate(u3)
data = self.bot.sent_messages[-1]
self.assertEqual(data['text'], "Selected option: 3")
self.assertEqual(data['chat_id'], start_message.chat.id)
self.assertEqual(data['message_id'], start_message.message_id)
# stop polling
self.updater.stop()
评论列表
文章目录