有没有办法将python中的2个修饰符与or条件组合在一起?
我正在使用RTMclient获取松弛消息数据。这里的消息类型是“message”,它只提供父线程的数据。但是我想要回复的消息数据。 在研究中,我发现它是“message_responsed”类型。我想在decorator中包含消息或您回复的消息 Pfb一个示例代码有没有办法将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[
@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是正确的,只需创建另一个预期的函数,因为名称意味着它们只注册该函数。好发现。