如何让bot给用户写私信,并通过指定的USER ID,并提及
示例:
!private 660033203473743873 Hello
!private @User Hello
我的代码
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).trim().split(' ');
const command = args.shift().toLowerCase();
const member = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
if (command === 'private') {
member.send({
content: `${args[1]}`,
});
}
});
答案 0 :(得分:0)
您似乎错误地使用了 args
。
args
是整个消息的数组,因此在您的情况下 args[0]
将返回 !private
。
工作示例:
client.on('message', async message => {
if (!message.content.startsWith(prefix) || message.author.bot) return; //If message is sent by a bot or does not start with the prefix
const args = message.content.slice(prefix.length).trim().split(/ +/g); //Getting the message arguments
const command = args.shift().toLowerCase(); //Receiving the command
if (!args[1]) return message.channel.send("Please provide a user to message."); //If user was not provided
const member = message.mentions.members.first() || message.guild.members.cache.get(args[1]); //Get the member
if (!member) return message.channel.send("I could not find the user you provided"); //If the member was not found
if (!member.id || !member.tag) member = member.user; //Making sure the user is correct
try {
member = await message.guild.members.fetch(user); //Getting the guild member
} catch() {
member = null;
}
if (!member) return message.channel.send("The user you mentioned is not in this server."); //Double checking the user is in the server
if (command.toLowerCase() == "private") { //Command is equal to private
member.send(args.slice(1).join(" ")); //Send the member a message
}
});