Python脚本捕获UserID发送至Slack频道语法错误求助
解决Python脚本捕获用户ID并发送到Slack的语法错误问题
你的语法错误出在data = {'User': <@User>, 'Message': 'used the app!'}这一行——<@User>不是合法的Python语法,这是Slack的用户提及格式,但直接写在Python代码里会被当成无效符号。
要解决这个问题,分两步:
- 先获取实际的用户ID(根据你的运行场景选择方式)
- 用合法的Python字符串格式生成Slack提及内容
场景1:脚本在本地运行,获取当前系统登录用户
如果是用户在本地执行脚本,用getpass模块获取当前系统用户,再格式化为Slack提及格式:
import json import requests import getpass # 获取当前系统登录用户ID current_user = getpass.getuser() # 格式化为Slack可识别的提及格式 slack_user_mention = f"<@{current_user}>" url = "https://hooks.slack.com/workflows/XXXXXX/XXXXXX/XXXXXX/XXXXX" data = {'User': slack_user_mention, 'Message': 'used the app!'} headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} r = requests.post(url, data=json.dumps(data), headers=headers)
场景2:脚本在Slack工作流/应用环境中运行
如果你的脚本是Slack工作流的一部分,用户ID应该从工作流的上下文变量中获取(比如环境变量、传入的参数)。假设用户ID通过环境变量SLACK_USER_ID传递:
import json import requests import os # 从环境变量获取Slack用户ID slack_user_id = os.getenv('SLACK_USER_ID') slack_user_mention = f"<@{slack_user_id}>" url = "https://hooks.slack.com/workflows/XXXXXX/XXXXXX/XXXXXX/XXXXX" data = {'User': slack_user_mention, 'Message': 'used the app!'} headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} r = requests.post(url, data=json.dumps(data), headers=headers)
关键修改点
- 把无效的
<@User>替换为合法的Python字符串,用f-string(f"<@{user_id}>")拼接用户ID和Slack提及格式 - 确保获取到的用户ID是Slack系统中对应的ID(如果是本地用户,需要和Slack账号匹配;如果是Slack环境,直接用上下文提供的ID)
内容的提问来源于stack exchange,提问作者JoeCastro
相关产品推荐
相关产品推荐

