[英]Discord.JS Send message to tagged user
我正在制作一个从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);
}
});
请确保您已定义args
,但这里有一个使用 args 对指定用户进行 DMing 的快速示例:
let dmUser = message.mentions.users.first();
let dmArgs = args.join(" ").slice(8);
dmUser.send(dmArgs);
请随意更改您喜欢的方式。 基本上,它的作用是设置一个新的let
变量,等于从发送消息的服务器获取提到的用户。 dmArgs
变量只是一种更有条理的存储 args 的方式,我使用 .slice 来分割命令和所需参数的前缀。 最后,你发送它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.