如何通过Discord.js V14开发的Discord机器人获取用户用户名
使用Discord.js V14获取用户Discord用户名的正确实现
你的代码存在几处和Discord.js V14不兼容的问题,下面是修正后的完整代码:
const { Client, IntentsBitField } = require('discord.js'); const client = new Client({ intents: [ IntentsBitField.Flags.Guilds, IntentsBitField.Flags.GuildMessages, IntentsBitField.Flags.MessageContent // 必须添加这个意图才能读取消息内容 ] }); client.once('ready', () => { console.log('Bot is ready'); }); client.on('messageCreate', message => { // 用严格相等判断指令,避免赋值错误 if (message.content === '!username') { const username = message.author.username; message.channel.send(`你的用户名是:${username}`); } }); client.login('your-bot-token');
关键修正点说明:
- 事件更新:Discord.js V14已将原
message事件替换为messageCreate,必须使用新事件才能监听消息 - 意图调整:
- 引入
IntentsBitField替代旧的Intents.FLAGS写法 - 必须添加
MessageContent意图,否则机器人无法读取消息内容(需要在Discord开发者后台的机器人页面开启"Message Content Intent"权限)
- 引入
- 判断逻辑修正:将
if (message.content = '!username')改为if (message.content === '!username'),避免把字符串赋值给message.content导致的逻辑错误 - 用户名获取:
message.author.username可以正确获取用户的Discord用户名,若需要带标签的完整用户名(如Username#1234),可以使用message.author.tag
内容的提问来源于stack exchange,提问作者Perseus
相关产品推荐
相关产品推荐

