feat(bot,rest,types): Add burst (super reaction) informations on events & DiscordReactionType (#3615)

* Add GetReactions#type & DiscordReactionType

* Add burst and burstColors to reaction add/remove events

The reaction remove event only has burst, not burstColors

* Add type to message reaction add/remove

* Fix type error

---------

Co-authored-by: Skillz4Killz <23035000+Skillz4Killz@users.noreply.github.com>
This commit is contained in:
Fleny
2024-07-07 17:26:35 +02:00
committed by GitHub
parent b16e9b70a0
commit 49ce2e44df
6 changed files with 23 additions and 3 deletions

View File

@@ -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

View File

@@ -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,
})
}

View File

@@ -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,
})
}

View File

@@ -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}`
}

View File

@@ -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<DiscordMessageReactionAdd, 'member'> {}
export interface DiscordMessageReactionRemove extends Omit<DiscordMessageReactionAdd, 'member' | 'burst_colors'> {}
/** https://discord.com/developers/docs/topics/gateway#message-reaction-add */
export interface DiscordMessageReactionAdd {
@@ -2665,6 +2671,12 @@ export interface DiscordMessageReactionAdd {
emoji: Partial<DiscordEmoji>
/** 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 */

View File

@@ -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) */