[英]My Discord.js bot is not generating invite link
I just started working on discord.js and I don't know a lot of things.我刚开始做discord.js,很多东西都不知道。 I added a code to the bot that should generate a link to invite it to the server and send it to the console.
我向机器人添加了一个代码,该代码应生成一个链接以邀请它到服务器并将其发送到控制台。 But instead of a link, the following error is issued:
但不是链接,而是发出以下错误:
D:\Discord Shield\node_modules\discord.js\src\client\Client.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 Shield\node_modules\discord.js\src\client\Client.js:488:13)
at Client.<anonymous> (D:\Discord Shield\index.js:11:9)
at Client.emit (node:events:390:28)
at WebSocketManager.triggerClientReady (D:\Discord Shield\node_modules\discord.js\src\client\websocket\WebSocketManager.js:383:17)
at WebSocketManager.checkShardsReady (D:\Discord Shield\node_modules\discord.js\src\client\websocket\WebSocketManager.js:366:10)
at WebSocketShard.<anonymous> (D:\Discord Shield\node_modules\discord.js\src\client\websocket\WebSocketManager.js:188:14)
at WebSocketShard.emit (node:events:390:28)
at WebSocketShard.checkReady (D:\Discord Shield\node_modules\discord.js\src\client\websocket\WebSocketShard.js:474:12)
at WebSocketShard.onPacket (D:\Discord Shield\node_modules\discord.js\src\client\websocket\WebSocketShard.js:446:16)
at WebSocketShard.onMessage (D:\Discord Shield\node_modules\discord.js\src\client\websocket\WebSocketShard.js:300:10) {
[Symbol(code)]: 'INVITE_MISSING_SCOPES'
}
Node.js v17.0.1
Here is my code:这是我的代码:
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)
Your bot don't have the necessary intent
to perform actions concerning invites on discord, just change this line您的机器人没有必要的
intent
来执行有关不和谐邀请的操作,只需更改此行
const bot = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES"] });
to this :对此:
const bot = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES","GUILD_INVITES"] });
I know that v12 is fetchInvites() and v13 is invites.fetch() but is not finding the code and the inviter in v13..我知道 v12 是 fetchInvites() 而 v13 是 invites.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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.