Python Slack Bot不会直接发布消息

2024-10-16 20:39:55 发布

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

我用Python编写了一个Slack Bot,当我在聊天频道中使用斜杠命令时,它的工作原理与设计的一样,但是当我试图与另一个用户以直接消息的形式与Bot交互时,响应永远不会显示。但是,当我查看应用程序日志时,我仍然收到Slack的帖子,因此我的应用程序正在接收响应并发送响应。在

我已启用以下权限:

  • 以[MyBotName]的身份发送邮件
  • 以用户身份发送消息
  • 发布到松弛的特定频道
  • 添加用户名为@mybotname的bot用户
  • 添加斜杠命令并向邮件添加操作(并查看相关内容)
  • 查看邮件中的一些URL
  • 向邮件添加链接预览

在我的代码中,我执行以下api_调用:

slack_client.api_call(
        "chat.postMessage",
        channel=[channelId],
        attachments=[],
        unfurl_links=True,
        unfurl_media=True,
        as_user=True
    )

日志显示我确实收到了正确的ChannelId,不管它是一个频道还是直接消息。在

我的命令不见了_client.api_调用?在


Tags: 用户命令clientapitrue应用程序消息bot
1条回答
网友
1楼 · 发布于 2024-10-16 20:39:55

你的方法不适用于直接渠道,坦率地说,也不适用于某些私人渠道。在

原因是Slack的一个基本安全特性:你的bot用户或你的应用令牌的所有者(例如app installer)需要是一个直接或私有通道的成员,以便你的应用程序/机器人能够访问该通道,例如能够向它发送消息。任何权限设置或范围都不能改变这一点。在

不过,对于您的特定情况有一个简单的修复方法:不要通过API发送消息,而是直接回复Slack发出的斜杠命令请求。这将适用于任何渠道,包括直接和私人渠道。在

回复的工作方式类似于通过API发布消息,您可以使用纯文本或JSON。语法请参见官方文档中的Respond to Commands。在

这里有一个带有附件的完整邮件的示例。请注意,您需要将content header设置为JSON:

{
    "text": "It's 80 degrees right now.",
    "attachments": [
        {
            "text":"Partly cloudy today and tomorrow"
        }
    ]
}

相关问题 更多 >