Python - Telegram bot的自定义键盘

时间:2017-04-26 02:13:44

标签: python telegram-bot

我正在尝试使用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)

提前致谢。

3 个答案:

答案 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密钥,并且还需要完全 urlcallback_data之一{ {1}},switch_inline_queryswitch_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>来更正代码。