text: const { MessageEmbed } = require('discord.js');
  const { randomize } = require('../../utils/Functions');
  const CooldownManager = require('../../managers/CooldownManager');
  const FlameCommand = require('../../structures/FlameCommand');
  
  class FishCommand extends FlameCommand {
    constructor() {
      super('fish', {
        description: 'Сходить на рыбалку.',
        category: 'economy',
        usage: 'fish [Удочка]',
        aliases: [],
        examples: [],
      });
    }
  
    async run(message, args) {
      const manager = new CooldownManager(message.client);
      const cooldown = await manager
        .find({ guildID: message.guild.id, userID: message.author.id, command: this.name });
  
      if (cooldown) {
        const expirationTimestamp = (cooldown?.ends / 1000).toFixed(0);
        return message.fail(`Данная команда использует задержку, возвращайтесь снова примерно <t:${expirationTimestamp}:R> (<t:${expirationTimestamp}>).`);
      }
  
      const guild = await message.client.database.collection('guilds').findOne({ guildID: message.guild.id });
      const data = await message.client.database.collection('guildusers').findOne({ guildID: message.guild.id, userID: message.author.id });
  
      const transport = guild.transport?.find((t) => t.requiredFor === this.name);
      if (transport && !data.ownedTransport?.includes(transport.key)) return message.fail(`Для выполнения данного действия вам необходимо иметь транспорт "**${transport.name}**".`);
      if (!data.ownedRods?.length) return message.fail('Похоже, пока что вы не имеете ни одной доступной удочки.');
  
      let rod = args[0];
      if (rod) {
        if (!data.ownedRods.includes(rod)) return message.fail('Вы не имеете данной удочки.');
      } else rod = data.ownedRods[Math.floor(Math.random() * data.ownedRods.length)];
  
      rod = guild.rods.find((r) => r.key === rod);
      if (!rod) return message.fail('Данной кирки не существует на данном сервере. Возможно, она была удалена администратором сервера.');
  
      const money = randomize(rod.income, rod.income * randomize(1.5, 2));
  
      message.client.database.collection('guildusers').updateOne({ guildID: message.guild.id, userID: message.author.id }, {
        $inc: {
          money: parseInt(money),
        },
      });
      message.channel.send(
        new MessageEmbed()
          .setTitle('Рыбалка!')
          .setDescription(`Рыбалка прошла успешно, была использована **${rod.name}** удочка.\nВозвращайтесь снова через некоторое время!`)
          .addField('Полученные ресурсы:', `Валюта сервера: +**${money}**${guild.currency}`)
          .setColor('ffa500'),
      );
      manager.create(
        {
          guildID: message.guild.id,
          userID: message.author.id,
          command: this.name,
          ends: Date.now() + guild.cooldown[this.name] * 1000,
        },
      );
    }
  }
  
  module.exports = FishCommand;
  