首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python-telegram-bot如何通过url发送InlineKeyboard

Python-telegram-bot如何通过url发送InlineKeyboard
EN

Stack Overflow用户
提问于 2018-08-20 00:23:45
回答 1查看 2K关注 0票数 0

尝试发送附加了回调键框的消息,机器人不好。告诉我

代码语言:javascript
复制
TypeError: must be str, not ReplyKeyboardMarkup

找不到任何如何正确做的例子。

代码语言:javascript
复制
keyboard = [[InlineKeyboardButton("Выполнено", callback_data='Done')],
                [InlineKeyboardButton("MAC", callback_data='MAC'),
                 InlineKeyboardButton("Phone", callback_data='Phone'),
                 InlineKeyboardButton("История", callback_data='History')]]
    reply_markup = ReplyKeyboardMarkup(keyboard)
    requests.post(url='https://api.telegram.org/bot{blah}/'
                      'sendMessage?chat_id=' + str(query.message.chat_id) + '&text="TEST"&reply_markup=' + reply_markup)
EN

回答 1

Stack Overflow用户

发布于 2018-08-20 10:22:22

首先,您应该使用InlineKeyboardMarkup而不是ReplyKeyboardMarkup来爬取由InlineKeyboardButton组成的标记对象。

然后,您可能只需使用bot对象来发送带有bot.send_message(query.message.chat_id, 'TEST', reply_markup=reply_markup)的消息。

最后,如果你真的需要使用requests来做手工的超文本传输协议请求,你应该在requests.post()data中提供参数。

代码语言:javascript
复制
import json
import requests
from telegram import InlineKeyboardButton, InlineKeyboardMarkup

keyboard = [[InlineKeyboardButton("Выполнено", callback_data='Done')],
            [InlineKeyboardButton("MAC", callback_data='MAC'),
             InlineKeyboardButton("Phone", callback_data='Phone'),
             InlineKeyboardButton("История", callback_data='History')]]
reply_markup = InlineKeyboardMarkup(keyboard)

data = {"chat_id": query.message.chat_id,
        "text": "TEST", 
        "reply_markup": json.dumps(reply_markup.to_dict())}

requests.post(url='https://api.telegram.org/bot{blah}/sendMessage', data=data)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51919653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档