public Embed ToEmbed(Server server, Command command) { EmbedBuilder embedBuilder = new EmbedBuilder() .WithThumbnailUrl("https://valkyrja.app/img/valkyrja-geared-517p.png") .WithColor(196, 255, 255) .WithTitle($"`{server.Config.CommandPrefix}{command.Id} {this.ArgsList}`") .WithDescription(command.Description) .AddField("Arguments", string.IsNullOrEmpty(this.ArgumentDescription) ? "None" : this.ArgumentDescription, false); CommandOptions options = server.GetCommandOptions(command.Id); string permissionString = $"`{options.PermissionOverrides.ToString()}`"; if (options.PermissionOverrides == PermissionOverrides.Default) { PermissionOverrides permissions = PermissionOverrides.Default; switch (command.RequiredPermissions) { case PermissionType.ServerOwner: permissions = PermissionOverrides.ServerOwner; break; case PermissionType.ServerOwner | PermissionType.Admin: permissions = PermissionOverrides.Admins; break; case PermissionType.ServerOwner | PermissionType.Admin | PermissionType.Moderator: permissions = PermissionOverrides.Moderators; break; case PermissionType.ServerOwner | PermissionType.Admin | PermissionType.Moderator | PermissionType.SubModerator: permissions = PermissionOverrides.SubModerators; break; case PermissionType.ServerOwner | PermissionType.Admin | PermissionType.Moderator | PermissionType.SubModerator | PermissionType.Member: permissions = PermissionOverrides.Members; break; default: permissions = PermissionOverrides.Everyone; break; } permissionString += $" -> `{permissions.ToString()}`"; } string aliases = ""; List <CustomAlias> customAliases = server.CustomAliases.Values.Where(a => a.CommandId == command.Id).ToList(); int totalAliasCount = command.Aliases?.Count ?? 0 + customAliases.Count; int i = 0; if (command.Aliases != null && command.Aliases.Any()) { for ( ; i < command.Aliases.Count; i++) { aliases += $"{(i == 0 ? "`" : i == totalAliasCount - 1 ? " and `" : ", `")}{server.Config.CommandPrefix}{command.Aliases[i]}`"; } } if (customAliases.Any()) { for (int j = command.Aliases?.Count ?? 0; i < totalAliasCount; i++) { aliases += $"{(i-j == 0 && string.IsNullOrEmpty(aliases) ? "`" : i-j == totalAliasCount - 1 ? " and `" : ", `")}{server.Config.CommandPrefix}{customAliases[i-j].Alias}`"; } } embedBuilder.AddField("Permissions", permissionString, !string.IsNullOrEmpty(aliases)); if (!string.IsNullOrEmpty(aliases)) { embedBuilder.AddField("Aliases", aliases, true); } if (command.IsPremiumCommand || command.IsPremiumCommand || command.IsBonusCommand || command.IsBonusAdminCommand) { string flags = ""; if (command.IsBonusCommand) { flags += "Bonus command.\n"; } if (command.IsBonusAdminCommand) { flags += "Bonus command for admins.\n"; } if (command.IsPremiumCommand) { flags += "Premium command.\n"; } if (command.IsPremiumServerwideCommand) { flags += "Premium server-wide command."; } embedBuilder.AddField("Special Flags", flags, true); } IEnumerable <CommandChannelOptions> commandChannelOptions = server.GetCommandChannelOptions(command.Id); List <CommandChannelOptions> blockedChannels = commandChannelOptions.Where(c => c.ServerId == server.Id && c.CommandId == command.Id && c.Blocked).ToList(); List <CommandChannelOptions> allowedChannels = commandChannelOptions.Where(c => c.ServerId == server.Id && c.CommandId == command.Id && c.Allowed).ToList(); if (blockedChannels.Any()) { StringBuilder blockedChannelsBuilder = new StringBuilder(); foreach (CommandChannelOptions channelOptions in blockedChannels) { blockedChannelsBuilder.Append($"<#{channelOptions.ChannelId}> "); } embedBuilder.AddField("Blocked Channels", blockedChannelsBuilder.ToString(), allowedChannels.Any()); } if (allowedChannels.Any()) { StringBuilder allowedChannelsBuilder = new StringBuilder(); foreach (CommandChannelOptions channelOptions in allowedChannels) { if (blockedChannels.Any(c => c.ChannelId == channelOptions.ChannelId)) { continue; } allowedChannelsBuilder.Append($"<#{channelOptions.ChannelId}> "); } embedBuilder.AddField("Allowed Channels", allowedChannelsBuilder.Length == 0 ? " " : allowedChannelsBuilder.ToString(), blockedChannels.Any()); } if (options.DeleteReply && options.DeleteRequest) { embedBuilder.AddField("Delete Flags", "This command will attempt to delete both, the message that issued the command and Valkyrja's response.", false); } else if (options.DeleteReply) { embedBuilder.AddField("Delete Flags", "This command will attempt to delete Valkyrja's response.", false); } else if (options.DeleteRequest) { embedBuilder.AddField("Delete Flags", "This command will attempt to delete the message that issued the command.", false); } return(embedBuilder.Build()); }
} //Necessary evul. public CommandArguments(IValkyrjaClient client, Command command, Server server, SocketTextChannel channel, SocketMessage message, string commandId, string trimmedMessage, string[] messageArgs, CommandOptions options = null) { this.Client = client; this.Command = command; this.CommandOptions = options; this.Server = server; this.Channel = channel; this.Message = message; this.CommandId = commandId; this.TrimmedMessage = trimmedMessage; this.MessageArgs = messageArgs; }