Última actividad 1702277529

Simple api used to fetch a discord user

TheRealToxicDev's Avatar TheRealToxicDev revisó este gist 1702277529. Ir a la revisión

1 file changed, 1 insertion, 1 deletion

user.service.ts

@@ -10,7 +10,7 @@ export const fetchDiscordUser = async ({ id }): Promise<DiscordUser> => {
10 10 if (response.status >= 429) throw boom.tooManyRequests('Too many requests');
11 11 if (response.status >= 427) throw boom.tooManyRequests('Too many requests');
12 12
13 - let user = await response.json() as any;
13 + let user = await response.json() as DiscordUser;
14 14 let bannner: any = user?.banner ? user.banner : '';
15 15 let avataar: any = user?.avatar ? user.avatar : '';
16 16

TheRealToxicDev's Avatar TheRealToxicDev revisó este gist 1702277491. Ir a la revisión

2 files changed, 69 insertions

typings.d.ts(archivo creado)

@@ -0,0 +1,36 @@
1 + export type Snowflake = string;
2 +
3 + export type DiscordUser = {
4 + id: Snowflake;
5 + username?: string;
6 + global_name?: string;
7 + discriminator?: any;
8 + accent_color?: ColorData['accent_color'];
9 + banner_color?: ColorData['banner_color'];
10 + created_at?: any;
11 + avatar?: AvatarData;
12 + banner?: BannerData;
13 + }
14 +
15 + export type AvatarDecorationData = {
16 + asset: string;
17 + sku_id: string;
18 + }
19 +
20 + export type AvatarData = {
21 + id: DiscordUser['avatar'];
22 + link: string;
23 + is_animated: any;
24 + }
25 +
26 + export type BannerData = {
27 + id: DiscordUser['banner'];
28 + link: string;
29 + color: number | null;
30 + is_animated: any;
31 + }
32 +
33 + export type ColorData = {
34 + accent_color: number | any;
35 + banner_color: number | any;
36 + }

user.service.ts(archivo creado)

@@ -0,0 +1,33 @@
1 + export const fetchDiscordUser = async ({ id }): Promise<DiscordUser> => {
2 +
3 + let response = await fetch(env.DISCORD.API_URL + `users/${id}`, {
4 + headers: {
5 + 'Content-Type': 'application/json',
6 + 'Authorization': `Bot ${env.DISCORD.API_KEY}`
7 + }
8 + });
9 +
10 + if (response.status >= 429) throw boom.tooManyRequests('Too many requests');
11 + if (response.status >= 427) throw boom.tooManyRequests('Too many requests');
12 +
13 + let user = await response.json() as any;
14 + let bannner: any = user?.banner ? user.banner : '';
15 + let avataar: any = user?.avatar ? user.avatar : '';
16 +
17 + return {
18 + id: user.id,
19 + global_name: user.global_name,
20 + created_at: `${new Date(await snowflakeToTimestamp(user.id))}`,
21 + avatar: {
22 + id: avataar,
23 + link: `https://cdn.discordapp.com/avatars/${user.id}/${avataar}.png`,
24 + is_animated: avataar.startsWith('a_') ? true : false,
25 + },
26 + banner: {
27 + id: bannner,
28 + link: `https://cdn.discordapp.com/banners/${user.id}/${bannner}.png`,
29 + is_animated: bannner.startsWith('a_') ? true : false,
30 + color: user.banner_color,
31 + },
32 + };
33 + }
Siguiente Anterior