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 机器人正在删除不正确的消息