使用SlackClien查找消息的通道名称

2024-05-15 17:59:43 发布

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

我试图用pythonslackclient打印消息发布到的频道。运行此代码后,我只得到一个ID,而不是频道名称。在

import time
import os
from slackclient import SlackClient

BOT_TOKEN = os.environ.get('SLACK_BOT_TOKEN')

def main():
    # Creates a slackclient instance with bots token
    sc = SlackClient(BOT_TOKEN)

    #Connect to slack
    if sc.rtm_connect():
        print "connected" 
        while True:
            # Read latest messages
            for slack_message in sc.rtm_read():
                message = slack_message.get("text")
                print message
                channel = slack_message.get("channel")
                print channels
            time.sleep(1)


if __name__ == '__main__':
    main()

这是输出:

^{pr2}$

Tags: importtokenmessagegetiftimeosmain
2条回答

这将始终生成频道id而不是频道名称。你必须打电话给频道信息获取频道名称。在

import time
import os
from slackclient import SlackClient

BOT_TOKEN = os.environ.get('SLACK_BOT_TOKEN')

def main():
# Creates a slackclient instance with bots token
sc = SlackClient(BOT_TOKEN)

#Connect to slack
if sc.rtm_connect():
    print "connected" 
    while True:
        # Read latest messages
        for slack_message in sc.rtm_read():
            message = slack_message.get("text")
            print message
            channel = slack_message.get("channel")
            print channel
            channel_info=sc.api_call("channels.info",channel=channel)
            print channel_info["channel"]["name"]
        time.sleep(1)


if __name__ == '__main__':
    main()

这还将打印频道名称。 另一种方法是,您可以预先在字典中存储所有频道的名称以及它们的频道编号。然后获取id为key的频道名。在

我不知道你在输出什么。“频道”不应该是“频道”吗?另外,我认为这个输出是“user”字段。“Channel”字段应该产生一个以C或G(doc)开头的id。在

{
    "type": "message",
    "channel": "C2147483705",
    "user": "U2147483697",
    "text": "Hello world",
    "ts": "1355517523.000005"
}

然后,使用python客户机检索频道名称(如果它存储了它)(我不知道python客户机),或者使用webapi方法channels.info检索频道名称。在

相关问题 更多 >