public async Task Invite(CommandContext ctx, [Description("Участник")] DiscordMember member)
        {
            var ship = ShipList.GetOwnedShip(ctx.Member.Id);

            if (ship == null)
            {
                await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Вы не являетесь владельцем корабля!");

                return;
            }

            if (ctx.Member == member)
            {
                await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Нельзя пригласить самого себя!");

                return;
            }

            ship.AddMember(member.Id);
            ShipList.SaveToXML(Bot.BotSettings.ShipXML);

            await member.SendMessageAsync(
                $"Вы были приглашены на корабль **{ship.Name}** участником **{ctx.Member.Username}**! Отправьте " +
                $"`{Bot.BotSettings.Prefix}yes {ship.Name}` для принятия приглашения, или `{Bot.BotSettings.Prefix}no {ship.Name}` для отказа.");

            await ctx.RespondAsync(
                $"{Bot.BotSettings.OkEmoji} Успешно отправлено приглашение участнику {member.Username}!");
        }
        public async Task Kick(CommandContext ctx, [Description("Участник")] DiscordMember member)
        {
            var ship = ShipList.GetOwnedShip(ctx.Member.Id);

            if (ship == null)
            {
                await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Вы не являетесь владельцем корабля!");

                return;
            }

            if (ctx.Member == member)
            {
                await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Нельзя выгнать самого себя!");

                return;
            }

            if (!ship.Members.ContainsKey(member.Id))
            {
                await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Этот участник не является членом вашего корабля!");

                return;
            }

            if (!ship.Members[member.Id].Status)
            {
                await ctx.RespondAsync(
                    $"{Bot.BotSettings.ErrorEmoji} Используйте команду `!uninvite [DiscordMember]`, чтобы отозвать приглашение!");

                return;
            }

            ship.RemoveMember(member.Id);
            await member.RevokeRoleAsync(ctx.Guild.GetRole(ship.Role));

            ShipList.SaveToXML(Bot.BotSettings.ShipXML);

            await ctx.RespondAsync(
                $"{Bot.BotSettings.OkEmoji} Вы выгнали участника **{member.Username}** с корабля **{ship.Name}**!");

            await member.SendMessageAsync($"Капитан **{ctx.Member.Username}** выгнал вас с корабля **{ship.Name}**!");
        }
        public async Task Prune(CommandContext ctx)
        {
            var ship = ShipList.GetOwnedShip(ctx.Member.Id);

            if (ship == null)
            {
                await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Вы не являетесь владельцем корабля!");

                return;
            }

            List <ulong> toBePruned = new List <ulong>();

            foreach (var member in ship.Members)
            {
                try
                {
                    var m = await ctx.Guild.GetMemberAsync(member.Value.Id);
                }
                catch (NotFoundException)
                {
                    toBePruned.Add(member.Value.Id);
                }
            }

            int i = 0;

            foreach (var member in toBePruned)
            {
                ship.RemoveMember(member);
                ++i;
            }

            ShipList.SaveToXML(Bot.BotSettings.ShipXML);

            await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Успешно завершена очистка! Было удалено **{i}** человек.");
        }
        public async Task Rename(CommandContext ctx, [RemainingText][Description("Новое название")]
                                 string name)
        {
            var ship = ShipList.GetOwnedShip(ctx.Member.Id);

            if (ship == null)
            {
                await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Вы не являетесь владельцем корабля!");

                return;
            }

            ship.Rename(name);
            ShipList.SaveToXML(Bot.BotSettings.ShipXML);
            ShipList.ReadFromXML(Bot.BotSettings.ShipXML); //костыль адовый

            name = "☠" + name + "☠";

            await ctx.Guild.UpdateRoleAsync(ctx.Guild.GetRole(ship.Role), name);

            await ctx.Guild.GetChannel(ship.Channel).ModifyAsync(name);

            await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Успешно переименован корабль!");
        }
        public async Task List(CommandContext ctx)
        {
            var ship = ShipList.GetOwnedShip(ctx.Member.Id);

            if (ship == null)
            {
                await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Вы не являетесь владельцем корабля!");

                return;
            }

            var fs = File.Create(ship.Name + ".txt");
            var sw = new StreamWriter(fs);

            foreach (var member in ship.Members.Values)
            {
                var type = "";

                DiscordMember discordMember = null;
                try
                {
                    discordMember = await ctx.Guild.GetMemberAsync(member.Id);
                }
                catch (NotFoundException)
                {
                    continue;
                }
                var status = "";

                if (!member.Status)
                {
                    status = "приглашён";
                }
                else
                {
                    status = "член экипажа";
                }
                switch (member.Type)
                {
                case MemberType.Owner:
                    type = "Капитан";
                    break;

                case MemberType.Member:
                    type = "Матрос";
                    break;
                }
                await sw.WriteLineAsync($"{type} {discordMember.DisplayName}#{discordMember.Discriminator}. " +
                                        $"Статус: {status}. Номер: {member.Id}.");
            }

            sw.Close();
            fs.Close();

            await ctx.Member.SendFileAsync(ship.Name + ".txt",
                                           $"{Bot.BotSettings.OkEmoji} Список членов экипажа вашего корабля.");

            await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Список членов экипажа отправлен в личные сообщения!");

            File.Delete(ship.Name + ".txt"); //дабы не плодить мусор
        }