【发布时间】:2017-12-28 06:59:24
【问题描述】:
我正在尝试在 slack 频道中制作一个机器人,以便了解整个过程是如何工作的。我有 2 个问题。 [第一个问题已解决]首先,我知道如何发送消息 if 有人说 anything 但我不知道如何检查具体说了什么。这是我的代码:
import os
import time
from slackclient import SlackClient
BOT_TOKEN = os.getenv('SLACK_BOT_USER_TOKEN')
print(BOT_TOKEN)
CH_NM = "bot_testing"
def main():
sc = SlackClient(BOT_TOKEN)
SM = sc.rtm_send_message
if sc.rtm_connect():
print("Bot running")
SM(CH_NM, "Started")
while True:
for slack_message in sc.rtm_read():
message = slack_message.get("text")
user = slack_message.get("user")
if 'hello' in message:
SM(CH_NM, "Hey, <@{}>!".format(user))
if not message or not user:
continue
SM(CH_NM, """<@{}> wrote something...""".format(user))
time.sleep(.5)
if __name__ == '__main__':
main()
我遇到的主要问题是
if 'hello' in message:
SM(CH_NM, "Hey, <@{}>!".format(user))
因为我无法遍历“消息”,因为它是“NoneType”。那么我将如何检查它是否包含特定的字符串?
第二个问题,我看到有各种各样的事件类型,但我的似乎只适用于“消息”类型的事件。如果我想在每次特定用户开始输入时返回一些东西,例如,我会添加什么来使它工作?我已经尝试添加 typing = slack_message.get("user_typing") 但可以理解的是它不起作用,因为 'user_typing' 是一种事件类型,而不是我要从中提取 'text' 和 'user' 的消息事件类型的一部分.
所以你知道,我使用的是 python 3.6、Windows 10、powershell。
【问题讨论】:
-
请不要将
[SOLVED]之类的标签放在您的问题主题中。如果答案解决了您的问题:考虑accepting it。另外,请不要一次问多个问题。如果您有多个问题:将它们作为单独的问题发布。 -
我肯定会这样做,但是如果我终于能够偶然发现自己问题的答案,并且两天不能接受该答案,您是否建议将其保留那2天?我没关系,我只是想澄清一下。
-
这取决于。如果某个问题(以及您的答案)可能使其他用户受益(即,如果其他用户有可能遇到同样的问题):请保留您的问题并在 2 天后接受您自己的答案。如果您的问题非常特殊,以至于其他人不太可能遇到同样的问题,或者您甚至无法再重现您的问题,那么最好删除该问题。
标签: python-3.x powershell web-applications slack-api