2017-04-20 64 views
2

我做了一个不和谐的机器人,我试图使用在文档中显示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(),所以任何一旦解决了上一个问题就可以使用它的建议将不胜感激。

+1

'bot'是否包含任何方法?尝试'console.log(bot)'并检查输出。 'Client'类可能有问题。 – Oen44

+0

bot是一个客户端,你试图从客户端创建频道?也许尝试从服务器常量创建频道 –

+0

@CyrilBeeckman为什么不呢?客户可以创建渠道,你甚至在评论之前检查过文档吗? – Oen44

回答

2

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

const bot = new Discord.Client(); 

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

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

“文本”值是通道的你将做的类型。可以是文字或语音。

我会发布一个链接到最新的文档对于遇到这个问题的其他人here

0

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

docs

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

client.login('[email protected]', '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}`); 
} 

或者,您也可以登录与令牌来代替。请参阅示例文档。

+0

我已使用我的机器人登录。我只是没有在示例中包含登录行。正如我所说的,机器人可以为服务器中的用户制作和分配角色,所以它肯定是连接的。 –