如何在Python中处理slack app for中的多个用户?如何使用多个令牌?

2024-10-02 22:37:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个懒散的机器人。我一直在使用pythonslackclient库来开发bot。和一个团队一起工作很好。我正在使用Flask Webframework。在

当很多人通过“添加到slack”按钮将应用添加到slack中时,我得到了他们的bot_access_令牌。在

现在 我应该如何运行带有这么多Slack标记的代码。我应该把它们存储在一个列表中,然后使用for循环遍历所有令牌吗!但这并不好,因为我可能无法处理同时收到的消息或事件,或者“这是一个好方法”。 如果不是的话还有别的办法吗?在


Tags: 代码标记消息flask列表foraccessbot
2条回答

如果您使用的是实时API,则需要每个团队打开一个WebSocket。是的,您通常会使用一个循环来建立这些连接。根据slackclient的工作方式,您可能需要在单独的线程或进程中启动每个线程。在

编辑:如下面的注释所述,线程化比多进程更为可取。更好的方法是使用比线程更轻的东西,但在您学习的这一点上,我不会在这里费心优化。在

第二次编辑:看起来python-slackclient具有非阻塞读取,因此您甚至不需要使用线程。E、 g.以下不会阻塞:

for team in teams:
    for event in team.client.rtm_read():
        # process the event for that team

(这假设某种“team”对象包含SlackClient的实例。)

你确实需要

  1. 存储每个团队令牌。请记住加密
  2. 当团队安装你的应用时,创建一个新的RTM连接。当你的应用程序/服务器重新启动时,在你的所有团队中循环,为每个团队打开一个RTM连接
  3. 每个连接将接收来自该团队的事件,并且仅接收该团队的事件。您不会在同一连接上收到所有通知

(也许你来自Facebook Messenger机器人程序的后台,所有的通知都会到达同一个webhook?Slack可不是这样)

相关问题 更多 >