TL;DR:尝试使用slack_sdk.rtm_v2
在Python中创建一个松弛的botrtm.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应用程序,而不是更新的应用程序
我在this page上尝试了第一个示例,它对我很有用:
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.connect
替换rtm.start
时,我的脚本在一秒钟后停止,没有任何消息或错误。发生什么事了
目前没有回答
相关问题 更多 >
编程相关推荐