我正在尝试创建一个discord.js公告bot ex。当我写?Ann Hello Guys时,机器人会删除我的消息并发送Hello Guys,但现在如果我写?Ann Hello Guys机器人会删除我的消息并发送?Ann Hello Guys ,代码就是这个
const client = new Discord.Client();
client.login('--------------');
const PREFIX = '?';
client.once('ready', () => {
console.log('Questo bot e online!');
});
client.on('message', message=>{
let args = message.content.slice(PREFIX.length).split(' ');
switch(args[0]){
case 'ann':
const embed = new Discord.MessageEmbed()
.addField('test', message.content );
message.channel.send(embed);
break;
}
})
答案 0 :(得分:1)
为此制造了一支笔: https://codepen.io/herbievine/pen/YzwNewQ
client.on('message', message=>{
let args
if (message.startsWith('?'))
args = message.content.replace('?', '').split(' ')
if (args[0].toLowerCase() === 'ann') {
const embed = new Discord.MessageEmbed()
.addField('test', message.contentreplace('?ann', ''));
message.channel.send(embed);
}
}
})
希望有帮助
答案 1 :(得分:0)
message.content
代表您要发送的整个邮件,因此在这种情况下为?Ann Hello Guys
。
DiscordJS不了解命令是什么,也不会为您拆分这些内容。
由于您的邮件格式为?Mention <Command arguments here>
,因此您可以通过字符串中的空格进行拆分。
let messageContent = message.content.split(" ")
这将获取您的"?Ann Hello Guys"
字符串,并将其变成"?Ann", "Hello", "Guys"
.split(" ")
通过空格分隔您的字符串,并返回一个数组。
然后您可以执行messageContent.pop()
删除数组中的第一个元素"?Ann"
。
然后您可以.join(" ")
一起返回,形成字符串"Hello Guys"
并将其发送。完整的代码:
let splitMessage = message.content.split(" ")
splitMessage.pop();
const transformedMessage = splitMessage.join(" ")