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

如何通过bash及Linux AT命令实现向Discord用户发送私信通知

可行方案及最优实现推荐

方案1(最优选择:复用现有Discord机器人能力)

你已经有运行中的Python Discord机器人,不需要额外在bash中重复实现Discord接口逻辑,该方案稳定性最高、维护成本最低:

  • 你在Python侧存储定时任务时,同时绑定对应任务触发用户的唯一Snowflake ID(注意不要仅存用户名,Discord用户名可重复,唯一标识是用户ID,该ID可在用户创建定时任务时直接从Discord事件对象中获取)
  • 给Python机器人增加简单的本地通知监听逻辑,可选监听本地目录的文件变化、本地日志文件的追加内容、或者本地Redis队列,实现成本都很低
  • bash脚本执行完成后,仅需要加一行命令向监听的位置写入任务ID + 执行状态的记录即可,不需要处理任何Discord相关逻辑
  • Python机器人监听到完成记录后,取对应任务绑定的用户ID,直接调用Discord机器人内置的私信发送接口发通知,发完删除对应完成记录即可

方案2:直接从bash调用Discord接口发私信

如果你的场景必须要求bash独立完成发送动作,可以直接调用Discord官方REST接口实现:

  • 提前准备两个必要参数:你的机器人的鉴权Token(和机器人启动用的Token一致)、接收私信用户的唯一Snowflake ID
  • 首先调用接口创建机器人和用户的私信通道,示例命令:
    # 需提前安装jq用于解析JSON返回结果
    CHANNEL_ID=$(curl -s -H "Authorization: Bot ${BOT_TOKEN}" -H "Content-Type: application/json" -d "{\"recipient_id\": \"${USER_ID}\"}" https://discord.com/api/v10/users/@me/channels | jq -r '.id')
    
  • 再调用接口往私信通道发通知,示例命令:
    curl -s -H "Authorization: Bot ${BOT_TOKEN}" -H "Content-Type: application/json" -d "{\"content\": \"你设置的定时任务已执行完成\"}" https://discord.com/api/v10/channels/${CHANNEL_ID}/messages > /dev/null
    
  • 注意事项:
    • 不要把机器人Token硬编码在bash脚本中,建议存到环境变量或者只读权限的配置文件中避免泄露
    • Discord接口有频率限制,短时间内大量发送会被限流
    • 无法直接用用户名发送私信,必须提前获取并存储对应用户的唯一ID

内容的提问来源于stack exchange,提问作者Leon Boon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:06:07