diff options
author | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2022-03-08 19:37:57 -0500 |
---|---|---|
committer | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2022-03-08 19:37:57 -0500 |
commit | b86a05f4b21c62e18bf669e00646b715a409bdb0 (patch) | |
tree | 6d3623c45fd321ade5f8bbf6de37385f43123759 /src/lib/extensions/discord.js | |
parent | 57e47b8b84dee001c65c1ab43833c09fef056a4b (diff) | |
download | tanzanite-b86a05f4b21c62e18bf669e00646b715a409bdb0.tar.gz tanzanite-b86a05f4b21c62e18bf669e00646b715a409bdb0.tar.bz2 tanzanite-b86a05f4b21c62e18bf669e00646b715a409bdb0.zip |
feat: misc changes for extentions
Diffstat (limited to 'src/lib/extensions/discord.js')
17 files changed, 132 insertions, 27 deletions
diff --git a/src/lib/extensions/discord.js/BushBaseGuildTextChannel.ts b/src/lib/extensions/discord.js/BushBaseGuildTextChannel.ts index 5444a7f..5cc74c4 100644 --- a/src/lib/extensions/discord.js/BushBaseGuildTextChannel.ts +++ b/src/lib/extensions/discord.js/BushBaseGuildTextChannel.ts @@ -22,7 +22,7 @@ export class BushBaseGuildTextChannel extends BaseGuildTextChannel { } } -export interface BushBaseGuildTextChannel { +export interface BushBaseGuildTextChannel extends BaseGuildTextChannel { get members(): Collection<Snowflake, BushGuildMember>; get parent(): BushCategoryChannel | null; } diff --git a/src/lib/extensions/discord.js/BushButtonInteraction.ts b/src/lib/extensions/discord.js/BushButtonInteraction.ts index e72e277..89cfabd 100644 --- a/src/lib/extensions/discord.js/BushButtonInteraction.ts +++ b/src/lib/extensions/discord.js/BushButtonInteraction.ts @@ -15,7 +15,7 @@ export class BushButtonInteraction<Cached extends CacheType = CacheType> extends } } -export interface BushButtonInteraction<Cached extends CacheType = CacheType> { +export interface BushButtonInteraction<Cached extends CacheType = CacheType> extends ButtonInteraction<Cached> { get channel(): CacheTypeReducer< Cached, BushGuildTextBasedChannel | null, @@ -24,4 +24,7 @@ export interface BushButtonInteraction<Cached extends CacheType = CacheType> { BushTextBasedChannel | null >; get guild(): CacheTypeReducer<Cached, BushGuild, null>; + inGuild(): this is BushButtonInteraction<'raw' | 'cached'>; + inCachedGuild(): this is BushButtonInteraction<'cached'>; + inRawGuild(): this is BushButtonInteraction<'raw'>; } diff --git a/src/lib/extensions/discord.js/BushClientEvents.ts b/src/lib/extensions/discord.js/BushClientEvents.ts index 7437f7f..4a10ce5 100644 --- a/src/lib/extensions/discord.js/BushClientEvents.ts +++ b/src/lib/extensions/discord.js/BushClientEvents.ts @@ -1,6 +1,7 @@ import type { BanResponse, BushApplicationCommand, + BushButtonInteraction, BushClient, BushDMChannel, BushGuild, @@ -10,10 +11,12 @@ import type { BushGuildTextBasedChannel, BushMessage, BushMessageReaction, + BushModalSubmitInteraction, BushNewsChannel, BushNonThreadGuildBasedChannel, BushPresence, BushRole, + BushSelectMenuInteraction, BushStageInstance, BushTextBasedChannel, BushTextChannel, @@ -319,6 +322,10 @@ export interface BushClientEvents extends AkairoClientEvents { reason: string | undefined, results: Collection<Snowflake, BanResponse> ]; + /* components */ + button: [button: BushButtonInteraction]; + selectMenu: [selectMenu: BushSelectMenuInteraction]; + modal: [modal: BushModalSubmitInteraction]; } type Setting = diff --git a/src/lib/extensions/discord.js/BushGuild.ts b/src/lib/extensions/discord.js/BushGuild.ts index a131242..7fadd96 100644 --- a/src/lib/extensions/discord.js/BushGuild.ts +++ b/src/lib/extensions/discord.js/BushGuild.ts @@ -451,7 +451,7 @@ export class BushGuild extends Guild { } } -export interface BushGuild { +export interface BushGuild extends Guild { get me(): BushGuildMember | null; } diff --git a/src/lib/extensions/discord.js/BushGuildEmoji.ts b/src/lib/extensions/discord.js/BushGuildEmoji.ts index 29e0c4a..9b931bb 100644 --- a/src/lib/extensions/discord.js/BushGuildEmoji.ts +++ b/src/lib/extensions/discord.js/BushGuildEmoji.ts @@ -15,6 +15,6 @@ export class BushGuildEmoji extends GuildEmoji { } } -export interface BushGuildEmoji { +export interface BushGuildEmoji extends GuildEmoji { get roles(): BushGuildEmojiRoleManager; } diff --git a/src/lib/extensions/discord.js/BushMessageReaction.ts b/src/lib/extensions/discord.js/BushMessageReaction.ts index aed76df..7fe110d 100644 --- a/src/lib/extensions/discord.js/BushMessageReaction.ts +++ b/src/lib/extensions/discord.js/BushMessageReaction.ts @@ -15,6 +15,6 @@ export class BushMessageReaction extends MessageReaction { } } -export interface BushMessageReaction { +export interface BushMessageReaction extends MessageReaction { get emoji(): BushGuildEmoji | BushReactionEmoji; } diff --git a/src/lib/extensions/discord.js/BushModalSubmitInteraction.ts b/src/lib/extensions/discord.js/BushModalSubmitInteraction.ts new file mode 100644 index 0000000..b05c0d7 --- /dev/null +++ b/src/lib/extensions/discord.js/BushModalSubmitInteraction.ts @@ -0,0 +1,95 @@ +import type { + BushClient, + BushGuild, + BushGuildCacheMessage, + BushGuildMember, + BushGuildTextBasedChannel, + BushTextBasedChannel, + BushUser +} from '#lib'; +import type { APIInteractionGuildMember, APIModalSubmitInteraction } from 'discord-api-types/v9'; +import { + InteractionDeferUpdateOptions, + InteractionUpdateOptions, + MessagePayload, + ModalSubmitInteraction, + type CacheType, + type CacheTypeReducer +} from 'discord.js'; + +/** + * Represents a button interaction. + */ +export class BushModalSubmitInteraction<Cached extends CacheType = CacheType> extends ModalSubmitInteraction<Cached> { + public declare member: CacheTypeReducer<Cached, BushGuildMember, APIInteractionGuildMember>; + public declare user: BushUser; + + public constructor(client: BushClient, data: APIModalSubmitInteraction) { + super(client, data); + } +} + +export interface BushModalSubmitInteraction<Cached extends CacheType = CacheType> extends ModalSubmitInteraction<Cached> { + get channel(): CacheTypeReducer< + Cached, + BushGuildTextBasedChannel | null, + BushGuildTextBasedChannel | null, + BushGuildTextBasedChannel | null, + BushTextBasedChannel | null + >; + get guild(): CacheTypeReducer<Cached, BushGuild, null>; + inGuild(): this is BushModalSubmitInteraction<'raw' | 'cached'>; + inCachedGuild(): this is BushModalSubmitInteraction<'cached'>; + inRawGuild(): this is BushModalSubmitInteraction<'raw'>; + isFromMessage(): this is BushModalMessageModalSubmitInteraction<Cached>; +} + +export interface BushModalMessageModalSubmitInteraction<Cached extends CacheType = CacheType> + extends ModalSubmitInteraction<Cached> { + /** + * The message associated with this interaction + */ + message: BushGuildCacheMessage<Cached> | null; + + /** + * Updates the original message of the component on which the interaction was received on. + * @param options The options for the updated message + * @example + * // Remove the components from the message + * interaction.update({ + * content: "A component interaction was received", + * components: [] + * }) + * .then(console.log) + * .catch(console.error); + */ + update(options: InteractionUpdateOptions & { fetchReply: true }): Promise<BushGuildCacheMessage<Cached>>; + update(options: string | MessagePayload | InteractionUpdateOptions): Promise<void>; + + /** + * Defers an update to the message to which the component was attached. + * @param options Options for deferring the update to this interaction + * @example + * // Defer updating and reset the component's loading state + * interaction.deferUpdate() + * .then(console.log) + * .catch(console.error); + */ + deferUpdate(options: InteractionDeferUpdateOptions & { fetchReply: true }): Promise<BushGuildCacheMessage<Cached>>; + deferUpdate(options?: InteractionDeferUpdateOptions): Promise<void>; + + /** + * Indicates whether this interaction is received from a guild. + */ + inGuild(): this is BushModalMessageModalSubmitInteraction<'raw' | 'cached'>; + + /** + * Indicates whether or not this interaction is both cached and received from a guild. + */ + inCachedGuild(): this is BushModalMessageModalSubmitInteraction<'cached'>; + + /** + * Indicates whether or not this interaction is received from an uncached guild. + */ + inRawGuild(): this is BushModalMessageModalSubmitInteraction<'raw'>; +} diff --git a/src/lib/extensions/discord.js/BushNewsChannel.ts b/src/lib/extensions/discord.js/BushNewsChannel.ts index fcb15d5..e262188 100644 --- a/src/lib/extensions/discord.js/BushNewsChannel.ts +++ b/src/lib/extensions/discord.js/BushNewsChannel.ts @@ -10,6 +10,6 @@ export class BushNewsChannel extends NewsChannel { public declare messages: BushMessageManager; } -export interface BushNewsChannel { +export interface BushNewsChannel extends NewsChannel { get members(): Collection<Snowflake, BushGuildMember>; } diff --git a/src/lib/extensions/discord.js/BushPresence.ts b/src/lib/extensions/discord.js/BushPresence.ts index f40570d..40873ac 100644 --- a/src/lib/extensions/discord.js/BushPresence.ts +++ b/src/lib/extensions/discord.js/BushPresence.ts @@ -13,7 +13,7 @@ export class BushPresence extends Presence { } } -export interface BushPresence { +export interface BushPresence extends Presence { get member(): BushGuildMember | null; get user(): BushUser | null; } diff --git a/src/lib/extensions/discord.js/BushRole.ts b/src/lib/extensions/discord.js/BushRole.ts index c0b9ae5..a9575bd 100644 --- a/src/lib/extensions/discord.js/BushRole.ts +++ b/src/lib/extensions/discord.js/BushRole.ts @@ -13,6 +13,6 @@ export class BushRole extends Role { } } -export interface BushRole { +export interface BushRole extends Role { get members(): Collection<Snowflake, BushGuildMember>; } diff --git a/src/lib/extensions/discord.js/BushSelectMenuInteraction.ts b/src/lib/extensions/discord.js/BushSelectMenuInteraction.ts index e5f84b4..35e6301 100644 --- a/src/lib/extensions/discord.js/BushSelectMenuInteraction.ts +++ b/src/lib/extensions/discord.js/BushSelectMenuInteraction.ts @@ -15,7 +15,7 @@ export class BushSelectMenuInteraction<Cached extends CacheType = CacheType> ext } } -export interface BushSelectMenuInteraction<Cached extends CacheType = CacheType> { +export interface BushSelectMenuInteraction<Cached extends CacheType = CacheType> extends SelectMenuInteraction<Cached> { get channel(): CacheTypeReducer< Cached, BushGuildTextBasedChannel | null, @@ -24,4 +24,7 @@ export interface BushSelectMenuInteraction<Cached extends CacheType = CacheType> BushTextBasedChannel | null >; get guild(): CacheTypeReducer<Cached, BushGuild, null>; + inGuild(): this is BushSelectMenuInteraction<'raw' | 'cached'>; + inCachedGuild(): this is BushSelectMenuInteraction<'cached'>; + inRawGuild(): this is BushSelectMenuInteraction<'raw'>; } diff --git a/src/lib/extensions/discord.js/BushStageChannel.ts b/src/lib/extensions/discord.js/BushStageChannel.ts index 253b417..983bd56 100644 --- a/src/lib/extensions/discord.js/BushStageChannel.ts +++ b/src/lib/extensions/discord.js/BushStageChannel.ts @@ -13,7 +13,7 @@ export class BushStageChannel extends StageChannel { } } -export interface BushStageChannel { +export interface BushStageChannel extends StageChannel { get members(): Collection<Snowflake, BushGuildMember>; get parent(): BushCategoryChannel | null; get stageInstance(): BushStageInstance | null; diff --git a/src/lib/extensions/discord.js/BushStageInstance.ts b/src/lib/extensions/discord.js/BushStageInstance.ts index 0242314..96453a7 100644 --- a/src/lib/extensions/discord.js/BushStageInstance.ts +++ b/src/lib/extensions/discord.js/BushStageInstance.ts @@ -11,7 +11,7 @@ export class BushStageInstance extends StageInstance { } } -export interface BushStageInstance { +export interface BushStageInstance extends StageInstance { get channel(): BushStageChannel | null; get guild(): BushGuild | null; } diff --git a/src/lib/extensions/discord.js/BushThreadMember.ts b/src/lib/extensions/discord.js/BushThreadMember.ts index b3d8b50..90c9c9b 100644 --- a/src/lib/extensions/discord.js/BushThreadMember.ts +++ b/src/lib/extensions/discord.js/BushThreadMember.ts @@ -13,7 +13,7 @@ export class BushThreadMember extends ThreadMember { } } -export interface BushThreadMember { +export interface BushThreadMember extends ThreadMember { get guildMember(): BushGuildMember | null; get user(): BushUser | null; } diff --git a/src/lib/extensions/discord.js/BushUser.ts b/src/lib/extensions/discord.js/BushUser.ts index 10e2e4a..27ef2b2 100644 --- a/src/lib/extensions/discord.js/BushUser.ts +++ b/src/lib/extensions/discord.js/BushUser.ts @@ -29,6 +29,6 @@ export class BushUser extends User { } } -export interface BushUser { +export interface BushUser extends User { get dmChannel(): BushDMChannel | null; } diff --git a/src/lib/extensions/discord.js/BushVoiceState.ts b/src/lib/extensions/discord.js/BushVoiceState.ts index f5c6301..bbcdfa8 100644 --- a/src/lib/extensions/discord.js/BushVoiceState.ts +++ b/src/lib/extensions/discord.js/BushVoiceState.ts @@ -14,7 +14,7 @@ export class BushVoiceState extends VoiceState { } } -export interface BushVoiceState { +export interface BushVoiceState extends VoiceState { get channel(): BushVoiceBasedChannel | null; get getmember(): BushGuildMember | null; } diff --git a/src/lib/extensions/discord.js/other.ts b/src/lib/extensions/discord.js/other.ts index e4bc10b..7705c18 100644 --- a/src/lib/extensions/discord.js/other.ts +++ b/src/lib/extensions/discord.js/other.ts @@ -19,7 +19,8 @@ import type { BushVoiceChannel, PartialBushDMChannel } from '#lib'; -import type { ChannelType, Collection, Message, Snowflake } from 'discord.js'; +import { APIMessage } from 'discord-api-types/v9'; +import type { CacheType, CacheTypeReducer, ChannelType, Collection, Message, Snowflake } from 'discord.js'; /** * Data that resolves to give a ThreadMember object. @@ -150,16 +151,12 @@ export interface BushFetchedThreads { hasMore?: boolean; } -// for reverse key mapping - -/** - * https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-type - */ -export enum BushInteractionType { - Ping = 1, - ApplicationCommand = 2, - MessageComponent = 3, - ApplicationCommandAutocomplete = 4 -} - export type BushNonCategoryGuildBasedChannel = Exclude<BushGuildBasedChannel, BushCategoryChannel>; + +export type BushGuildCacheMessage<Cached extends CacheType> = CacheTypeReducer< + Cached, + BushMessage<true>, + APIMessage, + BushMessage | APIMessage, + BushMessage | APIMessage +>; |