面临以下问题: 很多时候,在创建聊天机器人的时候,需要处理各种用户命令,基本上我做了以下步骤:
我创建了一个处理特定命令的函数
我接受来自用户的消息并使用 if-elif 构造将其发送到所需的函数
但是这种方法有一个很大的缺点:你需要隔离多个 if-elif,例如:
new_message = 'персики'
if new_message == 'клубника':
get_strawberry(new_message)
elif new_message == 'апельсины':
get_orange(new_message)
elif new_message == 'персики':
get_peaches(new_message)
等等。
有什么办法可以避免这种情况吗?
我曾经在 Flask 中遇到过重写函数(应该将页面返回给用户)的装饰器,并且网站上的路径被传递给这些装饰器,当路径与当前用户路径匹配时,这个函数就起作用了。但是如何实现它,它有名字吗?这样您就可以找到信息,或者有人可以举个例子。因为我完全无法理解如何通过将“路径”或在我的情况下是一个字符串传递给写在这个函数之上的装饰器来强制调用函数。
您可以存储函数引用的字典:
如果你想通过装饰器,那么这里有一个例子。
在单独的文件 my_handler.py 中创建:
在另一个文件中,您已经绑定了您的函数:
顺便说一句,装饰器不是flask的特性,而是python本身的标准工具,除了消息调度之外还有其他用途。
例如,您可以在这里阅读: https ://habr.com/en/post/141411/
或者只是谷歌“python 装饰器”。
我将简化其中一个答案: