public async Task List(CommandContext ctx) { var ship = PrivateShip.GetOwnedShip(ctx.Member.Id); if (ship == null) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Вы не являетесь владельцем корабля!"); return; } var members = ship.GetMembers().OrderByDescending(m => m.Role).ToList(); await ctx.Channel.TriggerTypingAsync(); var memberList = new List <string>(); foreach (var member in members) { DiscordMember discordMember = null; try { discordMember = await ctx.Guild.GetMemberAsync(member.MemberId); } catch (NotFoundException) { continue; } var type = PrivateShipMember.RoleEnumToStringRu(member.Role); memberList.Add($"{type} {discordMember.DisplayName}#{discordMember.Discriminator}."); } var interactivity = ctx.Client.GetInteractivity(); var membersPagination = Utility.GeneratePagesInEmbeds(memberList, $"Список членов экипажа вашего корабля."); if (memberList.Count() > 1) { await interactivity.SendPaginatedMessageAsync(ctx.Channel, ctx.User, membersPagination, timeoutoverride : TimeSpan.FromMinutes(5)); } else { await ctx.RespondAsync(embed : membersPagination.First().Embed); } }
public async Task List(CommandContext ctx, [Description("Название корабля (необязательно для капитанов)")][RemainingText] string shipName = null) { PrivateShip ship = null; if (string.IsNullOrEmpty(shipName)) { ship = PrivateShip.GetOwnedShip(ctx.Member.Id); if (ship == null) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Ты не являешься капитаном. Офицеры могут использовать команду " + $"`!p list название корабля`"); 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; } var members = ship.GetMembers().OrderByDescending(m => m.Role).ToList(); await ctx.Channel.TriggerTypingAsync(); var memberList = new List <string>(); foreach (var member in members) { DiscordMember discordMember = null; try { discordMember = await ctx.Guild.GetMemberAsync(member.MemberId); } catch (NotFoundException) { continue; } var type = PrivateShipMember.RoleEnumToStringRu(member.Role); memberList.Add($"{type} {discordMember.DisplayName}#{discordMember.Discriminator}." + (member.Status ? null : " Приглашён.")); } var interactivity = ctx.Client.GetInteractivity(); var membersPagination = Utility.GeneratePagesInEmbeds(memberList, $"Список членов экипажа вашего корабля."); if (memberList.Count() > 1) { //await interactivity.SendPaginatedMessageAsync(ctx.Channel, ctx.User, membersPagination, timeoutoverride: TimeSpan.FromMinutes(5)); await interactivity.SendPaginatedMessageAsync( channel : await ctx.Member.CreateDmChannelAsync(), user : ctx.User, pages : membersPagination, behaviour : PaginationBehaviour.Ignore, deletion : ButtonPaginationBehavior.DeleteButtons, token : default);