我正在尝试使用Python和Flask从头开始编写一个Telegram bot,没有现有的库,以便学习。
我仍然坚持使用自定义键盘及其语法。有人能用一个简单的例子向我展示正确的方法吗?从这里开始:
#!/usr/bin/env python
import json, requests
keyboard = json.dumps({'inline_keyboard': [[ "<user1>", "<user2>" ]]})
headers = {'Accept': 'application/json'}
url = "https://api.telegram.org/bot<bot-id>/sendMessage"
kbd = {'text':'Whatever','chat_id':'<channel>','reply_markup': keyboard}
send_kbd = requests.post(url,data=kbd,headers=headers)
提前致谢。
答案 0 :(得分:0)
带有内联按钮的格式正确的(JSON)消息如下所示:
{
"text" : "Whatever text",
"chat_id" : 0123456798,
"reply_markup": {
"inline_keyboard": [
[
{
"text": "text",
"callback_data": "click_data"
}
],
[
{
"text": "text",
"callback_data": "click_data"
}
]
]
}
}
请注意,inline button必须是对象。 您不能通过Telegram发送纯文本按钮。
答案 1 :(得分:0)
伙计们,我在python中找到了一个soloution,它是: 首先,您需要发送文本。
urlrequest='https://api.telegram.org/bot<TOKEN>/sendmessage?chat_id=<chat_id>&text=<your text>'
keyboard={'keyboard':[[{'text':'text1'}],[{'text':'text2'}]]}
key=json.JSONEncoder().encode(keyboard)
url=urlrequest+'&reply_markup='+key
response=urlopen(url)
它为我工作,请尝试为您工作。 感谢您的关注。
答案 2 :(得分:-1)
电报回复可以很好地提供有关问题的信息。
InlineKeyboardMarkup是一个InlineKeyboardButton
数组的数组,外部数组的任何元素都定义了一行中的一组按钮。 InlineKeyboardButton
本身必须是json
个对象,需要text
密钥,并且还需要完全 url
,callback_data
之一{ {1}},switch_inline_query
,switch_inline_query_current_chat
组密钥。了解更多信息InlineKeyboardButton。
将callback_game
更改为:
keyboard
如果您没有,则可能需要替换keyboard = '{
"inline_keyboard": [
[
{"text":"baa boo", "url":"http://some.url"},
{"text":"boo baa", "switch_inline_query":""}
]
]
}'
和<bot-id>
来更正代码。