如何在discord.js中获取被提及用户的用户名?
在discord.js中获取提及用户的用户名
嘿,没问题!你已经找对了方向——用message.mentions.users.first()确实能拿到第一个被提及的用户对象,从这个对象里直接获取用户名非常简单,因为Discord的用户对象自带几个现成的属性可以直接用:
username:返回用户的纯用户名(不带后面的#四位数字标签)tag:返回用户的完整标签格式(比如JohnDoe#1234)
基础示例代码
这里给你一个完整的使用例子,还包含了没有提及用户时的错误处理,避免程序报错:
// 假设你在消息事件回调里 client.on('messageCreate', (message) => { // 获取第一个被提及的用户对象 const mentionedUser = message.mentions.users.first(); if (mentionedUser) { // 提取纯用户名 const plainUsername = mentionedUser.username; // 提取带标签的完整用户名 const fullUserTag = mentionedUser.tag; message.reply(`你提及的用户名为:${plainUsername},完整标签是:${fullUserTag}`); } else { message.reply("我没找到你提及的用户哦,请确认是否正确@了用户~"); } });
额外小技巧:获取所有提及的用户
如果你需要处理多个被提及的用户,可以遍历message.mentions.users集合:
client.on('messageCreate', (message) => { const mentionedUsers = message.mentions.users; if (!mentionedUsers.size) { return message.reply("没有用户被提及!"); } let replyContent = "你提及的用户有:\n"; mentionedUsers.forEach(user => { replyContent += `- ${user.username} (${user.tag})\n`; }); message.reply(replyContent); });
小提醒一下:你之前写的messages.mentions.first()其实有点小问题,正确的应该是message.mentions.users.first()——因为mentions对象下包含了users、roles等不同类型的提及集合,必须指定users才能拿到用户对象哦。
内容的提问来源于stack exchange,提问作者Sourav Gaming
相关产品推荐
相关产品推荐

