text: const Discord = require('discord.js');
  
  const EventManager = require('../Managers/EventManager');
  const InteractionManager = require('../Managers/InteractionManager');
  
  const Logger = require('../Utilities/Logger');
  const Utilities = require('../Utilities/Utilities');
  
  class DisGroupUtilities extends Discord.Client {
  
      constructor() {
  
          super({
  
              allowedMentions: [
                  
                  'repliedUser',
                  'roles',
                  'users'
  
              ],
  
              intents: [
  
                  Discord.Intents.FLAGS.DIRECT_MESSAGES,
                  Discord.Intents.FLAGS.DIRECT_MESSAGE_REACTIONS,
                  Discord.Intents.FLAGS.DIRECT_MESSAGE_TYPING,
                  Discord.Intents.FLAGS.GUILDS,
                  Discord.Intents.FLAGS.GUILD_BANS,
                  Discord.Intents.FLAGS.GUILD_EMOJIS_AND_STICKERS,
                  Discord.Intents.FLAGS.GUILD_INTEGRATIONS,
                  Discord.Intents.FLAGS.GUILD_INVITES,
                  Discord.Intents.FLAGS.GUILD_MEMBERS,
                  Discord.Intents.FLAGS.GUILD_MESSAGES,
                  Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS,
                  Discord.Intents.FLAGS.GUILD_MESSAGE_TYPING,
                  Discord.Intents.FLAGS.GUILD_PRESENCES,
                  Discord.Intents.FLAGS.GUILD_VOICE_STATES,
                  Discord.Intents.FLAGS.GUILD_WEBHOOKS
  
              ]
  
          });
  
          this.colors = require('../Assets/json/colors.json');
          this.config = require('../config.json');
  
          this.events = new EventManager(this);
          this.interactions = new InteractionManager(this);
  
          this.logger = new Logger(this);
          this.utils = new Utilities(this);
  
          this.readDirectory = require('util').promisify(require('fs').readdir);
          
      }
  
      async getEmoji(EmojiName, Options = { size: 512, url: false }) {
  
          const EmojiFile = require('../Assets/json/emojis.json');
  
          let Emoji;
  
          (
  
              Options.url
              ? Emoji = EmojiFile[EmojiName].URL + `?size=${Options.size}`
              : Emoji = EmojiFile[EmojiName].Main
  
          )
  
          if(!Emoji) return this.logger.error(`This emoji doesn't exist in the database : ${EmojiName}`);
  
          return Emoji;
  
      }
  
      async launch(DisGroupUtilities = this) {
  
          DisGroupUtilities.events.loadAllEvents();
          DisGroupUtilities.interactions.loadAllInteractions();
  
          DisGroupUtilities.login(DisGroupUtilities.config.Application.Bot.Token);
  
      }
  
  }
  
  module.exports = DisGroupUtilities;