Discord.js 与 discord.js-commando 阻止来自 运行 的特定频道中的命令
Discord.js with discord.js-commando Prevent command from running in specific channel
所以我试图阻止用户在特定频道中输入命令并且在该频道上没有任何反馈。
首先,我尝试在 运行 方法的开头简单地返回:
public async run(message: CommandMessage): Promise<Message | Message[]> {
if (message.channel.id === process.env.NUMBER_CHANNEL_ID) return;
[...]
}
这有效,但仅适用于不接受参数的命令。我的问题是我有接受参数的命令,如果我为该命令写了同一行,该命令不会得到 运行 它应该的(太棒了!)。但是,如果用户没有输入任何参数或输入了错误的参数,机器人将提示用户输入正确的值。
留言:
Respond with cancel to cancel the command. The command will automatically be cancelled in 30 seconds.
我的问题是弄清楚是否有一种方法可以使命令处理程序和/或使用 commando 框架的特定通道中的命令完全没有反应。
所以我找到了答案。
在主 .js 文件中设置机器人时,您可以执行以下操作:
client.dispatcher.addInhibitor((message: CommandMessage) => message.channel.id === process.env.NUMBER_CHANNEL_ID);
如果箭头函数的结果 returns 为真,这将告诉调度程序阻止命令。
所以我试图阻止用户在特定频道中输入命令并且在该频道上没有任何反馈。
首先,我尝试在 运行 方法的开头简单地返回:
public async run(message: CommandMessage): Promise<Message | Message[]> {
if (message.channel.id === process.env.NUMBER_CHANNEL_ID) return;
[...]
}
这有效,但仅适用于不接受参数的命令。我的问题是我有接受参数的命令,如果我为该命令写了同一行,该命令不会得到 运行 它应该的(太棒了!)。但是,如果用户没有输入任何参数或输入了错误的参数,机器人将提示用户输入正确的值。
留言:
Respond with cancel to cancel the command. The command will automatically be cancelled in 30 seconds.
我的问题是弄清楚是否有一种方法可以使命令处理程序和/或使用 commando 框架的特定通道中的命令完全没有反应。
所以我找到了答案。
在主 .js 文件中设置机器人时,您可以执行以下操作:
client.dispatcher.addInhibitor((message: CommandMessage) => message.channel.id === process.env.NUMBER_CHANNEL_ID);
如果箭头函数的结果 returns 为真,这将告诉调度程序阻止命令。