public async Task Kick(CommandContext ctx, [Description("Участник")] DiscordMember member, [RemainingText][Description("Название корабля (необязательно для капитанов)")] string shipName) { PrivateShip ship = null; if (string.IsNullOrEmpty(shipName)) { ship = PrivateShip.GetOwnedShip(ctx.Member.Id); if (ship == null) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Ты не являешься капитаном. Офицеры могут использовать команду " + $"`!p kick участник название корабля`"); return; } } else { ship = PrivateShip.Get(shipName); if (ship == null) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Указанный корабль не был найден!"); return; } } var requesterMember = ship.GetMember(ctx.Member.Id); if (requesterMember == null || (requesterMember.Role != PrivateShipMemberRole.Officer && requesterMember.Role != PrivateShipMemberRole.Captain)) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Ты не являешься офицером или капитаном на данном корабле"); return; } if (ctx.Member == member) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Нельзя выгнать самого себя."); return; } var members = ship.GetMembers(); var selected = members.Find(m => m.MemberId == member.Id); if (selected == null) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Этого участника нет на корабле."); return; } ship.RemoveMember(selected.MemberId); await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Ты успешно выгнал участника с корабля."); try { string title = requesterMember.Role == PrivateShipMemberRole.Captain ? "Капитан" : "Офицер"; if (selected.Status) { await ctx.Guild.GetChannel(ship.Channel).AddOverwriteAsync(member); await member.SendMessageAsync($":right_facing_fist: {title} **{ctx.Member.DisplayName}#{ctx.Member.Discriminator}** " + $"выгнал тебя с корабля **{ship.Name}**"); } else { await member.SendMessageAsync($":right_facing_fist: {title} **{ctx.Member.DisplayName}#{ctx.Member.Discriminator}** " + $"отменил твоё приглашение на корабль **{ship.Name}**"); } } catch (UnauthorizedException) { } }