如何使用 python-telegram-bot 获取 InLineKeyboardButton 的 return
How to get return of InLineKeyboardButton with python-telegram-bot
我正在 python-telegram-bot
构建菜单系统。
我创建了一个Django项目,如下图,使用Webhook连接Telegram
我已经根据下面的代码构建了按钮菜单,但是我不确定当他单击按钮时如何与联系人交互。
你能帮我解决这个问题吗?
view.py
import json
from django.http.response import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from core.message import proccess
@csrf_exempt
def event(request):
json_telegram = json.loads(request.body)
proccess(request, json_telegram)
return HttpResponse()
messages.py
import telegram
from bot_webhook.settings import TOKEN
from telegram import InlineKeyboardMarkup, InlineKeyboardButton
bot = telegram.Bot(token=TOKEN)
def proccess(request, json_telegram):
msg_options(json_telegram)
def msg_options(json_telegram):
chat_id = json_telegram['message']['from']['id']
first_name = json_telegram['message']['from']['first_name']
last_name = json_telegram['message']['from']['last_name']
button_list = []
button_list.append(InlineKeyboardButton('Button One', callback_data='query_one'))
button_list.append(InlineKeyboardButton('Button two', callback_data='query_two'))
reply_markup = InlineKeyboardMarkup(build_menu(button_list, n_cols=2))
bot.send_message(text='Hello {0} {1}!\nI have this options:'.format(first_name, last_name),
chat_id=chat_id,
reply_markup=reply_markup)
def build_menu(buttons,
n_cols,
header_buttons=None,
footer_buttons=None):
menu = [buttons[i:i + n_cols] for i in range(0, len(buttons), n_cols)]
if header_buttons:
menu.insert(0, [header_buttons])
if footer_buttons:
menu.append([footer_buttons])
return menu
处理 json_telegram
你会得到你自己发送的 callback_data
,它会像回旋镖一样卷土重来
这是Bot编程的基本原则
我正在 python-telegram-bot
构建菜单系统。
我创建了一个Django项目,如下图,使用Webhook连接Telegram
我已经根据下面的代码构建了按钮菜单,但是我不确定当他单击按钮时如何与联系人交互。
你能帮我解决这个问题吗?
view.py
import json
from django.http.response import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from core.message import proccess
@csrf_exempt
def event(request):
json_telegram = json.loads(request.body)
proccess(request, json_telegram)
return HttpResponse()
messages.py
import telegram
from bot_webhook.settings import TOKEN
from telegram import InlineKeyboardMarkup, InlineKeyboardButton
bot = telegram.Bot(token=TOKEN)
def proccess(request, json_telegram):
msg_options(json_telegram)
def msg_options(json_telegram):
chat_id = json_telegram['message']['from']['id']
first_name = json_telegram['message']['from']['first_name']
last_name = json_telegram['message']['from']['last_name']
button_list = []
button_list.append(InlineKeyboardButton('Button One', callback_data='query_one'))
button_list.append(InlineKeyboardButton('Button two', callback_data='query_two'))
reply_markup = InlineKeyboardMarkup(build_menu(button_list, n_cols=2))
bot.send_message(text='Hello {0} {1}!\nI have this options:'.format(first_name, last_name),
chat_id=chat_id,
reply_markup=reply_markup)
def build_menu(buttons,
n_cols,
header_buttons=None,
footer_buttons=None):
menu = [buttons[i:i + n_cols] for i in range(0, len(buttons), n_cols)]
if header_buttons:
menu.insert(0, [header_buttons])
if footer_buttons:
menu.append([footer_buttons])
return menu
处理 json_telegram
你会得到你自己发送的 callback_data
,它会像回旋镖一样卷土重来
这是Bot编程的基本原则