require('dotenv').config();
const Discord = require('discord.js');
const bot = new Discord.Client();
const TOKEN = process.env.TOKEN;
const prefix = ".";
bot.login(TOKEN);
bot.on('ready', () => {
console.info(`Logged in as ${bot.user.tag}!`);
});
bot.on('message', msg => {
if (msg.content === 'ping') {
msg.channel.send('pong');
} else if (msg.content.startsWith('!kick')) {
if (msg.mentions.users.size) {
const taggedUser = msg.mentions.users.first();
msg.channel.send(`You wanted to kick: ${taggedUser.username}`);
} else {
msg.reply('Please tag a valid user!');
}
}
});
当前这就是即时通讯正在使用即时通讯来尝试制作的内容,因此我必须键入.ping
才能收到消息Pong
,但我不知道如何获取前缀来使用
答案 0 :(得分:1)
您可以检查prefix
和命令名称的串联。
要检查.ping
是prefix
的{{1}}
.
为了使其更加安全,您可以通过检查邮件是否以前缀开头来使其早日返回。
if (msg.content === prefix + 'ping') {
// do something
}
通过这种检查,您可以切掉前缀,然后直接检查命令名称,而不必担心前缀。
if (!msg.content.startWith(prefix)) {
return;
}
总共看起来像:
const commandName = msg.content.slice(prefix.length); // remove prefix character(s)
if (commandName === 'ping') {
// do something
}
答案 1 :(得分:0)
您可以使用以下代码获取命令名称:
bot.on('message', msg => {
const command = msg.content.slice(prefix.length).split(' ')[0]
if (command === 'ping') {
msg.channel.send('pong');
} else if (command === 'kick') {
if (msg.mentions.users.size) {
const taggedUser = msg.mentions.users.first();
msg.channel.send(`You wanted to kick: ${taggedUser.username}`);
} else {
msg.reply('Please tag a valid user!');
}
}
});
请注意,这会将kick命令从!kick
更改为.kick
。
我建议您阅读this section of the Discord.js guide,了解如何设置命令(以及需要时使用用户自变量)。