mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-03 05:26:07 +00:00
fix: errors in componentcontext class and add docs (#169)
This commit is contained in:
parent
388164594a
commit
5baa921b7c
@ -16,13 +16,27 @@ import type {
|
|||||||
} from '..';
|
} from '..';
|
||||||
import type { ExtendContext, UsingClient } from '../commands';
|
import type { ExtendContext, UsingClient } from '../commands';
|
||||||
import { BaseContext } from '../commands/basecontex';
|
import { BaseContext } from '../commands/basecontex';
|
||||||
import type { InteractionCreateBodyRequest, InteractionMessageUpdateBodyRequest, When } from '../common';
|
import type {
|
||||||
|
ComponentInteractionMessageUpdate,
|
||||||
|
InteractionCreateBodyRequest,
|
||||||
|
InteractionMessageUpdateBodyRequest,
|
||||||
|
When,
|
||||||
|
} from '../common';
|
||||||
|
|
||||||
export interface ComponentContext<Type extends keyof ComponentCommandInteractionMap>
|
export interface ComponentContext<Type extends keyof ComponentCommandInteractionMap>
|
||||||
extends BaseContext,
|
extends BaseContext,
|
||||||
ExtendContext {}
|
ExtendContext {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a context for interacting with components in a Discord bot.
|
||||||
|
* @template Type - The type of component interaction.
|
||||||
|
*/
|
||||||
export class ComponentContext<Type extends keyof ComponentCommandInteractionMap> extends BaseContext {
|
export class ComponentContext<Type extends keyof ComponentCommandInteractionMap> extends BaseContext {
|
||||||
|
/**
|
||||||
|
* Creates a new instance of the ComponentContext class.
|
||||||
|
* @param client - The UsingClient instance.
|
||||||
|
* @param interaction - The component interaction object.
|
||||||
|
*/
|
||||||
constructor(
|
constructor(
|
||||||
readonly client: UsingClient,
|
readonly client: UsingClient,
|
||||||
public interaction: ComponentCommandInteractionMap[Type] | ComponentInteraction,
|
public interaction: ComponentCommandInteractionMap[Type] | ComponentInteraction,
|
||||||
@ -30,34 +44,65 @@ export class ComponentContext<Type extends keyof ComponentCommandInteractionMap>
|
|||||||
super(client);
|
super(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the proxy object.
|
||||||
|
*/
|
||||||
get proxy() {
|
get proxy() {
|
||||||
return this.client.proxy;
|
return this.client.proxy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the language object for the interaction's locale.
|
||||||
|
*/
|
||||||
get t() {
|
get t() {
|
||||||
return this.client.langs!.get(this.interaction?.locale ?? this.client.langs?.defaultLang ?? 'en-US');
|
return this.client.langs!.get(this.interaction?.locale ?? this.client.langs?.defaultLang ?? 'en-US');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the custom ID of the interaction.
|
||||||
|
*/
|
||||||
get customId() {
|
get customId() {
|
||||||
return this.interaction.customId;
|
return this.interaction.customId;
|
||||||
}
|
}
|
||||||
|
|
||||||
get write() {
|
/**
|
||||||
return this.interaction.write;
|
* Writes a response to the interaction.
|
||||||
|
* @param body - The body of the response.
|
||||||
|
* @param fetchReply - Whether to fetch the reply or not.
|
||||||
|
*/
|
||||||
|
write<FR extends boolean = false>(body: InteractionCreateBodyRequest, fetchReply?: FR) {
|
||||||
|
return this.interaction.write(body, fetchReply);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defers the reply to the interaction.
|
||||||
|
* @param ephemeral - Whether the reply should be ephemeral or not.
|
||||||
|
*/
|
||||||
deferReply(ephemeral = false) {
|
deferReply(ephemeral = false) {
|
||||||
return this.interaction.deferReply(ephemeral ? MessageFlags.Ephemeral : undefined);
|
return this.interaction.deferReply(ephemeral ? MessageFlags.Ephemeral : undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
get editResponse() {
|
/**
|
||||||
return this.interaction.editResponse;
|
* Edits the response of the interaction.
|
||||||
|
* @param body - The updated body of the response.
|
||||||
|
*/
|
||||||
|
editResponse(body: InteractionMessageUpdateBodyRequest) {
|
||||||
|
return this.interaction.editResponse(body);
|
||||||
}
|
}
|
||||||
|
|
||||||
get update() {
|
/**
|
||||||
return this.interaction.update;
|
* Updates the interaction with new data.
|
||||||
|
* @param body - The updated body of the interaction.
|
||||||
|
*/
|
||||||
|
update(body: ComponentInteractionMessageUpdate) {
|
||||||
|
return this.interaction.update(body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Edits the response or replies to the interaction.
|
||||||
|
* @param body - The body of the response or updated body of the interaction.
|
||||||
|
* @param fetchReply - Whether to fetch the reply or not.
|
||||||
|
*/
|
||||||
editOrReply<FR extends boolean = false>(
|
editOrReply<FR extends boolean = false>(
|
||||||
body: InteractionCreateBodyRequest | InteractionMessageUpdateBodyRequest,
|
body: InteractionCreateBodyRequest | InteractionMessageUpdateBodyRequest,
|
||||||
fetchReply?: FR,
|
fetchReply?: FR,
|
||||||
@ -65,9 +110,19 @@ export class ComponentContext<Type extends keyof ComponentCommandInteractionMap>
|
|||||||
return this.interaction.editOrReply(body as InteractionCreateBodyRequest, fetchReply);
|
return this.interaction.editOrReply(body as InteractionCreateBodyRequest, fetchReply);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the response of the interaction.
|
||||||
|
* @returns A promise that resolves when the response is deleted.
|
||||||
|
*/
|
||||||
deleteResponse() {
|
deleteResponse() {
|
||||||
return this.interaction.deleteResponse();
|
return this.interaction.deleteResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the channel of the interaction.
|
||||||
|
* @param mode - The mode to fetch the channel.
|
||||||
|
* @returns A promise that resolves to the channel.
|
||||||
|
*/
|
||||||
channel(mode?: 'rest' | 'flow'): Promise<AllChannels>;
|
channel(mode?: 'rest' | 'flow'): Promise<AllChannels>;
|
||||||
channel(mode?: 'cache'): ReturnCache<AllChannels>;
|
channel(mode?: 'cache'): ReturnCache<AllChannels>;
|
||||||
channel(mode: 'cache' | 'rest' | 'flow' = 'cache') {
|
channel(mode: 'cache' | 'rest' | 'flow' = 'cache') {
|
||||||
@ -76,6 +131,11 @@ export class ComponentContext<Type extends keyof ComponentCommandInteractionMap>
|
|||||||
return this.client.channels.fetch(this.channelId, mode === 'rest');
|
return this.client.channels.fetch(this.channelId, mode === 'rest');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the bot member in the guild of the interaction.
|
||||||
|
* @param mode - The mode to fetch the member.
|
||||||
|
* @returns A promise that resolves to the bot member.
|
||||||
|
*/
|
||||||
me(mode?: 'rest' | 'flow'): Promise<GuildMember>;
|
me(mode?: 'rest' | 'flow'): Promise<GuildMember>;
|
||||||
me(mode?: 'cache'): ReturnCache<GuildMember | undefined>;
|
me(mode?: 'cache'): ReturnCache<GuildMember | undefined>;
|
||||||
me(mode: 'cache' | 'rest' | 'flow' = 'cache') {
|
me(mode: 'cache' | 'rest' | 'flow' = 'cache') {
|
||||||
@ -89,6 +149,11 @@ export class ComponentContext<Type extends keyof ComponentCommandInteractionMap>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the guild of the interaction.
|
||||||
|
* @param mode - The mode to fetch the guild.
|
||||||
|
* @returns A promise that resolves to the guild.
|
||||||
|
*/
|
||||||
guild(mode?: 'rest' | 'flow'): Promise<Guild<'cached' | 'api'> | undefined>;
|
guild(mode?: 'rest' | 'flow'): Promise<Guild<'cached' | 'api'> | undefined>;
|
||||||
guild(mode?: 'cache'): ReturnCache<Guild<'cached'> | undefined>;
|
guild(mode?: 'cache'): ReturnCache<Guild<'cached'> | undefined>;
|
||||||
guild(mode: 'cache' | 'rest' | 'flow' = 'cache') {
|
guild(mode: 'cache' | 'rest' | 'flow' = 'cache') {
|
||||||
@ -104,18 +169,30 @@ export class ComponentContext<Type extends keyof ComponentCommandInteractionMap>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the ID of the guild of the interaction.
|
||||||
|
*/
|
||||||
get guildId() {
|
get guildId() {
|
||||||
return this.interaction.guildId;
|
return this.interaction.guildId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the ID of the channel of the interaction.
|
||||||
|
*/
|
||||||
get channelId() {
|
get channelId() {
|
||||||
return this.interaction.channelId!;
|
return this.interaction.channelId!;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the author of the interaction.
|
||||||
|
*/
|
||||||
get author() {
|
get author() {
|
||||||
return this.interaction.user;
|
return this.interaction.user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the member of the interaction.
|
||||||
|
*/
|
||||||
get member() {
|
get member() {
|
||||||
return this.interaction.member;
|
return this.interaction.member;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user