在一个电报机器人中,当您单击“支持”按钮时,会弹出一个包含支持联系信息的窗口 联系支持的按钮看起来不像 URL 按钮,它看起来像带有回调数据的东西。如何在我的机器人中实现相同的功能?
我通常按以下方式实现它:
sup_mk = types.InlineKeyboardMarkup()
sup_btn = types.InlineKeyboardButton(text="contact support", url="t.me/mysupport")
sup_mk.add(sup_btn)
在该机器人中,使用其他方式。联系支持的按钮看起来不像 URL 按钮,它看起来像带有回调数据的东西。如何在我的机器人中做同样的事情?
当然可以!是对的,直接使用 URL 按钮来获取支持链接看起来不像提供的屏幕截图中那样精致。需要使用带有回调数据的内联按钮,然后处理该回调以显示的支持信息。
以下是如何使用
python-telegram-bot
库在的 Telegram 机器人中实现此功能的方法:
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler, CallbackContext
# 将 YOUR_TOKEN 替换为的机器人令牌
updater = Updater(token="YOUR_TOKEN", use_context=True)
dispatcher = updater.dispatcher
def start(update: Update, context: CallbackContext):
keyboard = [
[
InlineKeyboardButton("联系支持", callback_data="support")
],
]
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text("如果需要帮助,请联系支持:", reply_markup=reply_markup)
def handle_support_callback(update: Update, context: CallbackContext) -> None:
"""处理支持按钮回调"""
query = update.callback_query
query.answer() # 确认回调
# 在此处输入的支持信息
support_message = """
**联系支持**
可以通过以下方式联系我们的支持团队:
* **电子邮件:** [email protected]
* **电话:** +1-555-123-4567
"""
query.edit_message_text(text=support_message, parse_mode='Markdown')
# 注册处理程序
dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(CallbackQueryHandler(handle_support_callback, pattern="support"))
# 启动机器人
updater.start_polling()
updater.idle()
代码说明:
-
导入必要模块:
需要从
python-telegram-bot
库导入InlineKeyboardButton
、InlineKeyboardMarkup
、Update
、Updater
、CommandHandler
、CallbackQueryHandler
和CallbackContext
。 -
创建支持按钮:
start
函数创建了一个带有callback_data
为 "support" 的内联按钮。 -
处理回调:
handle_support_callback
函数处理 "support" 回调。它首先确认回调,然后发送包含的支持信息的文本消息。可以自定义此消息以包含的电子邮件地址、电话号码或任何其他相关信息。 -
注册处理程序:
需要使用
dispatcher.add_handler
注册命令处理程序和回调处理程序。
通过这种方法,当用户点击“联系支持”按钮时,他们会看到一条包含提供的支持信息的漂亮消息,而不是一个简单的 URL 链接。
标签:python,button,telegram,python-telegram-bot,telebot From: 78785860