如何解决Slack API:rtm.start 有效但 rtm.connect 不在 slack_sdk.rtm_v2
TL;DR:尝试使用 slack_sdk.rtm_v2
在 Python 中制作 Slack 机器人。 rtm.start
有效,但 rtm.connect
无效,尽管除了返回的信息量外,它们的表现几乎相同。为什么?
我正在尝试用 Python 制作一个 Slack 机器人,它会在将消息识别为命令时侦听频道并回答不同的事情。我必须说我对他们的在线文档有些困惑。它非常杂乱无章,分散在多个网站(slack.dev、api.slack.com 等)中。提供了使用预制方法的示例,但文档主要讨论这些方法发送和接收的 JSON 字符串,而不是如何使用这些方法本身。 (如果 Slack 的某个人读到了这篇文章,我认为还有改进的余地。)
据我所知,有旧的 slackclient API 和新的 slack_sdk,后者本身包含 rtm 和 rtm_v2 API。 (很烦人,因为你在论坛上寻找的答案有大约 2/3 的机会是你没有使用的 API!)它说在不同的地方用 slack_sdk.rtm_v2 构建机器人是可行的,但仍然需要一个经典的Slack 应用而不是更新的应用。
import os
from slack_sdk.rtm_v2 import RTMClient
rtm = RTMClient(token=os.environ["SLACK_BOT_TOKEN"])
@rtm.on("message")
def handle(client: RTMClient,event: dict):
if 'Hello' in event['text']:
channel_id = event['channel']
thread_ts = event['ts']
user = event['user'] # This is not username but user ID (the format is either U*** or W***)
client.web_client.chat_postMessage(
channel=channel_id,text=f"Hi <@{user}>!",thread_ts=thread_ts
)
rtm.start()
在其他页面(例如 this one、this one 和 this one)上,rtm.start
和 rtm.connect
显示为完成几乎相同的事情,除了 rtm.start
返回更多信息并因此产生更多流量。因此,他们推荐rtm.connect
。
这是我的问题,当我在上面的例子中用 rtm.start
替换 rtm.connect
时,我的脚本在一秒钟后停止,没有任何消息或错误。怎么回事?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。