2

電報ボットを書きました。すべてがうまくいき、うまくいきました。ReplyKeyboardMarkupしかし、そのドキュメントに記載されているように使用したい場合、機能しませんでした! つまり、キーボードが表示されません。

このJSONオブジェクトにはキーがkeyboardあり、ドキュメントによるとその値は次のとおりです。

タイプ:文字列の配列の配列。

説明:ボタン行の配列で、それぞれが文字列の配列で表されます

これは、リクエストを送信するための私のコードです:

reply_markup = {'keyboard': [['1'],['2']], 'resize_keyboard': True, 'one_time_keyboard': True}
params = urllib.urlencode({
      'chat_id': str(chat_id),
      'text': msg.encode('utf-8'),
      'reply_markup': reply_markup,
      'disable_web_page_preview': 'true',
      # 'reply_to_message_id': str(message_id),
})
resp = urllib2.urlopen(BASE_URL + 'sendMessage', params).read()
4

4 に答える 4

3

Kostya によってリンクされた PHP の回答を読んだ後でも、Python に慣れるまでには少し試行錯誤が必要だったので、動作するように調整された Python コードを次に示します (ボットのトークンとチャット ID を追加するだけで済みます)。にメッセージを送信します)。

結果を確認するには、Telegram クライアントを最新バージョン (現在は 3.1) に更新する必要もあったことに注意してください。

import urllib
import urllib2
import json


TOKEN = "<your bot token>"
chat_id = <your chat id>


msg = "some string"
BASE_URL = "https://api.telegram.org/bot{}/".format(TOKEN)

reply_markup = {'keyboard': [['1'],['2']], 'resize_keyboard': True, 'one_time_keyboard': True}
reply_markup = json.dumps(reply_markup)
params = urllib.urlencode({
      'chat_id': str(chat_id),
      'text': msg.encode('utf-8'),
      'reply_markup': reply_markup,
      'disable_web_page_preview': 'true',
      # 'reply_to_message_id': str(message_id),
})
resp = urllib2.urlopen(BASE_URL + 'sendMessage', params).read()
于 2015-07-26T17:20:14.483 に答える
1

よろしければ、この方法をお試しください

import telegram
from telegram.ext import Updater

updater = Updater(token='BOT_TOKEN')
dispatcher = updater.dispatcher
updater.start_polling()
def test(bot, update):
    results = bot.sendMessage(chat_id=update.message.chat_id, text="Test", reply_markup={"keyboard":[["Test1"], ["Test2"], ["Test3"], ["Test4"]})
    print results
dispatcher.addTelegramCommandHandler('test', test)

このインポートにより、物事がはるかに短くなります。今日、それを使い始めたばかりですpython-telegram-bot 3.4

于 2016-03-28T22:06:45.380 に答える