Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法将python中的2个修饰符与or条件组合在一起?_Python_Slack Api_Python Decorators - Fatal编程技术网

有没有办法将python中的2个修饰符与or条件组合在一起?

有没有办法将python中的2个修饰符与or条件组合在一起?,python,slack-api,python-decorators,Python,Slack Api,Python Decorators,我正在使用RTMclient获取松弛消息数据。这里的消息类型是“message”,它只提供父线程的数据。但是我想要回复的消息数据。 在研究中,我发现它是“message_responsed”类型。我想在decorator中包含消息或您回复的消息 Pfb一个示例代码 @slack.RTMClient.run_on(event='message') def respond(**payload): data = payload['data'] web_client = payload[

我正在使用RTMclient获取松弛消息数据。这里的消息类型是“message”,它只提供父线程的数据。但是我想要回复的消息数据。 在研究中,我发现它是“message_responsed”类型。我想在decorator中包含消息或您回复的消息

Pfb一个示例代码

@slack.RTMClient.run_on(event='message')
def respond(**payload):
    data = payload['data']
    web_client = payload['web_client']
    rtm_client = payload['rtm_client']
    user_id = data.get("user")

text = data.get("text")

在这里,我还想使用
@slack.RTMClient.run_on(event='message'u responsed')
,但使用'or'条件查看
slack.RTMClient.run_on()
的源代码,您应该能够像这样“堆叠”装饰程序:

@slack.RTMClient.run_on(event='message')
@slack.RTMClient.run_on(event='message_replied')
def respond(**payload):
    data = payload['data']
    web_client = payload['web_client']
    rtm_client = payload['rtm_client']
    user_id = data.get("user")

您尝试过这个吗?

您可以创建两个具有不同decorator的函数,并且在每个函数中运行相同的另一个函数以获得有效负载。这与decorator功能本身无关,但更多关于此特定decorator的内部实现。装饰器始终应用于函数。这只是此
运行时的内部逻辑,装饰程序检查了
事件。如果decorator本身不支持这一点,最简单的解决方法是定义2个函数,每个函数都用您需要的事件进行修饰,并将调用委托给您的
respond
furras anwer是正确的,只需创建另一个预期的函数,因为名称意味着它们只注册该函数。好发现。