Discord.js 和 discord.js-commando 防止命令在特定通道中运行

Posted

技术标签:

【中文标题】Discord.js 和 discord.js-commando 防止命令在特定通道中运行【英文标题】:Discord.js with discord.js-commando Prevent command from running in specific channel 【发布时间】:2018-10-15 03:28:15 【问题描述】:

所以我试图阻止用户在特定频道中输入命令,并且在该频道上没有任何反馈。

首先我尝试在 run 方法的开始处简单地返回:

public async run(message: CommandMessage): Promise<Message | Message[]> 

    if (message.channel.id === process.env.NUMBER_CHANNEL_ID) return;
    [...]

这有效,但仅适用于不带参数的命令。我的问题是我有接受参数的命令,如果我为该命令编写同一行,则该命令不会按应有的方式运行(太棒了!)。但是,如果用户没有输入任何参数或输入错误的参数,机器人将提示用户输入正确的值。

消息:

以取消响应以取消命令。该命令将在 30 秒后自动取消。

我的问题是弄清楚是否有办法让命令处理程序和/或使用突击队框架的特定通道中的命令完全没有反应。

【问题讨论】:

【参考方案1】:

所以我找到了答案。

在您的主 .js 文件中设置机器人时,您可以执行以下操作:

client.dispatcher.addInhibitor((message: CommandMessage) => message.channel.id === process.env.NUMBER_CHANNEL_ID);

如果箭头函数的结果返回 true,这将告诉调度程序阻止命令。

【讨论】:

以上是关于Discord.js 和 discord.js-commando 防止命令在特定通道中运行的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 错误:它正在删除整个数组。 Quick.db 和 discord.js

使用 Discord 按钮的建议命令 Discord.JS

错误:找不到带有 discord-buttons、discord.js、TypeScrpit 和 webpack 的模块“./undefined”

如何在循环 discord.js 中减去和除数

Discord.JS 录音和数据压缩

Discord.js 权限