使用内联菜单发送图像或文档

时间:2019-06-18 17:24:57

标签: python-2.7 telegram-bot python-telegram-bot

我正在用python-telegram-bot编写Python Telegram Bot。 我创建了一个自定义内联菜单。 我希望用户可以按一个按钮并获得图片。 send_photo函数需要bot实例进行更新。 但是我现在不知道如何通过CallBackQuerry处理程序

有人知道如何解决吗?

发送照片功能:

def gvu(bot, update):
    bot.send_photo(update.message.chat_id, photo=open('botpic/gvu.jpg', 'rb'))

主要例程中的处理程序:

updater.dispatcher.add_handler(CallbackQueryHandler(pattern="1", callback=gvu))
return self.callback(dispatcher.bot, update, **optional_args)

错误:

  

TypeError:callback_handler()获得了意外的关键字参数   'chat_data'

2 个答案:

答案 0 :(得分:1)

这对我有用:

    buttonsMenu = [
    [telegram.InlineKeyboardButton("UP", callback_data="UpVote")],
    [telegram.InlineKeyboardButton("DOWN", callback_data="DownVote")],
    ]
    keyboard_markup = telegram.InlineKeyboardMarkup(buttonsMenu)
    context.bot.sendPhoto(chat_id=update.message.chat.id, photo=open('./imgpath.jpg'), 'rb'),caption='messageText', reply_markup=keyboard_markup)
     

这将发送一个图像,在文本msg下方带有文本和2个按钮。

现在用于回调查询,我在main()中做到了

# Callbacks for the msg buttons
dp.add_handler(CallbackQueryHandler(vote, pattern="UpVote"))
dp.add_handler(CallbackQueryHandler(vote, pattern="DownVote"))

在表决中,def是运行我要用于该回调的代码的def。 希望有道理。

答案 1 :(得分:0)