python-telegram-bot错误'CallbackContext'对象没有属性'message'

问题描述 投票:0回答:1

以下是电报漫游器的示例。帮助我了解为什么函数message_handler在我的代码中起作用,而greet_user-不起作用。

来自error_log装饰器的错误:'CallbackContext' object has no attribute 'message'

from telegram import Update, Bot
from telegram.ext import Updater, MessageHandler, Filters, CallbackContext, CommandHandler
from telegram.utils.request import Request


def log_error(func):
    def wrapper(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except Exception as exc:
            print(f'Error: {exc}')
            raise exc

    return wrapper


def message_handler(update: Update, context: CallbackContext):
    update.message.reply_text(text='Example')


@log_error
def greet_user(bot, update):
    update.message.reply_text('hello')

def main():
    req = Request(connect_timeout=0.5)
    t_bot = Bot(
        request=req,
        token='xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        base_url='https://telegg.ru/orig/bot',
    )
    updater = Updater(bot=t_bot, use_context=True)

    dp = updater.dispatcher
    dp.add_handler(CommandHandler('start', greet_user))
    dp.add_handler(MessageHandler(filters=Filters.all, callback=message_handler))

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()
python python-3.x telegram-bot python-telegram-bot
1个回答
0
投票

我想出了什么问题。如果我们在use_context=True中使用Updater,则应通过以下方式将参数传递给函数:

def greet_user(`update: Update, context: CallbackContext`):
    update.message.reply_text('hello')

https://github.com/python-telegram-bot/python-telegram-bot/wiki/Transition-guide-to-Version-12.0

© www.soinside.com 2019 - 2024. All rights reserved.