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

如何获取Discord中其他机器人斜杠命令的调用者ID?(Discord.py)

如何用Discord.py获取调用第三方机器人斜杠命令的用户ID

问题原因

你用on_message监听第三方机器人的消息时,只能拿到机器人自身的ID——因为这类消息的author字段就是发送回复的机器人。实际调用命令的用户信息不会直接出现在普通消息的author属性里,而是关联在交互事件数据中。

解决方案

有两种可靠的方式获取调用者ID:

方式1:监听交互事件(推荐)

直接监听Discord的交互事件,能捕获所有用户触发的斜杠命令请求,包括调用第三方机器人的命令:

@client.event
async def on_interaction(interaction):
    # 过滤出斜杠命令类型,且排除自己机器人的命令
    if interaction.type == discord.InteractionType.application_command and interaction.application_id != client.user.id:
        # 检查是否在目标频道
        if interaction.channel.id == 926874863099084830:
            print(f"调用者ID: {interaction.user.id}")

方式2:在消息事件中检查交互关联

部分第三方机器人的回复消息会关联触发它的交互数据,可通过消息对象的interaction属性获取调用者信息:

@client.event
async def on_message(message):
    if message.channel.id == 926874863099084830:
        # 检查消息是否关联了交互事件
        if message.interaction:
            caller_id = message.interaction.user.id
            print(f"调用者ID: {caller_id}")
        # 保留原有的消息打印(可选)
        print(message)

注意事项

  • 确保你的机器人拥有applications.commands权限,否则可能无法捕获交互事件。
  • 部分老旧或自定义机器人的回复可能不会关联交互数据,这种情况下只能通过消息内容中的@提及提取用户ID,但这种方法可靠性较低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:45:42