Discord 使用机器人制作频道

Posted

技术标签:

【中文标题】Discord 使用机器人制作频道【英文标题】:Discord make channel using bot 【发布时间】:2017-09-16 18:22:19 【问题描述】:

我正在制作一个不和谐的机器人,我正在尝试使用文档中显示的 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(),因此,一旦先前的问题得到解决,任何有关使其工作的建议将不胜感激。

【问题讨论】:

bot 是否包含任何方法?尝试console.log(bot) 并检查输出。可能Client 类有问题。 机器人是客户端,你尝试从客户端创建频道?也许尝试从服务器常量创建频道 @CyrilBeeckman 为什么不呢?客户可以创建频道,你在评论之前检查过文档吗? @Oen44 我不知道它是如何工作的,但是如果客户可以制作chan,它应该被允许创建频道吗?与 TeamSpeak 或其他类似 您是否以机器人身份登录? bot.login('mybot@example.com', 'password', some_function); 【参考方案1】:

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

摆脱server.createChannel(name, "text/voice"); 并把它发给这个server.channels.create(name, "text/voice");

希望我至少可以提供帮助;)

我也只是个新人

【讨论】:

【参考方案2】:

答案应该更新指向GuildChannelManager 的文档链接,该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

【讨论】:

【参考方案3】:

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

const bot = new Discord.Client();

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

    server.createChannel(name, "text");

“文本”值是您正在制作的频道类型。可以是文字或语音。

我将为遇到此问题的其他人发布最新文档的链接here。

【讨论】:

【参考方案4】:

我认为您尚未使用您的机器人登录。

来自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 使用机器人制作频道的主要内容,如果未能解决你的问题,请参考以下文章

使用 JDA 制作的 Discord 机器人正在删除不正确的消息

Discord.js 机器人无法离开语音频道

如何使用数据库(MongoDB)和 Discord.js 制作“setWelcome”命令?

Discord bot如何创建私人文本频道

Discord.js - 删除特定频道

如何使 discord.js 机器人在另一个频道中重复给它的消息?