首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用discord.js-commando执行命令时,通过通道ID加入预定的语音通道

当使用discord.js-commando执行命令时,通过通道ID加入预定的语音通道
EN

Stack Overflow用户
提问于 2020-11-14 03:22:20
回答 2查看 83关注 0票数 0

我正在尝试有一个命令,当该命令运行时,它将从一个通道id加入一个不一致的语音通道。

我也在使用Commando,所以到目前为止命令看起来是这样的:

代码语言:javascript
复制
async run(message, args) {
        var channel = client.channels.cache.get("ChannelID");
        channel.join();
}

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

我一开始就试着用const client = new Discord.Client();去关心一个不和谐的客户,这让问题变得更糟。

是否有不同的语法或方法可以用于获取通道ID,然后加入通道?

EN

回答 2

Stack Overflow用户

发布于 2020-11-14 05:11:40

修复非常简单。

您有两种选择,一种是在与索引不同的文件中创建客户端并导出它,另一种是在执行命令时将其作为参数传递。

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

您的命令处理程序应该以某种方式包含这一点。

代码语言:javascript
复制
// command is just a placeholder here
command.execute(message, args);

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

代码语言:javascript
复制
command.execute(message, args, client);

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

代码语言:javascript
复制
async run(message, args, client) { // the order must be the same as above
    // your code here
}

如果您不想或无法执行上述操作,也可以通过message对象获取通道ID。

代码语言:javascript
复制
var channel = message.guild.channels.cache.get("ChannelID");

编辑:

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

代码语言:javascript
复制
-- Your bots folder
    - client.js
    - index.js
    - // all your other files

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

代码语言:javascript
复制
const Discord = require('discord.js');

const client = new Discord.Client();

module.exports = client;

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

代码语言:javascript
复制
const client = require('./client.js');

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

票数 1
EN

Stack Overflow用户

发布于 2021-04-05 18:26:15

简单地,只需添加this即可。

例如this.client.channels.cache.get("ChannelID");

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64826846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档