diff --git a/packages/bot/src/bot.ts b/packages/bot/src/bot.ts index b1e1a1064..0c403351f 100644 --- a/packages/bot/src/bot.ts +++ b/packages/bot/src/bot.ts @@ -215,8 +215,10 @@ export interface EventHandlers { user?: User emoji: Emoji messageAuthorId?: bigint + burst: boolean + burstColors?: string[] }) => unknown - reactionRemove: (payload: { userId: bigint; channelId: bigint; messageId: bigint; guildId?: bigint; emoji: Emoji }) => unknown + reactionRemove: (payload: { userId: bigint; channelId: bigint; messageId: bigint; guildId?: bigint; emoji: Emoji; burst: boolean }) => unknown reactionRemoveEmoji: (payload: { channelId: bigint; messageId: bigint; guildId?: bigint; emoji: Emoji }) => unknown reactionRemoveAll: (payload: { channelId: bigint; messageId: bigint; guildId?: bigint }) => unknown presenceUpdate: (presence: PresenceUpdate, oldPresence?: PresenceUpdate) => unknown diff --git a/packages/bot/src/handlers/messages/MESSAGE_REACTION_ADD.ts b/packages/bot/src/handlers/messages/MESSAGE_REACTION_ADD.ts index ab10ff59e..cdea6b723 100644 --- a/packages/bot/src/handlers/messages/MESSAGE_REACTION_ADD.ts +++ b/packages/bot/src/handlers/messages/MESSAGE_REACTION_ADD.ts @@ -17,5 +17,7 @@ export async function handleMessageReactionAdd(bot: Bot, data: DiscordGatewayPay user: payload.member ? bot.transformers.user(bot, payload.member.user) : undefined, emoji: bot.transformers.emoji(bot, payload.emoji), messageAuthorId: payload.message_author_id ? bot.transformers.snowflake(payload.message_author_id) : undefined, + burst: payload.burst, + burstColors: payload.burst_colors, }) } diff --git a/packages/bot/src/handlers/messages/MESSAGE_REACTION_REMOVE.ts b/packages/bot/src/handlers/messages/MESSAGE_REACTION_REMOVE.ts index 86be0b689..91b5853c8 100644 --- a/packages/bot/src/handlers/messages/MESSAGE_REACTION_REMOVE.ts +++ b/packages/bot/src/handlers/messages/MESSAGE_REACTION_REMOVE.ts @@ -12,5 +12,6 @@ export async function handleMessageReactionRemove(bot: Bot, data: DiscordGateway messageId: bot.transformers.snowflake(payload.message_id), guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined, emoji: bot.transformers.emoji(bot, payload.emoji), + burst: payload.burst, }) } diff --git a/packages/rest/src/routes.ts b/packages/rest/src/routes.ts index e5283c240..d9f8f8151 100644 --- a/packages/rest/src/routes.ts +++ b/packages/rest/src/routes.ts @@ -69,8 +69,9 @@ export function createRoutes(): RestRoutes { let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?` if (options) { + if (options.type) url += `type=${options.type}` // eslint-disable-next-line @typescript-eslint/restrict-template-expressions - if (options.after) url += `after=${options.after}` + if (options.after) url += `&after=${options.after}` // eslint-disable-next-line @typescript-eslint/restrict-template-expressions if (options.limit) url += `&limit=${options.limit}` } diff --git a/packages/types/src/discord.ts b/packages/types/src/discord.ts index 3cdf99ec2..963f97dbf 100644 --- a/packages/types/src/discord.ts +++ b/packages/types/src/discord.ts @@ -1416,6 +1416,12 @@ export interface DiscordReaction { burst_colors: string[] } +/** https://discord.com/developers/docs/resources/channel#get-reactions-reaction-types */ +export enum DiscordReactionType { + Normal, + Burst, +} + /** https://discord.com/developers/docs/resources/channel#reaction-count-details-object */ export interface DiscordReactionCountDetails { /** Count of super reactions */ @@ -2647,7 +2653,7 @@ export interface DiscordGuildBanAddRemove { } /** https://discord.com/developers/docs/topics/gateway#message-reaction-remove */ -export interface DiscordMessageReactionRemove extends Omit {} +export interface DiscordMessageReactionRemove extends Omit {} /** https://discord.com/developers/docs/topics/gateway#message-reaction-add */ export interface DiscordMessageReactionAdd { @@ -2665,6 +2671,12 @@ export interface DiscordMessageReactionAdd { emoji: Partial /** The id of the author of this message */ message_author_id?: string + /** true if this is a super-reaction */ + burst: boolean + /** Colors used for super-reaction animation in "#rrggbb" format */ + burst_colors?: string[] + /** The type of reaction */ + type: DiscordReactionType } /** https://discord.com/developers/docs/topics/gateway#voice-server-update */ diff --git a/packages/types/src/discordeno.ts b/packages/types/src/discordeno.ts index ad225649b..d411d89f8 100644 --- a/packages/types/src/discordeno.ts +++ b/packages/types/src/discordeno.ts @@ -17,6 +17,7 @@ import type { DiscordPollAnswer, DiscordPollLayoutType, DiscordPollMedia, + DiscordReactionType, DiscordRole, } from './discord.js' import type { @@ -351,6 +352,7 @@ export type GetMessagesOptions = GetMessagesAfter | GetMessagesBefore | GetMessa /** https://discord.com/developers/docs/resources/channel#get-reactions-query-string-params */ export interface GetReactions { + type: DiscordReactionType /** Get users after this user Id */ after?: string /** Max number of users to return (1-100) */