【发布时间】:2020-04-15 19:54:52
【问题描述】:
所以我正在创建一个不和谐的机器人,它似乎可以完美地工作,除了一件事:有时,命令别名不起作用。他们只是没有得到回应。
我怀疑这可能与撇号/特殊字符有关,但经过一些测试后,我得出结论认为这两者都不会导致错误。然后,我认为这可能是别名长度的问题,但我用一个随机的长词作为别名对其进行了测试,并且效果很好。我四处搜索,并没有发现关于别名的限制或为什么会发生这种情况,所以我完全不知所措。
这是我的一个错误命令的代码:
const Discord = require("discord.js");
const colors = require("../../colors.json");
module.exports.run = async (bot, message, args) => {
let embed = new Discord.RichEmbed()
.setColor(colors.purple)
.setAuthor('FIREFLY CURSE', 'placeholder.image.link', 'placeholder.link')
.setDescription("placeholder description")
.setThumbnail('placeholder.image.link')
.addField('Test', 'X', false)
.addField('Test', "Y", false);
message.channel.send({embed:embed});
}
module.exports.config = {
name: "firefly curse",
aliases: ["fireflycurse", "fireflyc", "fc", "firefly curse", "supercalifragilisticexpialidocious", "test'test", "test test", "numbertest",]
}
上面列出了我尝试过的别名。除了“萤火虫诅咒”和“测试测试”之外的所有工作。这让我觉得空间是问题,但是在 不同的 命令中,带有空格的别名 does 工作。除了嵌入文本中的文本不同之外,代码之间绝对没有区别,这不应该影响代码本身的执行。
命令处理程序代码:
const fs = require("fs");
bot.commands = new Discord.Collection();
bot.aliases = new Discord.Collection();
async function load(dir){
fs.readdir(`./commands/${dir}/`, (err, files) => {
if(err) console.log(err)
let jsfile = files.filter(f => f.split(".").pop);
if(jsfile.length <= 0) {
return console.log("commands missing!");
}
jsfile.forEach((f, i) => {
let pull = require(`./commands/${dir}/${f}`)
bot.commands.set(pull.config.name, pull);
pull.config.aliases.forEach(alias => {
bot.aliases.set(alias, pull.config.name)
})
})
});
}
Bot.on 代码块:
bot.on("message", async message => {
if(message.author.bot || message.channel.type === "dm") return;
let prefix = botconfig.prefix;
let messageArray = message.content.split(" ")
let cmd = messageArray[0];
let args = messageArray.slice(1);
if(!message.content.startsWith(prefix)) return;
let commandfile = bot.commands.get(cmd.slice(prefix.length)) || bot.commands.get(bot.aliases.get(cmd.slice(prefix.length)))
if(commandfile) commandfile.run(bot,message,args)
})
【问题讨论】:
-
请显示命令处理程序代码(它如何检测消息是否为命令以及它如何存储命令)。
-
添加到主帖(我想?我可能错过了一些,因为我不确定你指的是什么)
标签: javascript bots discord discord.js