Discord 使用机器人创建频道

Discord make channel using bot

我正在制作一个 discord 机器人,我正在尝试使用 here 文档中显示的 createChannel 函数。出于某种原因,我收到以下错误:

TypeError: bot.createChannel 不是函数。

我的代码在我向其传递消息的函数中,我已经能够在同一函数中创建角色并将用户添加到角色。只是 createChannel 函数不起作用。以下是代码的相关部分。

const bot = new Discord.Client();

function makeChannel(message){
    var server = message.guild;
    var name = message.author.username;

    server.createRole(data);
    var newrole = server.roles.find("name", name);
    message.author.addrole(newrole);

    /* The above 3 lines all work perfectly */


    bot.createChannel(server,name);
}

我还尝试了 bot.addChannel 和 bot.ChannelCreate,因为 ChannelCreate.js 是包含此命令代码的文件的名称。此外,我还尝试指定通道类型并分配回调函数,但主要问题是 TypeError 表示这根本不是函数。知道我做错了什么吗?

此外,我计划在未来的某个时间点使用 ServerChannel.update(),因此,如果有任何关于在解决上一个问题后让它起作用的建议,我们将不胜感激。

我想你还没有用你的机器人登录。

来自docs

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

client.login('mybot@example.com', 'password', output); // you seem to be missing this

function output(error, token) {
        if (error) {
                console.log(`There was an error logging in: ${error}`);
                return;
        } else
                console.log(`Logged in. Token: ${token}`);
}

或者,您也可以使用令牌登录。有关示例,请参阅文档。

好的,经过几天的尝试和阅读文档后,我找到了解决方案。我使用的是比我正在阅读的文档更新的 Discord 版本。在较新的版本中,通道是使用服务器中的方法创建的,而不是客户端方法。所以,代码应该是:

const bot = new Discord.Client();

function makeChannel(message){
    var server = message.guild;
    var name = message.author.username;

    server.createChannel(name, "text");
}

"text" 值是您创建的频道类型。可以是文字或语音。

我会 post link 任何遇到此问题的其他人的最新文档 here

答案应该将文档 link 更新到现在负责创建新频道的 GuildChannelManager

(来自文档的示例)

// Create a new text channel
guild.channels.create('new-general', { reason: 'Needed a cool new channel' })
  .then(console.log)
  .catch(console.error);

https://discord.js.org/#/docs/main/stable/class/GuildChannelManager

@Jim Knee 我认为你的答案是 v11,我是 discord.js 的新手,使用 Visual Studio Code 的自动代码。你可以做所有相同的事情,除了你的事情必须是这个。如果你是穷人,在做@Jim Knee 的回答时遇到错误,这是“你!”的地方!

去掉server.createChannel(name, "text/voice"); 并把它带到这个 server.channels.create(name, "text/voice");

希望我至少能帮上忙 ;)

我也是新人