我可以在一个命令上调用多个消息处理程序吗?

问题描述

我想为电报机器人做出贡献,该机器人的功能分为多个模块。这个机器人显示了我大学的课程安排。我想添加我自己的显示其他事件的模块。此外,我希望对除我之外的其他模块进行最少的干预。

当天的日程表显示/today 命令,并且已经定义了处理程序。 我想添加我自己的处理程序,该处理程序还将向用户发送包含我的事件的消息。

问题是,我可以这样声明两个不同的消息处理程序吗:

# module1.py
@bot.message_handler(commands=['today'])
def show_classes():
    ...

# my_module.py
@bot.message_handler(commands=['today'])
def show_events():
    ...

这种方法行得通吗?如果没有,正确的做法是什么?

解决方法

终于到了我的电脑。不,这行不通。检查消息处理程序过滤器直到第一次匹配。使用这样的代码,当 test() 到达时,只会调用 /con

@bot.message_handler(commands=['con'])
def test(message: Message):
    bot.send_message(message.chat.id,"test1")

@bot.message_handler(commands=['con'])
def test2(message: Message):
    bot.send_message(message.chat.id,"test2")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...