'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. 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)


Solution 1:[1]

Your bot don't have the necessary intent to perform actions concerning invites on discord, just change this line

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

to this :

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

Solution 2:[2]

I know that v12 is fetchInvites() and v13 is invites.fetch() but is not finding the code and the inviter in 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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Malik Lahlou
Solution 2 sahar segal