Discord bot:命令名称的命令处理程序别名

     2023-03-07     233

关键词:

【中文标题】Discord bot:命令名称的命令处理程序别名【英文标题】:Discord bot: Command Handler alias for command name 【发布时间】:2020-11-18 05:26:39 【问题描述】:

我正在开发一个 Discord 机器人,并试图改进我已经运行的命令处理程序。 我有一个文件夹,每个文件都是一个额外的命令。我想扩展系统,所以我有相同命令的别名,例如我希望我的 clearchat 命令与 /clearchat 或 /cc 一起运行,但我不想只创建另一个文件并复制代码。这就是我所拥有的:

// I left out the other imports etc.
client.commands = new Discord.Collection();

// Reading commands-folder
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.on("message", msg => 

    if (msg.content.startsWith(config.prefix) && !msg.author.bot && msg.guild) 
        const args = msg.content.slice(config.prefix.length).split(" ");
        const command = args.shift().toLowerCase();
        
        if (client.commands.find(f => f.name === command)) 
            client.commands.get(command).execute(client, msg, args);    
        
    
);

然后是命令文件夹中的命令文件:

module.exports = 
    name: "clearchat",
    execute(client, msg, args) 
        if (msg.member.hasPermission("ADMINISTRATOR")) 
              msg.channel.messages.fetch(limit: 99).then(messages => 
                  msg.channel.bulkDelete(messages);
              );
        
    

(我知道它最多只能删除 100 条消息,我很好)

