【问题标题】:Why do I get the error "429_client_error" with my Slack bot?为什么我的 Slack 机器人会收到错误“429_client_error”?
【发布时间】:2020-04-21 16:42:02
【问题描述】:

我正在做一个记笔记的 Slack 机器人,我不断收到429_client_error。首先,它是否与 Slack API 文档 here 中描述的 429 too many requests error 相同的错误?如果不是,那是什么?

如果确实是由于 Slack 速率限制,我不明白。我打印了所有机器人答案的日志,它们至少相隔一秒钟发送。即使我“非常慢”地使用记笔记机器人并在请求之间等待时,我也会遇到错误。

这是一个交互的例子。

用户:我想添加一个注释。

Slack-Bot:当然。你的笔记内容是什么?

用户:我昨天见到了我的阿比盖尔。我需要发给他 我星期六拍的照片。

Slack-Bot:继续。

用户:我已经完成了。

Slack-Bot:太好了。您可以将以下参与者之一添加到 你的笔记。

  1. 阿比盖尔·艾伦
  2. 布赖恩·伯纳德
  3. 卡尔·卡尔森
  4. 完成

在最后一部分,我使用带有按钮的交互式消息来提议参与者。在幕后,我实际上加载了 3 个以上的人,因此,例如,当用户选择添加 Brian 时,我的机器人将整个消息替换为用户可以选择的新参与者列表。然后,当用户完成后,他必须选择最后一个按钮“完成”。

换句话说,我有一个按钮列表,每次用户选择列表中的一项时,我都会不断更新,直到用户满意为止。

这似乎是问题的一部分,因为我似乎只在对话的这个阶段收到了429_client_error。我使用延迟来确保 Slack 机器人不会对用户响应太快。我不明白这是什么问题。

【问题讨论】:

  • 谁能帮我解决这个问题?
  • 当超过 100 个频道向 WebClient 请求文件时,我遇到了一些问题。列表数据给出速率限制错误,然后停止获取文件数据
  • 你找到解决这个问题的方法了吗@EmiliePicard-Cantin?

标签: node.js slack-api


【解决方案1】:

我在一个用于 slack 的 python 应用程序上遇到了同样的问题,并在 slacker github repo 中找到了关于它的讨论。

根据 slacker 主要开发者os 的说法,解决方案是信息的本地缓存。他们甚至提供了一个示例代码here

from slacker import Users

class CachedUsers(Users):
    def __init__(self, *args, **kwargs):
        super(Users, self).__init__(*args, **kwargs)
        self.user_ids = {}

    def get_user_id(self, user_name):
        user_id = self.user_ids.get(user_name)

        if not user_id:
            user_id = super().get_user_id(user_name)
            self.user_ids[user_name] = user_id

        return user_id

如果您正在研究以前无法在本地缓存的内容,请查看rate limits,您可以在 Slack API 中的每个方法上找到层。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 2021-07-18
    • 1970-01-01
    • 2019-06-01
    • 2020-11-05
    • 2018-06-22
    • 2020-01-12
    相关资源
    最近更新 更多