微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法让电报机器人可以响应频道中的命令?

如何解决有没有办法让电报机器人可以响应频道中的命令?

我需要一个用 python 编码的机器人,它可以在电报频道中回复像 /start 这样的命令。 它需要回复一个 InlineKeyboardMarkup。

from telegram import InlineKeyboardButton,InlineKeyboardMarkup
from telegram.ext.updater import Updater
from telegram.ext.commandhandler import CommandHandler
from telegram.ext.callbackqueryhandler import CallbackQueryHandler
from telegram.callbackquery import CallbackQuery
from telegram.ext.callbackcontext import CallbackContext
from telegram.update import Update
import telegram

updater: Updater = Updater("xxxxxxxxxx",use_context=True)

def start(update: Update,context: CallbackContext):
    keyboard = [[InlineKeyboardButton("xxxxx",url='xxxx'),InlineKeyboardButton("xxxxx",url='xxxxx')],[InlineKeyboardButton("xxxxx",url='xxxxx')]]
    reply_markup = InlineKeyboardMarkup(keyboard)

    update.effective_message.reply_text("Gruppen zum Beitreten: ",reply_markup=reply_markup)
    pass


def button(update,context):
    query: CallbackQuery = update.callback_query
    query.answer()
    query.edit_message_text(format(query.data))

updater.dispatcher.add_handler(telegram.ext.PrefixHandler("/","button",start))
updater.dispatcher.add_handler(CallbackQueryHandler(button))
updater.start_polling()

因此,此代码可在与机器人和群组的私人聊天中使用。但我需要在频道中使用它。 请有人帮助找到解决方案:/

解决方法

因为 PrefixHandler 在内部使用 Filters.updates.messages,不包括频道帖子,所以 PrefixHandler 无法工作。您可以使用例如MessageHandler(Filters.regex("^/button"),start) 代替。 Ofc 根据您的用例,您可能想要增强正则表达式,例如'^/button\b'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。