mirror of
https://github.com/xHyroM/roles-bot.git
synced 2024-12-22 13:51:04 +01:00
support for custom emojis
This commit is contained in:
parent
0a2480a5ad
commit
1dd0e589d0
2 changed files with 24 additions and 5 deletions
|
@ -1,5 +1,6 @@
|
|||
import { APIApplicationCommandInteraction, APIInteractionResponse, APIMessageComponentInteraction, APIPingInteraction, InteractionResponseType, InteractionType, MessageFlags, RouteBases, Routes } from 'discord-api-types/v9';
|
||||
import { isJSON } from './isJson';
|
||||
import { isSnowflake } from './snowflakeUtils';
|
||||
import { verify } from './verify';
|
||||
|
||||
const respond = (response: APIInteractionResponse) => new Response(JSON.stringify(response), {headers: {'content-type': 'application/json'}})
|
||||
|
@ -49,16 +50,19 @@ export const handleRequest = async(request: Request): Promise<Response> => {
|
|||
if (!roles || Object.values(json.roles).filter((role: any) => role.id && role.label).length === 0 || roles.length === 0 || roles.length > 25) return badFormatting(roles.length > 25);
|
||||
|
||||
roles = roles.map((r: any) => {
|
||||
return {
|
||||
let o: any = {
|
||||
type: 2,
|
||||
style: r.style || 2,
|
||||
label: r.label,
|
||||
emoji: {
|
||||
id: null,
|
||||
name: r.emoji
|
||||
},
|
||||
custom_id: r.id
|
||||
}
|
||||
|
||||
if (r.emoji) {
|
||||
if (isSnowflake(r.emoji)) o.emoji = { id: r.emoji, name: null };
|
||||
else o.emoji = { id: null, name: r.emoji };
|
||||
}
|
||||
|
||||
return o;
|
||||
})
|
||||
|
||||
const finalComponents = [];
|
||||
|
|
15
src/bot/snowflakeUtils.ts
Normal file
15
src/bot/snowflakeUtils.ts
Normal file
|
@ -0,0 +1,15 @@
|
|||
export const toSnowflake = (snowflake: number, epoch = DISCORD_EPOCH) => {
|
||||
return new Date(snowflake / 4194304 + epoch)
|
||||
}
|
||||
|
||||
export const DISCORD_EPOCH = 1420070400000;
|
||||
|
||||
export const isSnowflake = (snowflake: number, epoch?: number) => {
|
||||
if (!Number.isInteger(+snowflake)) return false;
|
||||
if (snowflake < 4194304) return false;
|
||||
|
||||
const timestamp = toSnowflake(snowflake, epoch);
|
||||
if (isNaN(timestamp.getTime())) return false;
|
||||
|
||||
return true;
|
||||
}
|
Loading…
Reference in a new issue