mirror of
https://github.com/discordeno/discordeno.git
synced 2026-09-17 08:47:22 +00:00
feat: api docs catchup part 2 (#3266)
* add guild safety | closes #3020 * Adds approx guild count | closes #3078 * Team member permissions | closes #3105 According to current documentation DiscordTeamMemberRole#Owner does not have a value anymore, in this commit it still had so it is included to be changed by a later commit * Default thread ratelimit | closes #3216 * Entitlements and SKUs | closes #3219 The entitlements events needs testing for the typing * Typing endpoint docs update | closes #3222 * Add guildScheduledEventId to CreateStageInstance | closes #3228 * Add listSkus helper I did forget it in the commit before * Update Application Endpoints | closes #3230 * Update documentation | closes #3233 * fix starting a thread in forum | closes #3234 & closes #3036 * Add fired events on get widget endpoint | closes #3235 * Add fired events on get widget endpoint pt2 | closes #3236 * Update SKU and Entitlement fields | closes #3238 * Split permissions for expressions and events | closes #3249 * Make GetEntitlements#excludeEnded more specific | closes #3251 * Fix thread/forum channel docs regression | closes #3252 * Another description change for GetEntitlements#excludeEnded | closes #3253 * Document applied_tags on Execute Webhook | closes #3265 * Fix entitlement event types
This commit is contained in:
@@ -13,6 +13,7 @@ import type { AutoModerationActionExecution } from './transformers/automodAction
|
||||
import type { AutoModerationRule } from './transformers/automodRule.js'
|
||||
import type { Channel } from './transformers/channel.js'
|
||||
import type { Emoji } from './transformers/emoji.js'
|
||||
import { type Entitlement } from './transformers/entitlement.js'
|
||||
import type { Guild } from './transformers/guild.js'
|
||||
import type { Integration } from './transformers/integration.js'
|
||||
import type { Interaction } from './transformers/interaction.js'
|
||||
@@ -225,4 +226,7 @@ export interface EventHandlers {
|
||||
webhooksUpdate: (payload: { channelId: bigint; guildId: bigint }) => unknown
|
||||
botUpdate: (user: User) => unknown
|
||||
typingStart: (payload: { guildId: bigint | undefined; channelId: bigint; userId: bigint; timestamp: number; member: Member | undefined }) => unknown
|
||||
entitlementCreate: (entitlement: Entitlement) => unknown
|
||||
entitlementUpdate: (entitlement: Entitlement) => unknown
|
||||
entitlementDelete: (entitlement: Entitlement) => unknown
|
||||
}
|
||||
|
||||
@@ -66,6 +66,9 @@ export function createBotGatewayHandlers(
|
||||
VOICE_SERVER_UPDATE: options.VOICE_SERVER_UPDATE ?? handlers.handleVoiceServerUpdate,
|
||||
VOICE_STATE_UPDATE: options.VOICE_STATE_UPDATE ?? handlers.handleVoiceStateUpdate,
|
||||
WEBHOOKS_UPDATE: options.WEBHOOKS_UPDATE ?? handlers.handleWebhooksUpdate,
|
||||
ENTITLEMENT_CREATE: options.ENTITLEMENT_CREATE ?? handlers.handleEntitlementCreate,
|
||||
ENTITLEMENT_UPDATE: options.ENTITLEMENT_UPDATE ?? handlers.handleEntitlementUpdate,
|
||||
ENTITLEMENT_DELETE: options.ENTITLEMENT_DELETE ?? handlers.handleEntitlementDelete,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
import type { DiscordEntitlement, DiscordGatewayPayload } from '@discordeno/types'
|
||||
import type { Bot } from '../../bot.js'
|
||||
|
||||
export async function handleEntitlementCreate(bot: Bot, data: DiscordGatewayPayload): Promise<void> {
|
||||
if (!bot.events.entitlementCreate) return
|
||||
|
||||
const payload = data.d as DiscordEntitlement
|
||||
bot.events.entitlementCreate(bot.transformers.entitlement(bot, payload))
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import type { DiscordEntitlement, DiscordGatewayPayload } from '@discordeno/types'
|
||||
import type { Bot } from '../../bot.js'
|
||||
|
||||
export async function handleEntitlementDelete(bot: Bot, data: DiscordGatewayPayload): Promise<void> {
|
||||
if (!bot.events.entitlementDelete) return
|
||||
|
||||
const payload = data.d as DiscordEntitlement
|
||||
bot.events.entitlementDelete(bot.transformers.entitlement(bot, payload))
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import type { DiscordEntitlement, DiscordGatewayPayload } from '@discordeno/types'
|
||||
import type { Bot } from '../../bot.js'
|
||||
|
||||
export async function handleEntitlementUpdate(bot: Bot, data: DiscordGatewayPayload): Promise<void> {
|
||||
if (!bot.events.entitlementUpdate) return
|
||||
|
||||
const payload = data.d as DiscordEntitlement
|
||||
bot.events.entitlementUpdate(bot.transformers.entitlement(bot, payload))
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
export * from './ENTITLEMENT_CREATE.js'
|
||||
export * from './ENTITLEMENT_DELETE.js'
|
||||
export * from './ENTITLEMENT_UPDATE.js'
|
||||
@@ -1,5 +1,6 @@
|
||||
export * from './channels/index.js'
|
||||
export * from './emojis/index.js'
|
||||
export * from './entitlements/index.js'
|
||||
export * from './guilds/index.js'
|
||||
export * from './integrations/index.js'
|
||||
export * from './interactions/index.js'
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import type { DiscordGatewayPayload, DiscordInviteCreate } from '@discordeno/types'
|
||||
import type { Bot } from '../../index.js'
|
||||
|
||||
export async function handleInviteCreate(bot: Bot, data: DiscordGatewayPayload): Promise<void> {
|
||||
export async function handleInviteCreate(bot: Bot, data: DiscordGatewayPayload, shardId: number): Promise<void> {
|
||||
if (!bot.events.inviteCreate) return
|
||||
|
||||
bot.events.inviteCreate(bot.transformers.invite(bot, data.d as DiscordInviteCreate))
|
||||
bot.events.inviteCreate(bot.transformers.invite(bot, { invite: data.d as DiscordInviteCreate, shardId }))
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import type {
|
||||
CreateApplicationCommand,
|
||||
CreateAutoModerationRuleOptions,
|
||||
CreateChannelInvite,
|
||||
CreateEntitlement,
|
||||
CreateForumPostWithMessage,
|
||||
CreateGlobalApplicationCommandOptions,
|
||||
CreateGuild,
|
||||
@@ -44,7 +45,9 @@ import type {
|
||||
CreateStageInstance,
|
||||
CreateTemplate,
|
||||
DeleteWebhookMessageOptions,
|
||||
DiscordEntitlement,
|
||||
DiscordMessage,
|
||||
EditApplication,
|
||||
EditAutoModerationRuleOptions,
|
||||
EditBotMemberOptions,
|
||||
EditChannelPermissionOverridesOptions,
|
||||
@@ -58,6 +61,7 @@ import type {
|
||||
ExecuteWebhook,
|
||||
GetApplicationCommandPermissionOptions,
|
||||
GetBans,
|
||||
GetEntitlements,
|
||||
GetGroupDmOptions,
|
||||
GetGuildAuditLog,
|
||||
GetGuildPruneCountQuery,
|
||||
@@ -95,6 +99,7 @@ import type { ApplicationCommandPermission } from './transformers/applicationCom
|
||||
import type { AutoModerationRule } from './transformers/automodRule.js'
|
||||
import type { Channel } from './transformers/channel.js'
|
||||
import type { Emoji } from './transformers/emoji.js'
|
||||
import { type Entitlement } from './transformers/entitlement.js'
|
||||
import type { Guild } from './transformers/guild.js'
|
||||
import type { Integration } from './transformers/integration.js'
|
||||
import type { Invite } from './transformers/invite.js'
|
||||
@@ -103,6 +108,7 @@ import type { Message } from './transformers/message.js'
|
||||
import type { GuildOnboarding } from './transformers/onboarding.js'
|
||||
import type { Role } from './transformers/role.js'
|
||||
import type { ScheduledEvent } from './transformers/scheduledEvent.js'
|
||||
import type { Sku } from './transformers/sku.js'
|
||||
import type { StageInstance } from './transformers/stageInstance.js'
|
||||
import type { Sticker, StickerPack } from './transformers/sticker.js'
|
||||
import type { Template } from './transformers/template.js'
|
||||
@@ -252,7 +258,10 @@ export function createBotHelpers(bot: Bot): BotHelpers {
|
||||
}
|
||||
},
|
||||
getApplicationInfo: async () => {
|
||||
return bot.transformers.application(bot, snakelize(await bot.rest.getApplicationInfo()))
|
||||
return bot.transformers.application(bot, { application: snakelize(await bot.rest.getApplicationInfo()), shardId: 0 })
|
||||
},
|
||||
editApplicationInfo: async (body) => {
|
||||
return bot.transformers.application(bot, { application: snakelize(await bot.rest.editApplicationInfo(body)), shardId: 0 })
|
||||
},
|
||||
getCurrentAuthenticationInfo: async (bearerToken) => {
|
||||
return await bot.rest.getCurrentAuthenticationInfo(bearerToken)
|
||||
@@ -366,10 +375,10 @@ export function createBotHelpers(bot: Bot): BotHelpers {
|
||||
)
|
||||
},
|
||||
getInvite: async (inviteCode, options) => {
|
||||
return bot.transformers.invite(bot, snakelize(await bot.rest.getInvite(inviteCode, options)))
|
||||
return bot.transformers.invite(bot, { invite: snakelize(await bot.rest.getInvite(inviteCode, options)), shardId: 0 })
|
||||
},
|
||||
getInvites: async (guildId) => {
|
||||
return (await bot.rest.getInvites(guildId)).map((res) => bot.transformers.invite(bot, snakelize(res)))
|
||||
return (await bot.rest.getInvites(guildId)).map((res) => bot.transformers.invite(bot, { invite: snakelize(res), shardId: 0 }))
|
||||
},
|
||||
getMessage: async (channelId, messageId) => {
|
||||
return bot.transformers.message(bot, snakelize(await bot.rest.getMessage(channelId, messageId)))
|
||||
@@ -686,6 +695,18 @@ export function createBotHelpers(bot: Bot): BotHelpers {
|
||||
editGuildOnboarding: async (guildId, options, reason) => {
|
||||
return bot.transformers.guildOnboarding(bot, snakelize(await bot.rest.editGuildOnboarding(guildId, options, reason)))
|
||||
},
|
||||
listEntitlements: async (applicationId, options) => {
|
||||
return (await bot.rest.listEntitlements(applicationId, options)).map((entitlement) => bot.transformers.entitlement(bot, snakelize(entitlement)))
|
||||
},
|
||||
createTestEntitlement: async (applicationId, body) => {
|
||||
return bot.transformers.entitlement(bot, snakelize(await bot.rest.createTestEntitlement(applicationId, body)) as DiscordEntitlement)
|
||||
},
|
||||
deleteTestEntitlement: async (applicationId, entitlementId) => {
|
||||
await bot.rest.deleteTestEntitlement(applicationId, entitlementId)
|
||||
},
|
||||
listSkus: async (applicationId) => {
|
||||
return (await bot.rest.listSkus(applicationId)).map((sku) => bot.transformers.sku(bot, snakelize(sku)))
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -756,6 +777,7 @@ export interface BotHelpers {
|
||||
followAnnouncement: (sourceChannelId: BigString, targetChannelId: BigString) => Promise<CamelizedDiscordFollowedChannel>
|
||||
getActiveThreads: (guildId: BigString) => Promise<{ threads: Channel[]; members: ThreadMember[] }>
|
||||
getApplicationInfo: () => Promise<Application>
|
||||
editApplicationInfo: (body: EditApplication) => Promise<Application>
|
||||
getCurrentAuthenticationInfo: (bearerToken: string) => Promise<CamelizedDiscordCurrentAuthorization>
|
||||
exchangeToken: (clientId: BigString, clientSecret: string, options: CamelizedDiscordTokenExchange) => Promise<CamelizedDiscordAccessTokenResponse>
|
||||
revokeToken: (clientId: BigString, clientSecret: string, options: CamelizedDiscordTokenRevocation) => Promise<void>
|
||||
@@ -905,4 +927,8 @@ export interface BotHelpers {
|
||||
unpinMessage: (channelId: BigString, messageId: BigString, reason?: string) => Promise<void>
|
||||
getGuildOnboarding: (guildId: BigString) => Promise<GuildOnboarding>
|
||||
editGuildOnboarding: (guildId: BigString, options: EditGuildOnboarding, reason?: string) => Promise<GuildOnboarding>
|
||||
listEntitlements: (applicationId: BigString, options?: GetEntitlements) => Promise<Entitlement[]>
|
||||
createTestEntitlement: (applicationId: BigString, body: CreateEntitlement) => Promise<Partial<Entitlement>>
|
||||
deleteTestEntitlement: (applicationId: BigString, entitlementId: BigString) => Promise<void>
|
||||
listSkus: (applicationId: BigString) => Promise<Sku[]>
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import type {
|
||||
DiscordCreateApplicationCommand,
|
||||
DiscordEmbed,
|
||||
DiscordEmoji,
|
||||
DiscordEntitlement,
|
||||
DiscordGetGatewayBot,
|
||||
DiscordGuild,
|
||||
DiscordGuildApplicationCommandPermissions,
|
||||
@@ -33,6 +34,7 @@ import type {
|
||||
DiscordPresenceUpdate,
|
||||
DiscordRole,
|
||||
DiscordScheduledEvent,
|
||||
DiscordSku,
|
||||
DiscordStageInstance,
|
||||
DiscordSticker,
|
||||
DiscordStickerPack,
|
||||
@@ -61,6 +63,7 @@ import { transformChannel, type Channel } from './transformers/channel.js'
|
||||
import { transformComponent, type Component } from './transformers/component.js'
|
||||
import { transformEmbed, type Embed } from './transformers/embed.js'
|
||||
import { transformEmoji, type Emoji } from './transformers/emoji.js'
|
||||
import { transformEntitlement, type Entitlement } from './transformers/entitlement.js'
|
||||
import { transformGatewayBot, type GetGatewayBot } from './transformers/gatewayBot.js'
|
||||
import { transformGuild, type Guild } from './transformers/guild.js'
|
||||
import {
|
||||
@@ -88,6 +91,7 @@ import { transformCreateApplicationCommandToDiscordCreateApplicationCommand } fr
|
||||
import { transformInteractionResponseToDiscordInteractionResponse } from './transformers/reverse/interactionResponse.js'
|
||||
import { transformRole, type Role } from './transformers/role.js'
|
||||
import { transformScheduledEvent, type ScheduledEvent } from './transformers/scheduledEvent.js'
|
||||
import { transformSku, type Sku } from './transformers/sku.js'
|
||||
import { transformStageInstance, type StageInstance } from './transformers/stageInstance.js'
|
||||
import { transformInviteStageInstance, type InviteStageInstance } from './transformers/stageInviteInstance.js'
|
||||
import { transformSticker, transformStickerPack, type Sticker, type StickerPack } from './transformers/sticker.js'
|
||||
@@ -159,6 +163,8 @@ export interface Transformers {
|
||||
) => any
|
||||
template: (bot: Bot, payload: DiscordTemplate, template: Template) => any
|
||||
guildOnboarding: (bot: Bot, payload: DiscordGuildOnboarding, onboarding: GuildOnboarding) => any
|
||||
entitlement: (bot: Bot, payload: DiscordEntitlement, entitlement: Entitlement) => any
|
||||
sku: (bot: Bot, payload: DiscordSku, sku: Sku) => any
|
||||
}
|
||||
desiredProperties: {
|
||||
attachment: {
|
||||
@@ -268,6 +274,7 @@ export interface Transformers {
|
||||
rulesChannelId: boolean
|
||||
publicUpdatesChannelId: boolean
|
||||
premiumProgressBarEnabled: boolean
|
||||
safetyAlertsChannelId: boolean
|
||||
}
|
||||
interaction: {
|
||||
id: boolean
|
||||
@@ -472,6 +479,25 @@ export interface Transformers {
|
||||
enabled: boolean
|
||||
mode: boolean
|
||||
}
|
||||
entitlement: {
|
||||
id: boolean
|
||||
skuId: boolean
|
||||
userId: boolean
|
||||
guildId: boolean
|
||||
applicationId: boolean
|
||||
type: boolean
|
||||
deleted: boolean
|
||||
startsAt: boolean
|
||||
endsAt: boolean
|
||||
}
|
||||
sku: {
|
||||
id: boolean
|
||||
type: boolean
|
||||
applicationId: boolean
|
||||
name: boolean
|
||||
slug: boolean
|
||||
flags: boolean
|
||||
}
|
||||
}
|
||||
reverse: {
|
||||
allowedMentions: (bot: Bot, payload: AllowedMentions) => DiscordAllowedMentions
|
||||
@@ -504,8 +530,8 @@ export interface Transformers {
|
||||
interaction: (bot: Bot, payload: DiscordInteraction) => Interaction
|
||||
interactionDataOptions: (bot: Bot, payload: DiscordInteractionDataOption) => InteractionDataOption
|
||||
integration: (bot: Bot, payload: DiscordIntegrationCreateUpdate) => Integration
|
||||
invite: (bot: Bot, invite: DiscordInviteCreate | DiscordInviteMetadata) => Invite
|
||||
application: (bot: Bot, payload: DiscordApplication) => Application
|
||||
invite: (bot: Bot, payload: { invite: DiscordInviteCreate | DiscordInviteMetadata; shardId: number }) => Invite
|
||||
application: (bot: Bot, payload: { application: DiscordApplication; shardId: number }) => Application
|
||||
team: (bot: Bot, payload: DiscordTeam) => Team
|
||||
emoji: (bot: Bot, payload: DiscordEmoji) => Emoji
|
||||
activity: (bot: Bot, payload: DiscordActivity) => Activity
|
||||
@@ -533,6 +559,8 @@ export interface Transformers {
|
||||
applicationCommandOptionChoice: (bot: Bot, payload: DiscordApplicationCommandOptionChoice) => ApplicationCommandOptionChoice
|
||||
template: (bot: Bot, payload: DiscordTemplate) => Template
|
||||
guildOnboarding: (bot: Bot, payload: DiscordGuildOnboarding) => GuildOnboarding
|
||||
entitlement: (bot: Bot, payload: DiscordEntitlement) => Entitlement
|
||||
sku: (bot: Bot, payload: DiscordSku) => Sku
|
||||
}
|
||||
|
||||
export interface CreateTransformerOptions {
|
||||
@@ -674,6 +702,12 @@ export function createTransformers(options: Partial<Transformers>, opts?: Create
|
||||
guildOnboarding(bot, payload, onboarding) {
|
||||
return onboarding
|
||||
},
|
||||
entitlement(bot, payload, entitlement) {
|
||||
return entitlement
|
||||
},
|
||||
sku(bot, payload, sku) {
|
||||
return sku
|
||||
},
|
||||
},
|
||||
desiredProperties: {
|
||||
attachment: {
|
||||
@@ -783,6 +817,7 @@ export function createTransformers(options: Partial<Transformers>, opts?: Create
|
||||
rulesChannelId: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
publicUpdatesChannelId: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
premiumProgressBarEnabled: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
safetyAlertsChannelId: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
},
|
||||
interaction: {
|
||||
id: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
@@ -987,6 +1022,25 @@ export function createTransformers(options: Partial<Transformers>, opts?: Create
|
||||
type: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
},
|
||||
},
|
||||
entitlement: {
|
||||
id: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
skuId: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
userId: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
guildId: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
applicationId: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
type: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
deleted: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
startsAt: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
endsAt: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
},
|
||||
sku: {
|
||||
id: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
type: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
applicationId: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
name: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
slug: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
flags: opts?.defaultDesiredPropertiesValue ?? false,
|
||||
},
|
||||
},
|
||||
reverse: {
|
||||
allowedMentions: options.reverse?.allowedMentions ?? transformAllowedMentionsToDiscordAllowedMentions,
|
||||
@@ -1048,5 +1102,7 @@ export function createTransformers(options: Partial<Transformers>, opts?: Create
|
||||
applicationCommandOptionChoice: options.applicationCommandOptionChoice ?? transformApplicationCommandOptionChoice,
|
||||
template: options.template ?? transformTemplate,
|
||||
guildOnboarding: options.guildOnboarding ?? transformGuildOnboarding,
|
||||
entitlement: options.entitlement ?? transformEntitlement,
|
||||
sku: options.sku ?? transformSku,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,31 +1,46 @@
|
||||
import { iconHashToBigInt, type ApplicationFlags, type Bot, type DiscordApplication, type Team, type User } from '../index.js'
|
||||
import {
|
||||
iconHashToBigInt,
|
||||
type ApplicationFlags,
|
||||
type Bot,
|
||||
type DiscordApplication,
|
||||
type DiscordUser,
|
||||
type Guild,
|
||||
type Team,
|
||||
type User,
|
||||
} from '../index.js'
|
||||
|
||||
export function transformApplication(bot: Bot, payload: DiscordApplication): Application {
|
||||
export function transformApplication(bot: Bot, payload: { application: DiscordApplication; shardId: number }): Application {
|
||||
const application = {
|
||||
name: payload.name,
|
||||
description: payload.description,
|
||||
rpcOrigins: payload.rpc_origins,
|
||||
botPublic: payload.bot_public,
|
||||
botRequireCodeGrant: payload.bot_require_code_grant,
|
||||
termsOfServiceUrl: payload.terms_of_service_url,
|
||||
privacyPolicyUrl: payload.privacy_policy_url,
|
||||
verifyKey: payload.verify_key,
|
||||
primarySkuId: payload.primary_sku_id,
|
||||
slug: payload.slug,
|
||||
coverImage: payload.cover_image ? iconHashToBigInt(payload.cover_image) : undefined,
|
||||
flags: payload.flags,
|
||||
name: payload.application.name,
|
||||
description: payload.application.description,
|
||||
rpcOrigins: payload.application.rpc_origins,
|
||||
botPublic: payload.application.bot_public,
|
||||
botRequireCodeGrant: payload.application.bot_require_code_grant,
|
||||
termsOfServiceUrl: payload.application.terms_of_service_url,
|
||||
privacyPolicyUrl: payload.application.privacy_policy_url,
|
||||
verifyKey: payload.application.verify_key,
|
||||
primarySkuId: payload.application.primary_sku_id,
|
||||
slug: payload.application.slug,
|
||||
coverImage: payload.application.cover_image ? iconHashToBigInt(payload.application.cover_image) : undefined,
|
||||
flags: payload.application.flags,
|
||||
|
||||
id: bot.transformers.snowflake(payload.id),
|
||||
icon: payload.icon ? iconHashToBigInt(payload.icon) : undefined,
|
||||
owner: payload.owner
|
||||
id: bot.transformers.snowflake(payload.application.id),
|
||||
icon: payload.application.icon ? iconHashToBigInt(payload.application.icon) : undefined,
|
||||
owner: payload.application.owner
|
||||
? // @ts-expect-error the partial here wont break anything
|
||||
bot.transformers.user(bot, payload.owner)
|
||||
bot.transformers.user(bot, payload.application.owner)
|
||||
: undefined,
|
||||
team: payload.team ? bot.transformers.team(bot, payload.team) : undefined,
|
||||
guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined,
|
||||
team: payload.application.team ? bot.transformers.team(bot, payload.application.team) : undefined,
|
||||
guildId: payload.application.guild_id ? bot.transformers.snowflake(payload.application.guild_id) : undefined,
|
||||
// @ts-expect-error the partial here wont break anything
|
||||
guild: payload.application.guild ? bot.transformers.guild(bot, { guild: payload.application.guild, shardId: payload.shardId }) : undefined,
|
||||
approximateGuildCount: payload.application.approximate_guild_count,
|
||||
bot: payload.application.bot ? bot.transformers.user(bot, payload.application.bot as DiscordUser) : undefined,
|
||||
interactionsEndpointUrl: payload.application.interactions_endpoint_url,
|
||||
redirectUris: payload.application.redirect_uris,
|
||||
} as Application
|
||||
|
||||
return bot.transformers.customizers.application(bot, payload, application)
|
||||
return bot.transformers.customizers.application(bot, payload.application, application)
|
||||
}
|
||||
|
||||
export interface Application {
|
||||
@@ -40,10 +55,15 @@ export interface Application {
|
||||
owner?: User
|
||||
team?: Team
|
||||
guildId?: bigint
|
||||
guild?: Guild
|
||||
id: bigint
|
||||
name: string
|
||||
description: string
|
||||
botPublic: boolean
|
||||
botRequireCodeGrant: boolean
|
||||
verifyKey: string
|
||||
approximateGuildCount?: number
|
||||
bot?: User
|
||||
redirectUris?: string[]
|
||||
interactionsEndpointUrl?: string
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
import type { DiscordEntitlement, DiscordEntitlementType } from '@discordeno/types'
|
||||
import type { Bot } from '../index.js'
|
||||
|
||||
export function transformEntitlement(bot: Bot, payload: DiscordEntitlement): Entitlement {
|
||||
const props = bot.transformers.desiredProperties.entitlement
|
||||
const entitlement = {} as Entitlement
|
||||
|
||||
if (props.id && payload.id) entitlement.id = bot.transformers.snowflake(payload.id)
|
||||
if (props.skuId && payload.sku_id) entitlement.skuId = bot.transformers.snowflake(payload.sku_id)
|
||||
if (props.userId && payload.user_id) entitlement.userId = bot.transformers.snowflake(payload.user_id)
|
||||
if (props.guildId && payload.guild_id) entitlement.guildId = bot.transformers.snowflake(payload.guild_id)
|
||||
if (props.applicationId && payload.application_id) entitlement.applicationId = bot.transformers.snowflake(payload.application_id)
|
||||
if (props.type && payload.type) entitlement.type = payload.type
|
||||
if (props.deleted && payload.deleted) entitlement.deleted = payload.deleted
|
||||
if (props.startsAt && payload.starts_at) entitlement.startsAt = Date.parse(payload.starts_at)
|
||||
if (props.endsAt && payload.ends_at) entitlement.endsAt = Date.parse(payload.ends_at)
|
||||
|
||||
return bot.transformers.customizers.entitlement(bot, payload, entitlement)
|
||||
}
|
||||
|
||||
export interface Entitlement {
|
||||
/** ID of the entitlement */
|
||||
id: bigint
|
||||
/** ID of the SKU */
|
||||
skuId: bigint
|
||||
/** ID of the user that is granted access to the entitlement's sku */
|
||||
userId?: bigint
|
||||
/** ID of the guild that is granted access to the entitlement's sku */
|
||||
guildId?: bigint
|
||||
/** ID of the parent application */
|
||||
applicationId: bigint
|
||||
/** Type of entitlement */
|
||||
type: DiscordEntitlementType
|
||||
/** Entitlement was deleted */
|
||||
deleted: boolean
|
||||
/** Start date at which the entitlement is valid. Not present when using test entitlements */
|
||||
startsAt?: number
|
||||
/** Date at which the entitlement is no longer valid. Not present when using test entitlements */
|
||||
endsAt?: number
|
||||
}
|
||||
@@ -144,6 +144,8 @@ export function transformGuild(bot: Bot, payload: { guild: DiscordGuild } & { sh
|
||||
if (props.iconHash && payload.guild.icon_hash) guild.iconHash = iconHashToBigInt(payload.guild.icon_hash)
|
||||
if (props.presences && payload.guild.presences)
|
||||
guild.presences = payload.guild.presences?.map((presence) => bot.transformers.presence(bot, presence as DiscordPresenceUpdate))
|
||||
if (props.safetyAlertsChannelId && payload.guild.safety_alerts_channel_id)
|
||||
guild.safetyAlertsChannelId = bot.transformers.snowflake(payload.guild.safety_alerts_channel_id)
|
||||
|
||||
return bot.transformers.customizers.guild(bot, payload.guild, guild)
|
||||
}
|
||||
@@ -251,6 +253,8 @@ export interface Guild {
|
||||
welcomeScreen?: WelcomeScreen
|
||||
/** Stage instances in the guild */
|
||||
stageInstances?: StageInstance[]
|
||||
/** custom guild stickers */
|
||||
/** Custom guild stickers */
|
||||
stickers?: Collection<bigint, Sticker>
|
||||
/** The id of the channel where admins and moderators of Community guilds receive safety alerts from Discord */
|
||||
safetyAlertsChannelId?: bigint
|
||||
}
|
||||
|
||||
@@ -2,48 +2,54 @@ import type { DiscordApplication, DiscordInviteCreate, DiscordInviteMetadata } f
|
||||
import { isInviteWithMetadata, type Application, type Bot, type ScheduledEvent, type User } from '../index.js'
|
||||
import type { InviteStageInstance } from './stageInviteInstance.js'
|
||||
|
||||
export function transformInvite(bot: Bot, payload: DiscordInviteCreate | DiscordInviteMetadata): Invite {
|
||||
export function transformInvite(bot: Bot, payload: { invite: DiscordInviteCreate | DiscordInviteMetadata; shardId: number }): Invite {
|
||||
const props = bot.transformers.desiredProperties.invite
|
||||
const invite = {} as Invite
|
||||
const hasMetadata = isInviteWithMetadata(payload)
|
||||
|
||||
if (props.code && payload.code) invite.code = payload.code
|
||||
if (props.createdAt && payload.created_at) invite.createdAt = Date.parse(payload.created_at)
|
||||
if (props.inviter && payload.inviter) invite.inviter = bot.transformers.user(bot, payload.inviter)
|
||||
if (props.maxAge && payload.max_age) invite.maxAge = payload.max_age
|
||||
if (props.maxUses && payload.max_uses) invite.maxUses = payload.max_uses
|
||||
if (props.targetType && payload.target_type) invite.targetType = payload.target_type
|
||||
if (props.targetUser && payload.target_user) invite.targetUser = bot.transformers.user(bot, payload.target_user)
|
||||
if (props.targetApplication && payload.target_application)
|
||||
invite.targetApplication = bot.transformers.application(bot, payload.target_application as DiscordApplication)
|
||||
if (props.temporary && payload.temporary) invite.temporary = payload.temporary
|
||||
if (props.uses && payload.uses) invite.uses = payload.uses
|
||||
if (props.code && payload.invite.code) invite.code = payload.invite.code
|
||||
if (props.createdAt && payload.invite.created_at) invite.createdAt = Date.parse(payload.invite.created_at)
|
||||
if (props.inviter && payload.invite.inviter) invite.inviter = bot.transformers.user(bot, payload.invite.inviter)
|
||||
if (props.maxAge && payload.invite.max_age) invite.maxAge = payload.invite.max_age
|
||||
if (props.maxUses && payload.invite.max_uses) invite.maxUses = payload.invite.max_uses
|
||||
if (props.targetType && payload.invite.target_type) invite.targetType = payload.invite.target_type
|
||||
if (props.targetUser && payload.invite.target_user) invite.targetUser = bot.transformers.user(bot, payload.invite.target_user)
|
||||
if (props.targetApplication && payload.invite.target_application)
|
||||
invite.targetApplication = bot.transformers.application(bot, {
|
||||
application: payload.invite.target_application as DiscordApplication,
|
||||
shardId: payload.shardId,
|
||||
})
|
||||
if (props.temporary && payload.invite.temporary) invite.temporary = payload.invite.temporary
|
||||
if (props.uses && payload.invite.uses) invite.uses = payload.invite.uses
|
||||
|
||||
if (hasMetadata) {
|
||||
if (props.channelId && payload.channel?.id) invite.channelId = bot.transformers.snowflake(payload.channel.id)
|
||||
if (props.guildId && payload.guild?.id) invite.guildId = bot.transformers.snowflake(payload.guild.id)
|
||||
if (props.approximateMemberCount && payload.approximate_member_count) invite.approximateMemberCount = payload.approximate_member_count
|
||||
if (props.approximatePresenceCount && payload.approximate_presence_count) invite.approximatePresenceCount = payload.approximate_presence_count
|
||||
if (props.guildScheduledEvent && payload.guild_scheduled_event) {
|
||||
invite.guildScheduledEvent = payload.guild_scheduled_event ? bot.transformers.scheduledEvent(bot, payload.guild_scheduled_event) : undefined
|
||||
if (isInviteWithMetadata(payload.invite)) {
|
||||
if (props.channelId && payload.invite.channel?.id) invite.channelId = bot.transformers.snowflake(payload.invite.channel.id)
|
||||
if (props.guildId && payload.invite.guild?.id) invite.guildId = bot.transformers.snowflake(payload.invite.guild.id)
|
||||
if (props.approximateMemberCount && payload.invite.approximate_member_count)
|
||||
invite.approximateMemberCount = payload.invite.approximate_member_count
|
||||
if (props.approximatePresenceCount && payload.invite.approximate_presence_count)
|
||||
invite.approximatePresenceCount = payload.invite.approximate_presence_count
|
||||
if (props.guildScheduledEvent && payload.invite.guild_scheduled_event) {
|
||||
invite.guildScheduledEvent = payload.invite.guild_scheduled_event
|
||||
? bot.transformers.scheduledEvent(bot, payload.invite.guild_scheduled_event)
|
||||
: undefined
|
||||
}
|
||||
if (props.stageInstance && invite.guildId && payload.stage_instance) {
|
||||
invite.stageInstance = payload.stage_instance
|
||||
if (props.stageInstance && invite.guildId && payload.invite.stage_instance) {
|
||||
invite.stageInstance = payload.invite.stage_instance
|
||||
? bot.transformers.inviteStageInstance(bot, {
|
||||
...payload.stage_instance,
|
||||
...payload.invite.stage_instance,
|
||||
guildId: invite.guildId,
|
||||
})
|
||||
: undefined
|
||||
}
|
||||
if (props.expiresAt && payload.expires_at) {
|
||||
invite.expiresAt = Date.parse(payload.expires_at)
|
||||
if (props.expiresAt && payload.invite.expires_at) {
|
||||
invite.expiresAt = Date.parse(payload.invite.expires_at)
|
||||
}
|
||||
} else {
|
||||
if (props.channelId && payload.channel_id) invite.channelId = bot.transformers.snowflake(payload.channel_id)
|
||||
if (props.guildId && payload.guild_id) invite.guildId = bot.transformers.snowflake(payload.guild_id)
|
||||
if (props.channelId && payload.invite.channel_id) invite.channelId = bot.transformers.snowflake(payload.invite.channel_id)
|
||||
if (props.guildId && payload.invite.guild_id) invite.guildId = bot.transformers.snowflake(payload.invite.guild_id)
|
||||
}
|
||||
|
||||
return bot.transformers.customizers.invite(bot, payload, invite)
|
||||
return bot.transformers.customizers.invite(bot, payload.invite, invite)
|
||||
}
|
||||
|
||||
export interface Invite {
|
||||
|
||||
@@ -13,9 +13,9 @@ export function transformTeamToDiscordTeam(bot: Bot, payload: Team): DiscordTeam
|
||||
owner_user_id: payload.ownerUserId.toString(),
|
||||
members: payload.members.map((member) => ({
|
||||
membership_state: member.membershipState,
|
||||
permissions: member.permissions,
|
||||
team_id: id,
|
||||
user: bot.transformers.reverse.user(bot, member.user),
|
||||
role: member.role,
|
||||
})),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
import type { DiscordSku, DiscordSkuFlag, DiscordSkuType } from '@discordeno/types'
|
||||
import type { Bot } from '../index.js'
|
||||
|
||||
export function transformSku(bot: Bot, payload: DiscordSku): Sku {
|
||||
const props = bot.transformers.desiredProperties.sku
|
||||
const sku = {} as Sku
|
||||
|
||||
if (props.id && payload.id) sku.id = bot.transformers.snowflake(payload.id)
|
||||
if (props.type && payload.type) sku.type = payload.type
|
||||
if (props.applicationId && payload.application_id) sku.applicationId = bot.transformers.snowflake(payload.application_id)
|
||||
if (props.name && payload.name) sku.name = payload.name
|
||||
if (props.slug && payload.slug) sku.slug = payload.slug
|
||||
if (props.flags && payload.flags) sku.flags = payload.flags
|
||||
|
||||
return bot.transformers.customizers.sku(bot, payload, sku)
|
||||
}
|
||||
|
||||
export interface Sku {
|
||||
/** ID of SKU */
|
||||
id: bigint
|
||||
/** Type of SKU */
|
||||
type: DiscordSkuType
|
||||
/** ID of the parent application */
|
||||
applicationId: bigint
|
||||
/** Customer-facing name of your premium offering */
|
||||
name: string
|
||||
/** System-generated URL slug based on the SKU's name */
|
||||
slug: string
|
||||
/** SKU flags combined as a bitfield */
|
||||
flags: DiscordSkuFlag
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { DiscordTeam, TeamMembershipStates } from '@discordeno/types'
|
||||
import type { DiscordTeam, DiscordTeamMemberRole, TeamMembershipStates } from '@discordeno/types'
|
||||
import { iconHashToBigInt, type Bot, type User } from '../index.js'
|
||||
|
||||
export function transformTeam(bot: Bot, payload: DiscordTeam): Team {
|
||||
@@ -11,9 +11,9 @@ export function transformTeam(bot: Bot, payload: DiscordTeam): Team {
|
||||
ownerUserId: bot.transformers.snowflake(payload.owner_user_id),
|
||||
members: payload.members.map((member) => ({
|
||||
membershipState: member.membership_state,
|
||||
permissions: member.permissions,
|
||||
teamId: id,
|
||||
user: bot.transformers.user(bot, member.user),
|
||||
role: member.role,
|
||||
})),
|
||||
} as Team
|
||||
|
||||
@@ -27,8 +27,8 @@ export interface Team {
|
||||
ownerUserId: bigint
|
||||
members: Array<{
|
||||
membershipState: TeamMembershipStates
|
||||
permissions: Array<'*'>
|
||||
teamId: bigint
|
||||
user: User
|
||||
role: DiscordTeamMemberRole
|
||||
}>
|
||||
}
|
||||
|
||||
@@ -204,6 +204,9 @@ export interface BotGatewayHandlerOptions {
|
||||
INTEGRATION_CREATE: typeof handlers.handleIntegrationCreate
|
||||
INTEGRATION_UPDATE: typeof handlers.handleIntegrationUpdate
|
||||
INTEGRATION_DELETE: typeof handlers.handleIntegrationDelete
|
||||
ENTITLEMENT_CREATE: typeof handlers.handleEntitlementCreate
|
||||
ENTITLEMENT_UPDATE: typeof handlers.handleEntitlementUpdate
|
||||
ENTITLEMENT_DELETE: typeof handlers.handleEntitlementDelete
|
||||
}
|
||||
|
||||
export enum MessageFlags {
|
||||
|
||||
Reference in New Issue
Block a user