除了[消息]之外,如何调用Slack API中的任何其他事件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了除了[消息]之外,如何调用Slack API中的任何其他事件?相关的知识,希望对你有一定的参考价值。

我正在尝试在松弛的通道中制作一个机器人,这样我就能理解整个过程是如何工作的。我有两个问题。 [第一个问题解决]首先,我知道如果有人说了什么,如何发送消息,但我无法弄清楚如何检查具体说法。这是我的代码:

import os
import time
from slackclient import SlackClient

BOT_TOKEN = os.getenv('SLACK_BOT_USER_TOKEN')
print(BOT_TOKEN)
CH_NM = "bot_testing"


def main():
    sc = SlackClient(BOT_TOKEN)
    SM = sc.rtm_send_message

    if sc.rtm_connect():
        print("Bot running")
        SM(CH_NM, "Started")

        while True:
            for slack_message in sc.rtm_read():
                message = slack_message.get("text")
                user = slack_message.get("user")
                if 'hello' in message:
                    SM(CH_NM, "Hey, <@{}>!".format(user))
                if not message or not user:
                    continue
                SM(CH_NM, """<@{}> wrote something...""".format(user))
            time.sleep(.5)


if __name__ == '__main__':
    main()

我遇到麻烦的主线是

if 'hello' in message:
    SM(CH_NM, "Hey, <@{}>!".format(user))

因为我不能遍历'message',因为它是'NoneType'。那我怎么去检查它是否包含一个特定的字符串?

第二个问题,我看到有各种各样的事件类型,但我的似乎只适用于“消息”类型的事件。如果我想在每次特定用户开始输入时返回一些内容,例如我将添加什么来使其工作?我已经尝试添加typing = slack_message.get(“user_typing”),但可以理解的是它不起作用,因为'user_typing'是一个事件类型,而不是消息事件类型的一部分我正在拉'text'和'user' 。

所以你知道,我正在使用python 3.6,Windows 10,PowerShell。

答案

问题是我在if not message or not user: continue线下面有我的if 'hello' in message:线,所以它会因为任何其他正在发生的不是消息的事件而错误。第一期问题解决了

以上是关于除了[消息]之外,如何调用Slack API中的任何其他事件?的主要内容,如果未能解决你的问题,请参考以下文章

Slack API - 将我的最新消息发送给用户

slack events api通过一条消息多次触发

Azure 服务总线队列消息处理

Slack API - 向个人空间(您)发送直接消息

如何使用 BotKit 从 Slack API 获取用户列表?

通过Slack API发送命令