public async Task Invite(CommandContext ctx, [Description("Участник")] DiscordMember member, [Description("Корабль (необязательно для капитанов)")] [RemainingText] 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 invite участник название корабля`"); 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 (ship.GetMembers().Any(m => m.MemberId == member.Id)) { await ctx.RespondAsync( $"{Bot.BotSettings.ErrorEmoji} Пользователь уже приглашен или является участником корабля."); return; } ship.AddMember(member.Id, PrivateShipMemberRole.Member, false); try { await member.SendMessageAsync( $":envelope: Ты был приглашён присоединиться к кораблю **{ship.Name}**. Используй в канале для команд " + $"`!p yes {ship.Name}`, чтобы принять приглашение, или `!p no {ship.Name}`, чтобы отклонить его."); } catch (UnauthorizedException) { } await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Приглашение успешно отправлено."); }