如何检测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
相关产品推荐
相关产品推荐

