简单 Python Slackbot 不收听或响应频道
Simple Python Slackbot does not listen or respond to channel
我刚开始使用 Slack API,所以我只想编写一个机器人来监听频道,每当有人说出关键字时,它就会回复一个答案。在这种情况下,如果有人说 'hello' 它会响应 'world'.
这是我到目前为止所做的。我注册了一个 Slack 帐户。我在 https://slack.com/apps/build 注册了一个新的机器人 >> 进行自定义集成 >> 为我的团队准备的东西,给它起了个名字等等
然后我创建了一个 virtualenv 然后写了这个脚本:
import time
from slackclient import SlackClient
BOT_TOKEN = "I PUT MY TOKEN HERE THAT I GOT FROM REGISTRATION"
CHANNEL_NAME = "general"
def main():
# Create the slackclient instance
sc = SlackClient(BOT_TOKEN)
# Connect to slack
if sc.rtm_connect():
# Send first message
sc.rtm_send_message(CHANNEL_NAME, "I'm the Hello World Bot")
while True:
# Read latest messages
for slack_message in sc.rtm_read():
message = slack_message.get("text")
user = slack_message.get("user")
if not message or not user:
continue
if "hello" in message:
sc.rtm_send_message(CHANNEL_NAME, "world")
else:
print("Couldn't connect to slack")
if __name__ == '__main__':
main()
当我 运行 它时,我的命令提示符只是闪烁,没有任何反应,甚至频道中的介绍消息也没有。所以我有几个问题:
1) 我的脚本有什么问题吗?
2) 在我的 Slack 中,我可以在直接消息列表中看到机器人的名称,但是当我转到#general 频道时,我只有一个用户,我,机器人不在那里。我如何在那里添加它?当我单击邀请时,它要我通过电子邮件添加人员。
3) 如果我想让它收听多个频道,我需要在脚本中更改什么?
正如@smarx 所说,您肯定需要邀请您的机器人加入频道。然后我使用 chat.postMessage
方法进行调用和响应:
if re.search("hello", message):
self.client.api_call("chat.postMessage", as_user="true",
channel=CHANNEL_NAME, text="world")
我的脚本也有停顿,所以请尝试更接近于:
while True:
for slack_message in sc.rtm_read():
message = slack_message.get("text")
user = slack_message.get("user")
room = slack_message.get("channel")
if re.search("hello", message):
self.client.api_call("chat.postMessage", as_user="true",
channel=CHANNEL_NAME, text="world")
time.sleep(0.25)
我刚开始使用 Slack API,所以我只想编写一个机器人来监听频道,每当有人说出关键字时,它就会回复一个答案。在这种情况下,如果有人说 'hello' 它会响应 'world'.
这是我到目前为止所做的。我注册了一个 Slack 帐户。我在 https://slack.com/apps/build 注册了一个新的机器人 >> 进行自定义集成 >> 为我的团队准备的东西,给它起了个名字等等
然后我创建了一个 virtualenv 然后写了这个脚本:
import time
from slackclient import SlackClient
BOT_TOKEN = "I PUT MY TOKEN HERE THAT I GOT FROM REGISTRATION"
CHANNEL_NAME = "general"
def main():
# Create the slackclient instance
sc = SlackClient(BOT_TOKEN)
# Connect to slack
if sc.rtm_connect():
# Send first message
sc.rtm_send_message(CHANNEL_NAME, "I'm the Hello World Bot")
while True:
# Read latest messages
for slack_message in sc.rtm_read():
message = slack_message.get("text")
user = slack_message.get("user")
if not message or not user:
continue
if "hello" in message:
sc.rtm_send_message(CHANNEL_NAME, "world")
else:
print("Couldn't connect to slack")
if __name__ == '__main__':
main()
当我 运行 它时,我的命令提示符只是闪烁,没有任何反应,甚至频道中的介绍消息也没有。所以我有几个问题:
1) 我的脚本有什么问题吗?
2) 在我的 Slack 中,我可以在直接消息列表中看到机器人的名称,但是当我转到#general 频道时,我只有一个用户,我,机器人不在那里。我如何在那里添加它?当我单击邀请时,它要我通过电子邮件添加人员。
3) 如果我想让它收听多个频道,我需要在脚本中更改什么?
正如@smarx 所说,您肯定需要邀请您的机器人加入频道。然后我使用 chat.postMessage
方法进行调用和响应:
if re.search("hello", message):
self.client.api_call("chat.postMessage", as_user="true",
channel=CHANNEL_NAME, text="world")
我的脚本也有停顿,所以请尝试更接近于:
while True:
for slack_message in sc.rtm_read():
message = slack_message.get("text")
user = slack_message.get("user")
room = slack_message.get("channel")
if re.search("hello", message):
self.client.api_call("chat.postMessage", as_user="true",
channel=CHANNEL_NAME, text="world")
time.sleep(0.25)