我的Discord.js bot没有生成邀请链接



我刚开始做discord.js,我不知道很多东西。我向bot添加了一个代码,它应该生成一个链接来邀请它到服务器并将其发送到控制台。但是发出的不是链接,而是以下错误:

D:Discord Shieldnode_modulesdiscord.jssrcclientClient.js:488
throw new TypeError('INVITE_MISSING_SCOPES');
^
TypeError [INVITE_MISSING_SCOPES]: At least one valid scope must be provided for the invite
at Client.generateInvite (D:Discord Shieldnode_modulesdiscord.jssrcclientClient.js:488:13)
at Client.<anonymous> (D:Discord Shieldindex.js:11:9)
at Client.emit (node:events:390:28)
at WebSocketManager.triggerClientReady (D:Discord Shieldnode_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:383:17)
at WebSocketManager.checkShardsReady (D:Discord Shieldnode_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:366:10)
at WebSocketShard.<anonymous> (D:Discord Shieldnode_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:188:14)
at WebSocketShard.emit (node:events:390:28)
at WebSocketShard.checkReady (D:Discord Shieldnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:474:12)
at WebSocketShard.onPacket (D:Discord Shieldnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:446:16)
at WebSocketShard.onMessage (D:Discord Shieldnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:300:10) {
[Symbol(code)]: 'INVITE_MISSING_SCOPES'
}
Node.js v17.0.1
下面是我的代码:
const Discord = require('discord.js');
const bot = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES"] });
bot.commands = new Discord.Collection();
const fs = require('fs')
let config = require('./botconfig.json');
let token = config.token;
let prefix = config.prefix;
bot.on('ready', () => {
console.log(`Bot connected. Logged as ${bot.user.username}`);
bot.generateInvite({
permissions: ['ANDMINISTRATOR'],
})
.then(link => console.log(`Generated bot invite link: ${link}`))
.catch(console.error);
});
bot.login(token)

您的bot没有必要的intent来执行有关不和谐邀请的操作,只需更改这一行

const bot = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES"] });

to this:

const bot = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES","GUILD_INVITES"] });

我知道v12是fetchInvites()和v13是invite .fetch(),但没有找到v13中的代码和邀请人.

```
client.on("ready", async () => {

client.memberLogs = client.guilds.cache.get('788488117404303390').channels.cache.get('899659530894471220')
invites = await client.guilds.cache.get('788488117404303390').fetchInvites(); // v13 invites.fetch()


});

let invites;
client.on('guildMemberAdd', async member => {
member.guild.fetchInvites().then(async guildInvites => {
const ei = invites;
invites = guildInvites;
const invite = guildInvites.find(i => ei.get(i.code).uses < i.uses);
let embed = new discord.MessageEmbed()
.setAuthor(member.user.tag, member.user.avatarURL())
.setDescription("Joined!")
.setTimestamp()
.setFooter(member.guild.name)
.addField("__Members__", member.guild.memberCount);
if (invite) {
embed.addField("__Invite Code__", invite.code, true);
let inviter = client.users.cache.get(invite.inviter.id);
if (inviter)
embed.addField("__Invited by__", inviter.tag, true);
else
embed.addField("__Invited By__", "Unknown", true);// this is what i get in v13
const doc = client.invites.get(inviter.id.toString());
if (doc && doc.invites.length !== 0)
embed.addField("__The User Have__", (doc.invites.length + 1) + "Invites")
else
embed.addField("The User has", "1 invite")
} else {
embed.addField("__Invite Code__", "Unknown", true); // this is what i get in v13
embed.addField("__Invite Code__", "Unknown", true); // this is what i get in v13
}
client.memberLogs.send(embed);
(await client.memberLogs.send(member.toString() + invite.inviter.toString())).delete();
let doc = client.invites.get(invite.inviter.id.toString())
if (!doc)
doc = {
id: invite.inviter.id.toString()
};
if (!doc.invites)
doc.invites = [];
doc.invites.push(member.id.toString())
client.invites.set(invite.inviter.id.toString(), doc);
});
})

client.on('guildMemberRemove', async member => {
const all = client.invites.all().map(i => JSON.parse(i.data));
for (let one of all) {
if (one.invites && one.invites.includes(member.id.toString())) {
one.invites = one.invites.filter(user => user != member.id.toString());
client.invites.set(one.id, one);
}
}
})
```
please help me thank you

最新更新