You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:01:21