【发布时间】:2022-02-04 09:24:54
【问题描述】:
我正在尝试创建一个机器人,它会说晚安回到“晚安”作为辅助命令,但我不知道如何执行没有前缀的单个命令。我发现了一篇关于此的帖子,它有一个很好的答案并应用了它,但现在我遇到了不同的问题。
这是我的bot.js 主文件:
const Discord = require('discord.js');
const client = new Discord.Client();
const prefix = 'm!';
const fs = require('fs');
client.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'))
for(const file of commandFiles){
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
client.once('ready', () => {
console.log('Meonkl is Online!');
console.log(`Logged in as ${client.user.tag}!`);
client.user.setPresence({
status: "online", //You can show online, idle....
});
});
client.on('message', message =>{
if(!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
if(command == 'ping'){
client.commands.get('pong').execute(message, args);
}else if(message.content.toLowerCase() == 'goodnight'){
client.commands.get('goodnight').execute(message, args);
}
console.log(message.member, message, args);
});
client.login('');
我怀疑问题出在这一行,if(!message.content.startsWith(prefix) || message.author.bot) return;,但我无法将其取出并破坏我的常规命令。
我不确定该怎么做,或者是否有干净的解决方案。
【问题讨论】:
-
为什么不直接修改ocndition,如果消息不以前缀开头,消息内容只能是“晚安”?
-
@esqew 我该怎么做?
-
if (/* starts with prefix? */) { /* command handling */ } else if (/* says goodnight */) { /* do something */ } -
bot 本来就是监听所有消息的,前缀是其他应用用来区分的,所以不会互相冲突。如果你不想要任何前缀,就不要实现它。
标签: javascript discord.js