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

Is there a Way that a telegram Bot could respond to a command in a Channel?

我需要一个在 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'.