将命令限制为某些通道

时间:2018-06-23 20:35:20

标签: node.js discord.js commando

我正在尝试使用Commando构建机器人,但是我想不出一种方法来使机器人忽略未在定义的通道中发送的命令(或者更好的是删除和忽略)。例如,如果您没有在#botchat中发送命令,则该消息将被删除。

我知道我可以在其他渠道中拒绝对该机器人的读取权限,但是我正在运行其他模块,并且它们需要读取渠道。

我可以在每个运行功能的开头添加一个检查,但这不会影响默认命令。

是否有一种方法可以编写在实际运行功能开始之前针对每个命令运行的检查功能? (也许使用Command类?)

3 个答案:

答案 0 :(得分:0)

您的命令是否在IF / ELSE IF树中?

如果是这样,那么我将在检查命令之前(但是在服务器上每条消息上运行的部分之下)将变量声明为消息的通道的开头。像这样的东西

var ChannelID = message.channel.id

或者如果您不想按名称做

var ChannelName = message.channel.name

然后,当您的命令依赖于通道时,请执行以下操作:

if(command === "ChannelDependentCommand"){
    if(ChannelID !== "AllowedChannel"){
        message.delete();
    }ELSE {
        //**whatever you want the command to do**
    };
};

我希望这会有所帮助吗?显然,如果您以不同的方式进行操作,则可能需要对语法进行调整和免责声明,尽管此方法尚未经过测试,但应解释其逻辑并思考其背后的原因。

此外,如果您提供一些已经获得的代码,以供将来参考,可以轻松给出相关答案:)

答案 1 :(得分:0)

我发现:您可以使用Inhibitors。感谢Discord.js公会中的Gawdl3y#4269

{{1}}

答案 2 :(得分:0)

您需要做的是:

file_get_contents('https://whoismyrepresentative.com/getall_mems.php?zip=' . $_GET['zip'] . '&output=json');

希望我能帮上忙!谢谢。