【问题标题】:Joining a pre determined voice channel via channel ID when a command is run using discord.js-commando使用 discord.js-commando 运行命令时,通过通道 ID 加入预先确定的语音通道
【发布时间】:2021-02-25 19:28:42
【问题描述】:

我正在尝试执行一个命令,该命令将在运行命令时从频道 ID 加入 Discord 中的语音频道。

我也在使用 Commando,所以目前的命令如下所示:

async run(message, args) {
        var channel = client.channels.cache.get("ChannelID");
        channel.join();
}

但是,当我尝试此方法时,运行命令时出现以下错误: ReferenceError: client is not defined

一开始我尝试使用 const client = new Discord.Client(); 删除不和谐客户端,这使问题变得更糟。

我可以使用不同的语法或方法来获取频道 ID,然后加入频道吗?

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    修复很简单。

    您有两个选择,要么在索引的单独文件中创建客户端并将其导出,要么在执行命令时将其作为参数传递。

    最后一个是更简单的选择,所以我将重点介绍它。

    您的命令处理程序应该以某种方式包含此内容。

    // command is just a placeholder here
    command.execute(message, args);
    

    现在您可以将客户端作为另一个参数传递。

    command.execute(message, args, client);
    

    在你的命令文件中,你现在需要在执行文件时包含它。

    async run(message, args, client) { // the order must be the same as above
        // your code here
    }
    

    如果你不想或不能做上述,你也可以通过消息对象获取频道ID。

    var channel = message.guild.channels.cache.get("ChannelID");
    

    编辑:

    或者,您可以在一个单独的文件中创建您的客户端并将其导入您需要的所有位置。让我们创建一个名为client.js 的文件并将其放在与index.js 相同的目录中。

    -- Your bots folder
        - client.js
        - index.js
        - // all your other files
    

    现在我们在client.js 中创建客户端并导出它。

    const Discord = require('discord.js');
    
    const client = new Discord.Client();
    
    module.exports = client;
    

    下一步是删除index.js 中的相应行,这样您就不会创建两次客户端并导入客户端的新实例。

    const client = require('./client.js');
    

    您可以在需要客户端的每个文件中执行此操作。您需要更改的只是client.js 的相对路径。

    【讨论】:

    • @Wortthy Alpaca 谢谢!非常!只是出于好奇,这里的命令占位符是什么?在这种情况下,Commando 充当命令处理程序,因此虽然我知道我可以将客户端作为参数传递给异步函数,但我不完全确定这是否就是我需要做的全部。
    • 好吧,你需要将它传递给执行命令的初始代码行。我从未使用过突击队,但您可能可以将其他参数传递给它。如果这不起作用,我编辑了答案并提供了一种导出客户的方法。
    【解决方案2】:

    只需添加this
    例如this.client.channels.cache.get("ChannelID");

    【讨论】:

      猜你喜欢
      • 2018-10-15
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2020-09-07
      • 2021-11-21
      • 1970-01-01
      相关资源
      最近更新 更多