@@ -844,6 +844,262 @@ export const Routes = {
844
844
} ,
845
845
} ;
846
846
847
+ export const StickerPackApplicationId = '710982414301790216' ;
848
+
849
+ export const CDNRoutes = {
850
+ /**
851
+ * Route for:
852
+ * - GET `/emojis/{emoji.id}.{png|jpeg|webp|gif}`
853
+ *
854
+ * As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
855
+ *
856
+ * This route supports the extensions: PNG, JPEG, WebP, GIF
857
+ */
858
+ emoji ( emojiId : Snowflake , format : EmojiFormat ) {
859
+ return `/emojis/${ emojiId } .${ format } ` as const ;
860
+ } ,
861
+
862
+ /**
863
+ * Route for:
864
+ * - GET `/guilds/{guild.id}/icons/{guild.id}.{png|jpeg|webp|gif}`
865
+ *
866
+ * As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
867
+ *
868
+ * This route supports the extensions: PNG, JPEG, WebP, GIF
869
+ */
870
+ guildIcon ( guildId : Snowflake , guildIcon : string , format : GuildIconFormat ) {
871
+ return `icons/${ guildId } /${ guildIcon } .${ format } ` as const ;
872
+ } ,
873
+
874
+ /**
875
+ * Route for:
876
+ * - GET `/splashes/{guild.id}/{guild.splash}.{png|jpeg|webp}`
877
+ *
878
+ * This route supports the extensions: PNG, JPEG, WebP
879
+ */
880
+ guildSplash ( guildId : Snowflake , guildSplash : string , format : GuildSplashFormat ) {
881
+ return `/splashes/${ guildId } /${ guildSplash } .${ format } ` as const ;
882
+ } ,
883
+
884
+ /**
885
+ * Route for:
886
+ * - GET `/discovery-splashes/{guild.id}/{guild.discovery_splash}.{png|jpeg|webp}`
887
+ *
888
+ * This route supports the extensions: PNG, JPEG, WebP
889
+ */
890
+ guildDiscoverySplash ( guildId : Snowflake , guildDiscoverySplash : string , format : GuildDiscoverySplashFormat ) {
891
+ return `/discovery-splashes/${ guildId } /${ guildDiscoverySplash } .${ format } ` as const ;
892
+ } ,
893
+
894
+ /**
895
+ * Route for:
896
+ * - GET `/banners/{guild.id}/{guild.banner}.{png|jpeg|webp|gif}`
897
+ *
898
+ * As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
899
+ *
900
+ * This route supports the extensions: PNG, JPEG, WebP, GIF
901
+ */
902
+ guildBanner ( guildId : Snowflake , guildBanner : string , format : GuildBannerFormat ) {
903
+ return `/banners/${ guildId } /${ guildBanner } .${ format } ` as const ;
904
+ } ,
905
+
906
+ /**
907
+ * Route for:
908
+ * - GET `/banners/{user.id}/{user.banner}.{png|jpeg|webp|gif}`
909
+ *
910
+ * As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
911
+ *
912
+ * This route supports the extensions: PNG, JPEG, WebP, GIF
913
+ */
914
+ userBanner ( userId : Snowflake , userBanner : string , format : UserBannerFormat ) {
915
+ return `/banners/${ userId } /${ userBanner } .${ format } ` as const ;
916
+ } ,
917
+
918
+ /**
919
+ * Route for:
920
+ * - GET `/embed/avatars/{user.discriminator % 5}.png`
921
+ *
922
+ * The `userDiscriminator` parameter should be the user discriminator modulo 5 (e.g. 1337 % 5 = 2)
923
+ *
924
+ * This route supports the extension: PNG
925
+ */
926
+ defaultUserAvatar ( userDiscriminator : DefaultUserAvatarAssets ) {
927
+ return `/embed/avatars/${ userDiscriminator } .png` as const ;
928
+ } ,
929
+
930
+ /**
931
+ * Route for:
932
+ * - GET `/avatars/{user.id}/{user.avatar}.{png|jpeg|webp|gif}`
933
+ *
934
+ * As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
935
+ *
936
+ * This route supports the extensions: PNG, JPEG, WebP, GIF
937
+ */
938
+ userAvatar ( userId : Snowflake , userAvatar : string , format : UserAvatarFormat ) {
939
+ return `/avatars/${ userId } /${ userAvatar } .${ format } ` as const ;
940
+ } ,
941
+
942
+ /**
943
+ * Route for:
944
+ * - GET `/guilds/{guild.id}/users/{user.id}/{guild_member.avatar}.{png|jpeg|webp|gif}`
945
+ *
946
+ * As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
947
+ *
948
+ * This route supports the extensions: PNG, JPEG, WebP, GIF
949
+ */
950
+ guildMemberAvatar ( guildId : Snowflake , userId : Snowflake , memberAvatar : string , format : GuildMemberAvatarFormat ) {
951
+ return `/guilds/${ guildId } /users/${ userId } /avatars/${ memberAvatar } .${ format } ` as const ;
952
+ } ,
953
+
954
+ /**
955
+ * Route for:
956
+ * - GET `/app-icons/{application.id}/{application.icon}.{png|jpeg|webp}`
957
+ *
958
+ * This route supports the extensions: PNG, JPEG, WebP
959
+ */
960
+ applicationIcon ( applicationId : Snowflake , applicationIcon : string , format : ApplicationIconFormat ) {
961
+ return `/app-icons/${ applicationId } /${ applicationIcon } .${ format } ` as const ;
962
+ } ,
963
+
964
+ /**
965
+ * Route for:
966
+ * - GET `/app-icons/{application.id}/{application.cover_image}.{png|jpeg|webp}`
967
+ *
968
+ * This route supports the extensions: PNG, JPEG, WebP
969
+ */
970
+ applicationCover ( applicationId : Snowflake , applicationCoverImage : string , format : ApplicationCoverFormat ) {
971
+ return `/app-icons/${ applicationId } /${ applicationCoverImage } .${ format } ` as const ;
972
+ } ,
973
+
974
+ /**
975
+ * Route for:
976
+ * - GET `/app-icons/{application.id}/{application.asset_id}.{png|jpeg|webp}`
977
+ *
978
+ * This route supports the extensions: PNG, JPEG, WebP
979
+ */
980
+ applicationAsset ( applicationId : Snowflake , applicationAssetId : string , format : ApplicationAssetFormat ) {
981
+ return `/app-icons/${ applicationId } /${ applicationAssetId } .${ format } ` as const ;
982
+ } ,
983
+
984
+ /**
985
+ * Route for:
986
+ * - GET `/app-assets/{application.id}/achievements/{achievement.id}/icons/{achievement.icon}.{png|jpeg|webp}`
987
+ *
988
+ * This route supports the extensions: PNG, JPEG, WebP
989
+ */
990
+ achievementIcon (
991
+ applicationId : Snowflake ,
992
+ achievementId : Snowflake ,
993
+ achievementIconHash : string ,
994
+ format : AchievementIconFormat ,
995
+ ) {
996
+ return `/app-assets/${ applicationId } /achievements/${ achievementId } /icons/${ achievementIconHash } .${ format } ` as const ;
997
+ } ,
998
+
999
+ /**
1000
+ * Route for:
1001
+ * - GET `/app-assets/710982414301790216/store/{sticker_pack.banner.asset_id}.{png|jpeg|webp}`
1002
+ *
1003
+ * This route supports the extensions: PNG, JPEG, WebP
1004
+ */
1005
+ stickerPackBanner ( stickerPackBannerAssetId : Snowflake , format : StickerPackBannerFormat ) {
1006
+ return `/app-assets/${ StickerPackApplicationId } /store/${ stickerPackBannerAssetId } .${ format } ` as const ;
1007
+ } ,
1008
+
1009
+ /**
1010
+ * Route for:
1011
+ * - GET `team-icons/{team.id}/{team.icon}.{png|jpeg|webp}`
1012
+ *
1013
+ * This route supports the extensions: PNG, JPEG, WebP
1014
+ */
1015
+ teamIcon ( teamId : Snowflake , teamIcon : string , format : TeamIconFormat ) {
1016
+ return `/team-icons/${ teamId } /${ teamIcon } .${ format } ` as const ;
1017
+ } ,
1018
+
1019
+ /**
1020
+ * Route for:
1021
+ * - GET `/stickers/{sticker.id}.{png|json}`
1022
+ *
1023
+ * This route supports the extensions: PNG, Lottie
1024
+ */
1025
+ sticker ( stickerId : Snowflake , format : StickerFormat ) {
1026
+ return `/stickers/${ stickerId } .${ format } ` as const ;
1027
+ } ,
1028
+
1029
+ /**
1030
+ * Route for:
1031
+ * - GET `/role-icons/{role.id}/{role.icon}.{png|jpeg|webp}`
1032
+ *
1033
+ * This route supports the extensions: PNG, JPEG, WebP
1034
+ */
1035
+ roleIcon ( roleId : Snowflake , roleIcon : string , format : RoleIconFormat ) {
1036
+ return `/role-icons/${ roleId } /${ roleIcon } .${ format } ` as const ;
1037
+ } ,
1038
+
1039
+ /**
1040
+ * Route for:
1041
+ * - GET `/guild-events/{guild_scheduled_event.id}/{guild_scheduled_event.image}.{png|jpeg|webp}`
1042
+ *
1043
+ * This route supports the extensions: PNG, JPEG, WebP
1044
+ */
1045
+ guildScheduledEventCover (
1046
+ guildScheduledEventId : Snowflake ,
1047
+ guildScheduledEventCoverImage : string ,
1048
+ format : GuildScheduledEventCoverFormat ,
1049
+ ) {
1050
+ return `/guild-events/${ guildScheduledEventId } /${ guildScheduledEventCoverImage } .${ format } ` as const ;
1051
+ } ,
1052
+
1053
+ /**
1054
+ * Route for:
1055
+ * - GET `/guilds/${guild.id}/users/${user.id}/banners/${guild_member.banner}.{png|jpeg|webp|gif}`
1056
+ *
1057
+ * This route supports the extensions: PNG, JPEG, WebP, GIF
1058
+ */
1059
+ guildMemberBanner ( guildId : Snowflake , userId : Snowflake , guildMemberBanner : string , format : GuildMemberBannerFormat ) {
1060
+ return `/guilds/${ guildId } /users/${ userId } /banners/${ guildMemberBanner } .${ format } ` as const ;
1061
+ } ,
1062
+ } ;
1063
+
1064
+ export type DefaultUserAvatarAssets = 0 | 1 | 2 | 3 | 4 | 5 ;
1065
+
1066
+ export type EmojiFormat = Exclude < ImageFormat , ImageFormat . Lottie > ;
1067
+ export type GuildIconFormat = Exclude < ImageFormat , ImageFormat . Lottie > ;
1068
+ export type GuildSplashFormat = Exclude < ImageFormat , ImageFormat . Lottie | ImageFormat . GIF > ;
1069
+ export type GuildDiscoverySplashFormat = Exclude < ImageFormat , ImageFormat . Lottie | ImageFormat . GIF > ;
1070
+ export type GuildBannerFormat = Exclude < ImageFormat , ImageFormat . Lottie > ;
1071
+ export type UserBannerFormat = Exclude < ImageFormat , ImageFormat . Lottie > ;
1072
+ export type DefaultUserAvatar = Extract < ImageFormat , ImageFormat . PNG > ;
1073
+ export type UserAvatarFormat = Exclude < ImageFormat , ImageFormat . Lottie > ;
1074
+ export type GuildMemberAvatarFormat = Exclude < ImageFormat , ImageFormat . Lottie > ;
1075
+ export type ApplicationIconFormat = Exclude < ImageFormat , ImageFormat . Lottie | ImageFormat . GIF > ;
1076
+ export type ApplicationCoverFormat = Exclude < ImageFormat , ImageFormat . Lottie | ImageFormat . GIF > ;
1077
+ export type ApplicationAssetFormat = Exclude < ImageFormat , ImageFormat . Lottie | ImageFormat . GIF > ;
1078
+ export type AchievementIconFormat = Exclude < ImageFormat , ImageFormat . Lottie | ImageFormat . GIF > ;
1079
+ export type StickerPackBannerFormat = Exclude < ImageFormat , ImageFormat . Lottie | ImageFormat . GIF > ;
1080
+ export type TeamIconFormat = Exclude < ImageFormat , ImageFormat . Lottie | ImageFormat . GIF > ;
1081
+ export type StickerFormat = Extract < ImageFormat , ImageFormat . PNG | ImageFormat . Lottie > ;
1082
+ export type RoleIconFormat = Exclude < ImageFormat , ImageFormat . Lottie | ImageFormat . GIF > ;
1083
+ export type GuildScheduledEventCoverFormat = Exclude < ImageFormat , ImageFormat . Lottie | ImageFormat . GIF > ;
1084
+ export type GuildMemberBannerFormat = Exclude < ImageFormat , ImageFormat . Lottie > ;
1085
+
1086
+ export enum ImageFormat {
1087
+ JPEG = 'jpeg' ,
1088
+ PNG = 'png' ,
1089
+ WebP = 'webp' ,
1090
+ GIF = 'gif' ,
1091
+ Lottie = 'json' ,
1092
+ }
1093
+
1094
+ export interface CDNQuery {
1095
+ /**
1096
+ * The returned image can have the size changed by using this query parameter
1097
+ *
1098
+ * Image size can be any power of two between 16 and 4096
1099
+ */
1100
+ size ?: number ;
1101
+ }
1102
+
847
1103
export const RouteBases = {
848
1104
api : `https://discord.com/api/v${ APIVersion } ` ,
849
1105
cdn : 'https://cdn.discordapp.com' ,
0 commit comments