我正在使用v12。我试图让我的机器人在使用以下代码创建公会后向我发送邀请:
client.on('message', message => {
if(message.content.startsWith('!guild')) {
client.guilds.create('Bot Server', 'london')
.then(guild => {guild.channels.cache.first().createInvite()
.then(invite => client.users.cache.get('<myID>').send(invite.url))
.catch(error => console.log(error))
})
}})
它成功创建了一个服务器,但是没有向我发送邀请:
DiscordAPIError: Unknown Channel
at RequestHandler.execute (c:\Users\User\Desktop\Bot Server\node_modules\discord.js\src\rest\RequestHandler.js:170:25)
at processTicksAndRejections (internal/process/task_queues.js:97:5) {name: 'DiscordAPIError',
message: 'Unknown Channel', method: 'post', path: '/channels/740129814459187242/invites', code: 10003}
我只是想看看机器人可以在不和谐的情况下拥有服务器,但是不能从机器人那里获得邀请消息。在这一点上,我很沮丧。在discord.js和discord.com的文档中已经表明有可能。我该如何向自己发送邀请,或如何将邀请发送到使用命令创建公会的频道?
答案 0 :(得分:3)
创建Guild
时,无论它是不是由漫游器创建的,它都会有两个类别,“文本通道”和“语音通道”,一个包含TextChannel
,另一个包含一个VoiceChannel
。
类别被视为渠道。 Guild.channels.cache.first()
将始终是Category
,并且您不能在类别上创建邀请。
要解决此问题,您必须过滤Guild
中的所有频道,并选择Channel
中的第一个Collection
。
client.guilds.create("MyGuild").then(guild => {
// Filtering all the channels.
const channels = guild.channels.cache.filter(channel => channel.type == "text");
// --> channels is a collection.
channels.first().createInvite().then(invite => {
message.channel.send(`Here is your invite: ${invite.url}`);
})
})