无法将slack中的用户名打印为"@“约翰”;以及如何在linux中关闭python文件而不输入cntrl+;c手动

无法将slack中的用户名打印为"@“约翰”;以及如何在linux中关闭python文件而不输入cntrl+;c手动,python,mysql,slack,slack-api,Python,Mysql,Slack,Slack Api,Q1)无法将slack中的用户名打印为“@John”,而将其打印为“WLCLZ2LDP” 所以对于变量“username”,它应该打印slack username(例如:JohnDoe),而不是打印随机字母WLCLZ2LDP 代码 输出 下面的输出,我需要得到松弛的用户名,但我得到随机字母 spu 3646989 mq1 AMEX WLCLZ2LDP "200002086748" 编辑代码 @slack.RTMClient.run_on(event='message') def say_he

Q1)无法将slack中的用户名打印为“@John”,而将其打印为“WLCLZ2LDP”

所以对于变量“username”,它应该打印slack username(例如:JohnDoe),而不是打印随机字母WLCLZ2LDP

代码

输出

下面的输出,我需要得到松弛的用户名,但我得到随机字母

spu
3646989
mq1
AMEX
WLCLZ2LDP
"200002086748"
编辑代码


@slack.RTMClient.run_on(event='message')
def say_hello(**payload):
    try:
        ##0 get clients and payload
        logging.info('msg received')
        data = payload['data']
        web_client = payload['web_client']
        rtm_client = payload['rtm_client']
        ##0 - 1 Check if it is the first msg, not replied msg by me
        # print(data)
        if data.get('text') == None:
            logging.info('This msg is my replied msg.')
            return False
        ##0-2 Get channel info
        channel_id = data['channel']
        thread_ts = data['ts']

        global user
        user = data['user']
        msg = data['text']
        retVal = analysis_msg(msg)

        response = web_client.users_list()
        assert(response['ok'])
        user_map = {x['id']: x['name'] for x in response['members']}
        global user_name
        user_name = user_map[user] if user in user_map else None
        print(user_name)
案例1:已编辑代码的输出-当其他用户尝试从其计算机中获取“无”(不应为空)时

spu
2469048
sftqa3
AMEX
None
BBY01-200002096736
案例2:编辑代码的输出:当我使用我的机器从运行时,我能够看到我的助手,即A6002043(预计)


请允许我澄清两个误解:

  • 这些不是“随机字母”,而是用户ID
  • 事件不包含用户名,只包含用户的ID
要获取用户名,您需要调用API方法来获取用户列表。使用该方法,您可以将ID映射到用户名

以下是如何获取用户ID的用户名的示例代码:

slack_token = os.environ['SLACK_TOKEN']
response = client.users_list()
assert(response['ok'])
user_map = {x['id']: x['name'] for x in response['members']}
user_name = user_map[user_id] if user_id in user_map else None
print(user_name)


这是两个不相关的主题,放在一个问题中。建议将其分为两个问题。我将回答下面关于松弛的问题。嘿,谢谢Erik!是的,我的错,这些不是随机字符串,每当我从用户发送消息时,都会出现相同的id。我将尝试下面的解决方案。我已编辑了我的问题,可以吗e帮助,我可以看到我的机器的帮助,但如果其他人运行,我认为没有价值
spu
2469048
sftqa3
VISA
a6002043
BBY01-200002096040
slack_token = os.environ['SLACK_TOKEN']
response = client.users_list()
assert(response['ok'])
user_map = {x['id']: x['name'] for x in response['members']}
user_name = user_map[user_id] if user_id in user_map else None
print(user_name)