简体   繁体   English

我的 Discord.js 机器人没有生成邀请链接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM