如何解决Discord.js-如何实现前缀以避免错误触发命令响应?
我正在使用命令处理程序在不和谐的bot上工作,在该程序中,所有命令都保存在自己的文件中,然后导入到主文件中。我遇到的问题是我正在努力在命令中实现前缀,因此所有命令都只能由文本触发。
命令处理程序的工作方式是在bot.js中包含以下代码:
client.on('message',msg => {
if (msg.content.startsWith(prefix)) return;
//Splitting the message from the user
const args = msg.content.split(/ +/);
const command = args.shift().toLowerCase();
console.log(`Called comand: ${command}`);
//See if the commands folder has that command in it
if (!client.commands.has(command)) return;
//Try to execute the command. If we can't,we throw an error instead.
try {
client.commands.get(command).execute(msg,args);
} catch (error) {
console.error(error);
msg.channel.send("I hit an issue trying to issue that command.");
console.log("A Comnmand was issued,but I hit an issue trying to run it.");
}
在该文件的顶部,我也有
const prefix = '!'
然后在commands文件夹中有一个名为index.js的文件,如下所示:
module.exports = {
about: require('./about'),help: require('./help'),nokill: require('./nokill'),animeme: require('./animeme'),showmeme: require('./showmeme'),roadmap: require('./roadmap'),changelog: require('./changelog'),wuvu: require('./wuvu'),debug: require('./debug'),dailyquote: require('./dailyquotes'),dance: require('./dance'),
对于命令,它们看起来像这样:
const GihpyAPIModule = require('./command_modules/fetchGif.js');
module.exports = {
name: 'dance',decription: 'Sends a dancing GIF',execute(msg,args) {
msg.channel.send("Here's your dance!");
var searchPromise = GihpyAPIModule.getGif("dance");
searchPromise.then((gif) => {
msg.channel.send(gif);
})
}
查看该机器人运行的控制台后,我注意到,如果我首先发送带有前缀的消息,如!dance,它甚至都不会接收它。它只是完全忽略了它。
这是我到目前为止尝试过的:
-
在每个命令文件中添加前缀
-
在bot.js中使用了此
:const args = msg.content.slice(prefix.length).split(/ + /);
由于漫游器只是忽略带有的消息!在一开始,该机器人只是将消息缩减,因此帮助会变成elp。
任何建议都将不胜感激!
解决方法
您需要替换名为:
的方法if (msg.content.startsWith(prefix)) return;
与此:
if (!msg.content.startsWith(prefix)) return;
我认为应该行得通。
,如果命令以前缀开头,则表示正在退出。回报;函数将终止函数并使其返回某个值,或者将其停止并“返回”主代码。您正在做的是使机器人返回侦听命令的状态,而不是实际执行该命令。
一个简单的解决方法是
if(!msg.content.startsWith(prefix)) return;
!在开始时标记非常重要。这意味着如果不是 情况,则返回侦听新消息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。