我在我的 client.on("message) 函数中更改了几行,并且只需要在 clearchat.js 文件中写入像 name: ["clearchat", "cc", ...] 这样的行,我可以在其中编写尽可能多的别名.

提前致谢!

【问题讨论】:

我认为我们必须假设,每个别名/名称只使用一次 【参考方案1】:

首先,您必须在命令中使用别名创建一个数组。

module.exports = 
    name: "clearchat",
    aliases: ["cc"],
    execute(client, msg, args) 
        
    

然后,与您对命令所做的一样,为别名创建一个集合。

client.aliases = new Discord.Collection()

最后,将别名绑定到命令:

if (command.aliases) 
    command.aliases.forEach(alias => 
        client.aliases.set(alias, command)
    )


现在,当你想执行一个命令时,你必须检查它是否有别名。

const commandName = "testcommand" // This should be the user's input.
const command = client.commands.get(commandName) || client.aliases.get(commandName); // This will return the command and you can proceed by running the execute method.

fs.readdir(`./commands/`, (error, files) => 
    if (error) return console.log("Error while trying to get the commmands.");;
    files.forEach(file => 
        const command = require(`./commands/$file`);
        const commandName = file.split(".")[0];

        client.commands.set(commandName, command);

        if (command.aliases) 
            command.aliases.forEach(alias => 
                client.aliases.set(alias, command);
            );
        ;
    );
);

【讨论】:

你应该把它粘贴到你初始化命令的地方,但在最后。所以是的,在你的 for 循环中。我已经用一个例子更新了我的答案。

Discord Bot 无法识别命令名称

】DiscordBot无法识别命令名称【英文标题】:DiscordBotnotrecognizingcommandnames【发布时间】:2021-11-1015:01:05【问题描述】:这是我为了启动我的不和谐机器人而写的,但是每当我尝试使用命令?hi时,我都会收到错误消息忽略命令None中... 查看详情

如何在 discord.py 中使用多词别名

】如何在discord.py中使用多词别名【英文标题】:Howtousemulti-wordaliasesindiscord.py【发布时间】:2021-10-2115:07:00【问题描述】:我有一个要使用别名的命令,但别名包含2个单词。当我尝试使用别名时,不会触发该命令。有没有办法让... 查看详情

尝试编写 discord bot 以要求特定命令的特定角色

】尝试编写discordbot以要求特定命令的特定角色【英文标题】:Tryingtocodediscordbottorequirecertainroleforspecificcommands【发布时间】:2020-10-0613:21:00【问题描述】:我是一个很弱的程序员,所以请多多包涵。代码来自varDiscord=require(\'discord... 查看详情

Discord Bot 关于命令

】DiscordBot关于命令【英文标题】:DiscordBotAboutCommand【发布时间】:2020-10-2500:24:35【问题描述】:我目前正在编写一个不和谐的机器人,我想要一个关于机器人的命令。这是我编码的,但它不起作用。我当前的所有命令都位于命... 查看详情

discord.py bot 不会响应命令

】discord.pybot不会响应命令【英文标题】:discord.pybotwon\'trespondtocommands【发布时间】:2020-09-1213:52:44【问题描述】:我遇到了我的机器人无法响应命令的问题。这是我的代码:importosimportdiscordfromdiscord.extimportcommandsfromdiscord.ext.comma... 查看详情

Python Discord Bot 取消命令

】PythonDiscordBot取消命令【英文标题】:PythonDiscordBotcancelcommand【发布时间】:2021-04-1107:13:12【问题描述】:您好,我想用Python制作一个有趣的Discord机器人,我写了一个垃圾邮件命令。现在我想做一个新的命令来阻止它。命令如... 查看详情

需要帮助使用 discord bot 命令分配变量

】需要帮助使用discordbot命令分配变量【英文标题】:Needhelpforassigningavariablewithdiscordbotcommand【发布时间】:2020-12-1315:01:23【问题描述】:所以我正在尝试使用discord.js构建我自己的discord机器人。我想要实现一件非常重要的事情。... 查看详情

Discord bot 更改前缀命令出错 (discord.js)

】Discordbot更改前缀命令出错(discord.js)【英文标题】:ErrorwithDiscordbotchangeprefixcommand(discord.js)【发布时间】:2018-01-0300:58:15【问题描述】:我有一个问题,我真的不知道如何解决。当我尝试在我的代码中实现更改前缀命令时,我想... 查看详情

Discord Bot 命令未显示

】DiscordBot命令未显示【英文标题】:DiscordBotCommandisnotShowing【发布时间】:2021-01-2115:45:46【问题描述】:所以我正在制作一个基本的机器人命令,以响应玩家所说的内容,例如执行!testcode将使机器人以“代码”响应。出于某种原... 查看详情

尝试为 Discord bot 提供多个命令文件

】尝试为Discordbot提供多个命令文件【英文标题】:TryingtohavemultiplecommandfilesforDiscordbot【发布时间】:2018-11-2100:37:16【问题描述】:问题:有没有办法让一个不和谐机器人拥有多个命令文件?我所说的“命令文件”是指包含if/else... 查看详情

Discord Bot(使用 C#)不执行命令

】DiscordBot(使用C#)不执行命令【英文标题】:DiscordBot(usingC#)doesnotexecutethecommand【发布时间】:2017-06-0411:54:20【问题描述】:我写了一个DiscordBot。它是用C#开发的。我的命令列表被填满了,命令值接收到这个列表。但是该命令... 查看详情

Discord bot 运行命令两次 discord.py

】Discordbot运行命令两次discord.py【英文标题】:Discordbotrunningcommandstwicediscord.py【发布时间】:2021-04-1618:46:49【问题描述】:这是主机器人和一个cog,所有cog中的所有命令在调用时都会运行两次,我知道只有1个机器人实例在运行... 查看详情

Discord Python Bot- 修复清除命令

】DiscordPythonBot-修复清除命令【英文标题】:DiscordPythonBot-fixingclearcommand【发布时间】:2021-07-2521:49:05【问题描述】:我的Bot有一个命令可以清除一些单词或所有内容...这是我的代码:@bot.command(aliases=[\'c\'])@commands.has_permissions(mana... 查看详情

C# Discord Bot,尝试为命令包含 API

】C#DiscordBot,尝试为命令包含API【英文标题】:C#DiscordBot,tryingtoincludeanAPIforacommand【发布时间】:2018-04-1709:40:43【问题描述】:我是一名新手程序员,我正在尝试将一个小的Discord机器人放在一起作为服务器。在花了一两个小时试... 查看详情

Discord Bot JS:编辑来自先前斜杠命令交互的回复

】DiscordBotJS:编辑来自先前斜杠命令交互的回复【英文标题】:DiscordBotJS:Editingthereplyfromapreviousslashcommandinteraction【发布时间】:2021-12-1508:01:25【问题描述】:我正在编写一个支持音乐的多功能Discord机器人,需要一些关于这个单... 查看详情

Discord Bot 无需命令即可发送消息

】DiscordBot无需命令即可发送消息【英文标题】:DiscordBotsendmessagewithoutcommand【发布时间】:2018-03-0107:57:07【问题描述】:我有一些代码在后台运行,24/7当然是用JavaScript。我想设置一个discord.js机器人,以在不断运行的代码发生某... 查看详情

Discord Bot 不响应命令(Python)

】DiscordBot不响应命令(Python)【英文标题】:DiscordBotNotRespondingtoCommands(Python)【发布时间】:2021-02-1721:23:40【问题描述】:我刚刚开始编写不和谐机器人。在尝试遵循在线说明和教程时,我的机器人不会响应命令。它对on_message()... 查看详情

discord bot帮助命令没有做任何事情

】discordbot帮助命令没有做任何事情【英文标题】:discordbothelpcommanddoesn\'tdoanything【发布时间】:2021-04-1201:24:42【问题描述】:我正在制作一个不和谐的机器人,但是当我执行帮助命令时,什么也没有发生。我的帮助命令的代码... 查看详情