javascript 可以看到任何错误或原因,为什么我的机器人不会响应命令,其在线和所有权限等

2eafrhcq  于 2023-05-16  发布在  Java
关注(0)|答案(1)|浏览(112)

任何可以看到任何错误或原因,为什么我的机器人不会响应命令,其在线和所有权限等,这是我的代码我已经注解令牌了

const Discord = require('discord.js');
const xml2js = require('xml2js');
const fs = require('fs');
const https = require('https');

const client = new Discord.Client({
  intents: [
    1 << 0, // GUILDS
    1 << 9, // GUILD_MESSAGES
    1 << 10, // GUILD_MESSAGE_REACTIONS
    1 << 12, // DIRECT_MESSAGES
    1 << 14, // GUILD_MEMBERS
    1 << 16, // GUILD_VOICE_STATES
  ],
});
const prefix = '£';
const XML_ROLE_ID = '1106710053341372506';

client.once('ready', () => {
  console.log('Bot is online!');
});

client.on('message', message => {
  if (!message.content.startsWith(prefix) || message.author.bot) return;

  const args = message.content.slice(prefix.length).trim().split(/ +/);
  const command = args.shift().toLowerCase();

  switch (command) {
    case 'test':
      message.channel.send('Bot is active and connected to guild.');
      break;
    case 'set up':
      message.channel.send('Bot initiated in this channel.');
      break;
    case 'status':
      message.channel.send(`Bot is currently ${client.user.presence.status}!`);
      break;
    case 'upload':
      if (message.attachments.size == 0) {
        message.channel.send('Please attach a file to your upload command!');
      } else {
        const attachment = message.attachments.first();
        const fileName = attachment.name;
        const extension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
        if (extension !== 'xml' && extension !== 'json') {
          message.channel.send('The file must be either XML or JSON!');
        } else {
          message.channel.send(`Do you want to validate ${fileName}?`, {
            buttons: [
              new Discord.MessageButton()
                .setCustomId('validate')
                .setLabel('Validate')
                .setStyle('PRIMARY'),
              new Discord.MessageButton()
                .setCustomId('cancel')
                .setLabel('Cancel')
                .setStyle('DANGER'),
            ],
          }).then(msg => {
            const collector = msg.createMessageComponentCollector({ time: 15000 });
            collector.on('end', async (collected) => {
              if (msg.deleted) return;
              if (collected.size === 0) {
                await msg.edit({
                  components: [],
                  embeds: [new Discord.MessageEmbed().setDescription('This command has been cancelled.').setColor('#ff0000')],
                });
              }
            });
            collector.on('collect', async (i) => {
              if (i.customId === 'validate') {
                const file = fs.createWriteStream(fileName);
                const request = https.get(attachment.url, function(response) {
                  response.pipe(file);
                  file.on('finish', function() {
                    let parser;
                    if (extension === 'xml') {
                      parser = new xml2js.Parser();
                      fs.readFile(fileName, function(err, data) {
                        if (err) {
                          message.channel.send(`There was an error parsing the XML: ${err}`);
                          console.error(`Error parsing XML: ${err}`);
                        } else {
                          message.member.roles.add(XML_ROLE_ID);
                          const embed = new Discord.MessageEmbed()
                            .setTitle('XML File Uploaded')
                            .setDescription(`File: ${fileName}`)
                            .setThumbnail('http://www.imghost.net/Jtr9Mm9aP91Z0HZ')
                            .setColor('#00ff00');
                          message.channel.send({ embeds: [embed] });
                        }
                      });
                    } else if (extension === 'json') {
                      fs.readFile(fileName, function(err, data) {
                        try {
                          JSON.parse(data);
                          const embed = new Discord.MessageEmbed()
                            .setTitle('JSON File Uploaded')
                            .setDescription(`File: ${fileName}`)
                            .setThumbnail('http://www.imghost.net/Jtr9Mm9aP91Z0HZ')
                            .setColor('#00ff00');
                          message.channel.send({ embeds: [embed] });
                        } catch (err) {
                          message.channel.send(`There was an error parsing the JSON: ${err}`);
                          console.error(`Error parsing JSON: ${err}`);
                        }
                      });
                    }
                  });
                });
                await msg.edit({
                  components: [],
                  embeds: [new Discord.MessageEmbed().setDescription(`The ${extension.toUpperCase()} file has been uploaded for validation.`).setColor('#00ff00')],
                });
              } else if (i.customId === 'cancel') {
                await msg.edit({
                  components: [],
                  embeds: [new Discord.MessageEmbed().setDescription('This command has been cancelled.').setColor('#ff0000')],
                });
              }
            });
          });
        }
      }
      break;
    case 'report':
      // Show any errors
      break;
    case 'help':
      message.channel.send(`Here's a list of available commands:\n${prefix}test\n${prefix}set up\n${prefix}status\n${prefix}upload\n${prefix}report\n${prefix}help`);
      break;
    default:
      message.channel.send('Invalid command. Type !help to see a list of available commands.');
      break;
  }
});

client.login('Token_hear');

说在线IN TERMINAL也有管理员权限和所需的perms意图等,但仍然不响应命令时使用,甚至没有简单的测试命令

