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

如何检测Discord消息的发送者是否为机器人?

嘿,这个问题其实挺基础但又实用的,我来给你拆解不同开发场景下的实现方式,都是Discord官方提供的原生方法,靠谱得很~

检测Discord消息发送者是否为机器人的方法

不管你用Python、JavaScript还是直接调用Discord REST API,核心逻辑都是检查消息发送者对象里的bot布尔属性——这是Discord官方为所有用户(包括机器人)预设的字段,直接用就完事儿了,不用自己去瞎猜用户名后缀或者其他不靠谱的特征。

1. 使用Python的discord.py库

在discord.py的消息事件中,你拿到的Message对象里,message.author就是发送者的用户对象,直接访问它的bot属性就能判断:

@client.event
async def on_message(message):
    # 先跳过机器人发送的消息,避免循环触发
    if message.author.bot:
        print("这条消息来自机器人,跳过处理~")
        return
    
    # 这里写你处理人类用户消息的逻辑
    await message.channel.send("哈喽呀,人类朋友!")

message.author可能是User或Member对象,但两者都自带bot属性,放心用就行。

2. 使用JavaScript的discord.js库

和Python的逻辑几乎一样,注意discord.js v13及以后的版本,消息事件名从message改成了messageCreate:

client.on('messageCreate', (message) => {
    // 检测是否为机器人发送的消息
    if (message.author.bot) {
        console.log("发现机器人消息,忽略处理");
        return;
    }

    // 处理人类用户的消息
    message.channel.send("嗨,人类!");
});

同样,message.author.bot直接返回布尔值,true就是机器人,false就是普通用户。

3. 直接调用Discord REST API

如果你不用任何框架,直接通过HTTP请求获取消息数据,返回的JSON里author对象会包含bot字段:

{
  "id": "消息ID",
  "content": "机器人发送的消息内容",
  "author": {
    "id": "机器人用户ID",
    "username": "我的机器人",
    "bot": true,
    // 其他用户信息字段...
  },
  // 其他消息相关字段...
}

只要判断author.bot是否为true就可以了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:53:58