javascript - Discord.JS 向标记的用户发送消息
问题描述
我正在制作一个命令,该命令从中读取一个元素args
,然后将其发送给标记的用户,但出现错误。
我的代码:
if (cmd === '!message'){
if (!message.mentions.users.size) {
message.channel.send("```Send Message to: ?```")
} else {
const username = args[1];
const fetchuser = guild.members.fetch(username.id)
var message = args[2];
fetchuser.message.send(`${message.author} send you a message: ${message}`)
}
}
错误:
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'username' of undefined
at Client.<anonymous> (/home/container/index.js:373:29)
at Client.emit (events.js:314:20)
at MessageCreateAction.handle (/home/container/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (/home/container/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
解决方案
您可以使用message.mentions.members.first()
来获取标记的成员。mentions.members
如果您使用而不是,则不需要获取公会成员mentions.users
:
client.on('message', (message) => {
if (message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
if (command === 'message') {
const mentionedMember = message.mentions.members.first();
if (!mentionedMember) {
return message.reply('You need to mention someone!');
}
const text = args.slice(1).join(' ');
mentionedMember.send(text);
}
});
推荐阅读
- sql - 无法在 phpMyAdmin 上添加帐户/没有管理用户的权限
- html - 带有 {bslib} 包的 R Shiny 1.6:移动设备上的导航栏样式 - Bootstrap 4 与 Bootstrap 3
- javascript - 如何在 Angular 应用程序的 html 块中查看脚本函数值?
- api - 在颤振中用双引号传递参数值 -
- spring-boot - Jackson - 从嵌套元素开始
- angular - p-columnFilter 不是已知元素
- android - 在 Android 中创建注释常量以用作函数返回类型,类似于 Google Play Billing
- r - 在 R 中,如何根据分类变量的数量删除行?
- python - 这种排序方法的名称是什么?
- javascript - 本地存储 - 来源相同但内容不同