Я пытаюсь использовать VS Code с Node.js для кодирования бота для Discord - PullRequest
0 голосов
/ 01 ноября 2019

Я перепробовал почти 10 различных учебных пособий по кодированию команды очистки, и ни один из них не работает, есть ли у кого-нибудь хорошая команда очистки, которую я мог бы попробовать в качестве последнего средства. Вот мой код, есть что-нибудь, что может повлиять на эту команду, которую я пытаюсь написать:

botconfig.json

{
    "token": "*hidden*",
    "prefix": "!"
}

index.js

const botconfig = require("./botconfig.json");
const Discord = require("discord.js");
const colours = require("./colors.json");

const bot = new Discord.Client({
  disableEveryone: true
});

bot.on("ready", async () => {
  console.log(`${bot.user.username} is online!`)
  bot.user.setActivity("on the SAJRP Server!!")
})

bot.on("message", async message => {
  if (message.author.bot || message.channel.type === "dm") return;

  const author = message.author
  let prefix = botconfig.prefix;
  let messageArray = message.content.split(" ")
  let command = messageArray[0];
  let args = messageArray.slice(1)

  if (message.content === 'hello') {
    message.channel.send(`Hello ${author}!`)

  }

  if (command === `${prefix}serverinfo`) {
    message.delete()
    let sEmbed = new Discord.RichEmbed()
      .setColor(colours.blue_dark)
      .setTitle("User Info")
      .setThumbnail(message.guild.iconURL)
      .setAuthor(`${message.guild.name} Info`, message.guild.iconURL)
      .addField("**Guild Name:**", `${message.guild.name}`, true)
      .addField("**Guild Owner:**", `${message.guild.owner}`, true)
      .addField("**Member Count:**", `${message.guild.memberCount}`, true)
      .addField("**Role Count:**", `${message.guild.roles.size}`, true)
      .setTimestamp()
      .setFooter(`SiegeBot | Created by @IllegalDiscord#9209 `, bot.user.displayAvatarURL);

    message.channel.send({
      embed: sEmbed
    });

  }

  if (command === `${prefix}userinfo`) {
    message.delete()
    let sEmbed = new Discord.RichEmbed()
      .setColor(colours.green_light)
      .setTitle("User Info")
      .setThumbnail(message.guild.iconURL)
      .setAuthor(`${message.author.username} Info`, message.author.displayAvatarURL)
      .addField("**Username:**", `${message.author.username}`, true)
      .addField("**Discriminator:**", `${message.author.discriminator}`, true)
      .addField("**ID:**", `${message.author.id}`, true)
      .addField("**Status:**", `${message.author.presence.status}`, true)
      .addField("**Created at:**", `${message.author.createdAt}`, true)
      .setFooter(`SiegeBot | Created by @IllegalDiscord#9209 `, bot.user.displayAvatarURL);

    message.channel.send({
      embed: sEmbed
    });
  }

})

const prefix = "!";
bot.on("message", (message) => {

  msg = message.content.toLowerCase();

  if (message.author.bot) return;

  mention = message.mentions.users.first();

  if (msg.startsWith(prefix + "send")) {
    if (mention == null) {
      return;
    }
    message.delete();
    mentionMessage = message.content.slice(10);
    mention.sendMessage(mentionMessage);
    message.channel.send("Message Sent!");
  }
})

bot.on('message', msg => {

  let args = msg.content.substring(prefix.length).split(" ");

  switch (args[0]) {
    case 'activity':
      msg.delete()
      if (!msg.member.roles.some(r => ["Founder", "Moderator", "Admin", "Owner"].includes(r.name))) return msg.reply("You do not have the permission to do this!"); // if author has no perms
      var presanceactivity = 9
      var presancereason = msg.content.substring(presanceactivity).split(" ");
      var presancereason = presancereason.join(" ");
      if (!presancereason) return msg.reply("Please indicate a reason for the presence change!")
      bot.user.setPresence({
          status: 'online',
          game: {
            name: presancereason
          }
        })
        .catch(error => msg.reply(`Sorry @${msg.author} I couldn't change my status because of : ${error}`)); //if error, display error
      msg.reply(`My presence was changed to: ${presancereason} by ` + msg.author);



  }
})

bot.on("message", async message => {

  const bannedWords = ["discord.gg"]
  try {
    if (bannedWords.some(word => message.content.toLowerCase().includes(word))) {
      if (message.author.id === message.guild.ownerID) return;
      await message.delete();
      await message.reply("You cannot send invites in this Discord server");
    }
  } catch (e) {
    console.log(e);
  }
});

bot.on("message", message => {

  let msg = message.content.toUpperCase();
  let sender = message.author;
  let cont = message.content.slice(prefix.length).split(" ")
  let args = cont.slice(1);

  if (msg.startsWith(prefix + 'PURGE')) {

    async function purge() {
      message.delete();

      if (!message.member.roles.find("Admin", "Owner")) {
        message.reply('You don't have permission to do this!')
        return;
      }

      if (isNaN(args[0])) {
        message.reply('Please provide a number!')
        return;
      }

      const fetched = await message.channel.fetchedMessages({
        limit: args[0]
      });
      console.log(fetched.size + ' messages found, deleting...');

      message.channel.bulkDelete(fetched)
        .catch(error => message.reply(`Error: ${error}`));

    }
  }
})

bot.login(botconfig.token);

Пожалуйста, ответьте как можно скорее, так как мне нужно, чтобы этот бот был готов и его возрасты достигли этой точки, и я до сих пор не могу заставить работать команду очистки. Как вы можете видеть, там есть команда очистки, но она не работает. Кто-нибудь может сказать почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...