nhaq1z21

nhaq1z211#

client.on('message', message => {替换为client.on('messageCreate', message => {并创建客户端,如下所示:

const { Client, IntentsBitField } = require('discord.js');

const client = new Client({
  intents: [
    IntentsBitField.Flags.Guilds,
    IntentsBitField.Flags.GuildMembers,
    IntentsBitField.Flags.GuildMessages,
    IntentsBitField.Flags.MessageContent,
  ],
});

所以整件事就是

const Discord = require('discord.js');
const xml2js = require('xml2js');
const fs = require('fs');
const https = require('https');

const { Client, IntentsBitField } = require('discord.js');

const client = new Client({
  intents: [
    IntentsBitField.Flags.Guilds,
    IntentsBitField.Flags.GuildMembers,
    IntentsBitField.Flags.GuildMessages,
    IntentsBitField.Flags.MessageContent,
  ],
});

const prefix = '£';
const XML_ROLE_ID = '1106710053341372506';

client.once('ready', () => {
  console.log('Bot is online!');
});

client.on('messageCreate', message => {
  if (!message.content.startsWith(prefix) || message.author.bot) return;

  const args = message.content.slice(prefix.length).trim().split(/ +/);
  const command = args.shift().toLowerCase();

  switch (command) {
    case 'test':
      message.channel.send('Bot is active and connected to guild.');
      break;
    case 'set up':
      message.channel.send('Bot initiated in this channel.');
      break;
    case 'status':
      message.channel.send(`Bot is currently ${client.user.presence.status}!`);
      break;
    case 'upload':
      if (message.attachments.size == 0) {
        message.channel.send('Please attach a file to your upload command!');
      } else {
        const attachment = message.attachments.first();
        const fileName = attachment.name;
        const extension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
        if (extension !== 'xml' && extension !== 'json') {
          message.channel.send('The file must be either XML or JSON!');
        } else {
          message.channel.send(`Do you want to validate ${fileName}?`, {
            buttons: [
              new Discord.MessageButton()
                .setCustomId('validate')
                .setLabel('Validate')
                .setStyle('PRIMARY'),
              new Discord.MessageButton()
                .setCustomId('cancel')
                .setLabel('Cancel')
                .setStyle('DANGER'),
            ],
          }).then(msg => {
            const collector = msg.createMessageComponentCollector({ time: 15000 });
            collector.on('end', async (collected) => {
              if (msg.deleted) return;
              if (collected.size === 0) {
                await msg.edit({
                  components: [],
                  embeds: [new Discord.MessageEmbed().setDescription('This command has been cancelled.').setColor('#ff0000')],
                });
              }
            });
            collector.on('collect', async (i) => {
              if (i.customId === 'validate') {
                const file = fs.createWriteStream(fileName);
                const request = https.get(attachment.url, function(response) {
                  response.pipe(file);
                  file.on('finish', function() {
                    let parser;
                    if (extension === 'xml') {
                      parser = new xml2js.Parser();
                      fs.readFile(fileName, function(err, data) {
                        if (err) {
                          message.channel.send(`There was an error parsing the XML: ${err}`);
                          console.error(`Error parsing XML: ${err}`);
                        } else {
                          message.member.roles.add(XML_ROLE_ID);
                          const embed = new Discord.MessageEmbed()
                            .setTitle('XML File Uploaded')
                            .setDescription(`File: ${fileName}`)
                            .setThumbnail('http://www.imghost.net/Jtr9Mm9aP91Z0HZ')
                            .setColor('#00ff00');
                          message.channel.send({ embeds: [embed] });
                        }
                      });
                    } else if (extension === 'json') {
                      fs.readFile(fileName, function(err, data) {
                        try {
                          JSON.parse(data);
                          const embed = new Discord.MessageEmbed()
                            .setTitle('JSON File Uploaded')
                            .setDescription(`File: ${fileName}`)
                            .setThumbnail('http://www.imghost.net/Jtr9Mm9aP91Z0HZ')
                            .setColor('#00ff00');
                          message.channel.send({ embeds: [embed] });
                        } catch (err) {
                          message.channel.send(`There was an error parsing the JSON: ${err}`);
                          console.error(`Error parsing JSON: ${err}`);
                        }
                      });
                    }
                  });
                });
                await msg.edit({
                  components: [],
                  embeds: [new Discord.MessageEmbed().setDescription(`The ${extension.toUpperCase()} file has been uploaded for validation.`).setColor('#00ff00')],
                });
              } else if (i.customId === 'cancel') {
                await msg.edit({
                  components: [],
                  embeds: [new Discord.MessageEmbed().setDescription('This command has been cancelled.').setColor('#ff0000')],
                });
              }
            });
          });
        }
      }
      break;
    case 'report':
      // Show any errors
      break;
    case 'help':
      message.channel.send(`Here's a list of available commands:\n${prefix}test\n${prefix}set up\n${prefix}status\n${prefix}upload\n${prefix}report\n${prefix}help`);
      break;
    default:
      message.channel.send('Invalid command. Type !help to see a list of available commands.');
      break;
  }
});

client.login('token');

我刚刚测试过,它对我有效

相关问题