feat(bot,types): Add MessageCall (#3628)

* Add message#call

* Update message transformer for message calls

Co-authored-by: LTS20050703 <lts20050703@gmail.com>

---------

Co-authored-by: LTS20050703 <lts20050703@gmail.com>
This commit is contained in:
Fleny
2024-05-26 18:07:45 +00:00
committed by GitHub
co-authored by LTS20050703
parent 8e011210e2
commit 541dc3b0cf
3 changed files with 54 additions and 1 deletions
+23 -1
View File
@@ -31,6 +31,7 @@ import type {
DiscordInviteStageInstance,
DiscordMember,
DiscordMessage,
DiscordMessageCall,
DiscordMessageInteractionMetadata,
DiscordPoll,
DiscordPollMedia,
@@ -86,7 +87,14 @@ import { transformIntegration, type Integration } from './transformers/integrati
import { transformInteraction, transformInteractionDataOption, type Interaction, type InteractionDataOption } from './transformers/interaction.js'
import { transformInvite, type Invite } from './transformers/invite.js'
import { transformMember, type Member } from './transformers/member.js'
import { transformMessage, type Message, type MessageInteractionMetadata, transformMessageInteractionMetadata } from './transformers/message.js'
import {
transformMessage,
transformMessageCall,
transformMessageInteractionMetadata,
type Message,
type MessageCall,
type MessageInteractionMetadata,
} from './transformers/message.js'
import { transformGuildOnboarding, type GuildOnboarding } from './transformers/onboarding.js'
import { transformPoll, transformPollMedia, type Poll, type PollMedia } from './transformers/poll.js'
import { transformPresence, type PresenceUpdate } from './transformers/presence.js'
@@ -122,6 +130,7 @@ export interface Transformers {
interaction: (bot: Bot, payload: DiscordInteraction, interaction: Interaction) => any
message: (bot: Bot, payload: DiscordMessage, message: Message) => any
messageInteractionMetadata: (bot: Bot, payload: DiscordMessageInteractionMetadata, metadata: MessageInteractionMetadata) => any
messageCall: (bot: Bot, payload: DiscordMessageCall, call: MessageCall) => any
user: (bot: Bot, payload: DiscordUser, user: User) => any
member: (bot: Bot, payload: DiscordMember, member: Member) => any
role: (bot: Bot, payload: DiscordRole, role: Role) => any
@@ -380,6 +389,10 @@ export interface Transformers {
thread: boolean
type: boolean
webhookId: boolean
call: {
participants: boolean
endedTimestamp: boolean
}
}
role: {
name: boolean
@@ -574,6 +587,7 @@ export interface Transformers {
member: (bot: Bot, payload: DiscordMember, guildId: BigString, userId: BigString) => Member
message: (bot: Bot, payload: DiscordMessage) => Message
messageInteractionMetadata: (bot: Bot, payload: DiscordMessageInteractionMetadata) => MessageInteractionMetadata
messageCall: (bot: Bot, payload: DiscordMessageCall) => MessageCall
role: (bot: Bot, payload: { role: DiscordRole } & { guildId: BigString }) => Role
voiceState: (bot: Bot, payload: { voiceState: DiscordVoiceState } & { guildId: bigint }) => VoiceState
interaction: (bot: Bot, payload: DiscordInteraction) => Interaction
@@ -648,6 +662,9 @@ export function createTransformers(options: Partial<Transformers>, opts?: Create
messageInteractionMetadata(bot, payload, metadata) {
return metadata
},
messageCall(bot, payload, call) {
return call
},
role(bot, payload, role) {
return role
},
@@ -979,6 +996,10 @@ export function createTransformers(options: Partial<Transformers>, opts?: Create
thread: opts?.defaultDesiredPropertiesValue ?? false,
type: opts?.defaultDesiredPropertiesValue ?? false,
webhookId: opts?.defaultDesiredPropertiesValue ?? false,
call: {
participants: opts?.defaultDesiredPropertiesValue ?? false,
endedTimestamp: opts?.defaultDesiredPropertiesValue ?? false,
},
},
role: {
name: opts?.defaultDesiredPropertiesValue ?? false,
@@ -1181,6 +1202,7 @@ export function createTransformers(options: Partial<Transformers>, opts?: Create
member: options.member ?? transformMember,
message: options.message ?? transformMessage,
messageInteractionMetadata: options.messageInteractionMetadata ?? transformMessageInteractionMetadata,
messageCall: options.messageCall ?? transformMessageCall,
presence: options.presence ?? transformPresence,
role: options.role ?? transformRole,
user: options.user ?? transformUser,
+21
View File
@@ -1,6 +1,7 @@
import {
DiscordApplicationIntegrationType,
type DiscordMessage,
type DiscordMessageCall,
type DiscordMessageInteractionMetadata,
type InteractionTypes,
type MessageActivityTypes,
@@ -270,6 +271,8 @@ export interface Message extends MessageBase {
thread?: Channel
/** If the message is generated by a webhook, this is the webhook's id */
webhookId?: bigint
/** The call associated with the message */
call?: MessageCall
}
const EMPTY_STRING = ''
@@ -383,6 +386,7 @@ export function transformMessage(bot: Bot, payload: DiscordMessage): Message {
if (props.thread && payload.thread) message.thread = bot.transformers.channel(bot, { channel: payload.thread, guildId })
if (props.type) message.type = payload.type
if (props.webhookId && payload.webhook_id) message.webhookId = bot.transformers.snowflake(payload.webhook_id)
if (props.call && payload.call) message.call = bot.transformers.messageCall(bot, payload.call)
return bot.transformers.customizers.message(bot, payload, message)
}
@@ -415,6 +419,16 @@ export function transformMessageInteractionMetadata(bot: Bot, payload: DiscordMe
return bot.transformers.customizers.messageInteractionMetadata(bot, payload, metadata)
}
export function transformMessageCall(bot: Bot, payload: DiscordMessageCall): MessageCall {
const call = {} as MessageCall
const props = bot.transformers.desiredProperties.message.call
if (props.participants && payload.participants) call.participants = payload.participants.map((x) => bot.transformers.snowflake(x))
if (props.endedTimestamp && payload.ended_timestamp) call.endedTimestamp = Date.parse(payload.ended_timestamp)
return bot.transformers.customizers.messageCall(bot, payload, call)
}
export interface MessageInteractionMetadata {
/** Id of the interaction */
id: bigint
@@ -431,3 +445,10 @@ export interface MessageInteractionMetadata {
/** Metadata for the interaction that was used to open the modal, present only on modal submit interactions */
triggeringInteractionMetadata?: MessageInteractionMetadata
}
export interface MessageCall {
/** Array of user object ids that participated in the call */
participants: bigint[]
/** Time when call ended */
endedTimestamp: number
}
+10
View File
@@ -1368,6 +1368,16 @@ export interface DiscordMessage {
position?: number
/** The poll object */
poll?: DiscordPoll
/** The call associated with the message */
call?: DiscordMessageCall
}
/** https://discord.com/developers/docs/resources/channel#message-call-object */
export interface DiscordMessageCall {
/** Array of user object ids that participated in the call */
participants: string[]
/** Time when call ended */
ended_timestamp: string
}
/** https://discord.com/developers/docs/resources/channel#channel-mention-object */