seyfert 2.2.1-dev-13556253089.0 → 2.2.1-dev-13622575948.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,7 @@ import type { Button } from './Button';
3
3
  import type { TextInput } from './Modal';
4
4
  import type { BuilderSelectMenus } from './SelectMenu';
5
5
  export type ComponentCallback<T extends ComponentInteraction | StringSelectMenuInteraction = ComponentInteraction | StringSelectMenuInteraction> = (interaction: T, stop: ComponentStopCallback, refresh: ComponentRefreshCallback) => any;
6
+ export type ComponentOnErrorCallback<T extends ComponentInteraction | StringSelectMenuInteraction = ComponentInteraction | StringSelectMenuInteraction> = (interaction: T, error: unknown, stop: ComponentStopCallback, refresh: ComponentRefreshCallback) => any;
6
7
  export type ComponentFilterCallback<T = ComponentInteraction> = (interaction: T) => any;
7
8
  export type ComponentStopCallback = (reason: 'messageDelete' | 'channelDelete' | 'guildDelete' | 'idle' | 'timeout' | (string & {}) | undefined, refresh: ComponentRefreshCallback) => any;
8
9
  export type ComponentRefreshCallback = () => any;
@@ -19,4 +20,5 @@ export interface ListenerOptions {
19
20
  filter?: ComponentFilterCallback;
20
21
  onPass?: ComponentFilterCallback;
21
22
  onStop?: ComponentStopCallback;
23
+ onError?: ComponentOnErrorCallback;
22
24
  }
@@ -1,5 +1,6 @@
1
1
  import { type AnonymousGuildStructure, type AutoModerationRuleStructure, type GuildMemberStructure, type GuildStructure, type StickerStructure } from '../../client/transformers';
2
- import { type AllChannels, type CreateStickerBodyRequest, Guild } from '../../structures';
2
+ import type { SeyfertChannelMap } from '../../commands';
3
+ import { type AllChannels, type CreateStickerBodyRequest, Guild, type GuildChannelTypes } from '../../structures';
3
4
  import type { GuildWidgetStyle, RESTGetAPICurrentUserGuildsQuery, RESTPatchAPIAutoModerationRuleJSONBody, RESTPatchAPIChannelJSONBody, RESTPatchAPIGuildChannelPositionsJSONBody, RESTPatchAPIGuildJSONBody, RESTPatchAPIGuildStickerJSONBody, RESTPostAPIAutoModerationRuleJSONBody, RESTPostAPIGuildChannelJSONBody, RESTPostAPIGuildsJSONBody } from '../../types';
4
5
  import { BaseShorter } from './base';
5
6
  export declare class GuildShorter extends BaseShorter {
@@ -53,7 +54,9 @@ export declare class GuildShorter extends BaseShorter {
53
54
  * @param body The data for creating the channel.
54
55
  * @returns A Promise that resolves to the created channel.
55
56
  */
56
- create: (guildId: string, body: RESTPostAPIGuildChannelJSONBody) => Promise<AllChannels>;
57
+ create: <T extends GuildChannelTypes = GuildChannelTypes>(guildId: string, body: RESTPostAPIGuildChannelJSONBody & {
58
+ type: T;
59
+ }) => Promise<SeyfertChannelMap[T]>;
57
60
  /**
58
61
  * Deletes a channel from the guild.
59
62
  * @param guildId The ID of the guild.
@@ -1,4 +1,4 @@
1
- import type { ComponentCallback, ListenerOptions, ModalSubmitCallback } from '../builders/types';
1
+ import type { ComponentCallback, ComponentOnErrorCallback, ListenerOptions, ModalSubmitCallback } from '../builders/types';
2
2
  import { LimitedCollection } from '../collection';
3
3
  import { type UsingClient } from '../commands';
4
4
  import type { FileLoaded } from '../commands/handler';
@@ -20,6 +20,7 @@ type COMPONENTS = {
20
20
  guildId: string | undefined;
21
21
  idle?: NodeJS.Timeout;
22
22
  timeout?: NodeJS.Timeout;
23
+ onError?: ComponentOnErrorCallback;
23
24
  __run: (customId: UserMatches, callback: ComponentCallback) => any;
24
25
  };
25
26
  export type MatchCallback = (str: string) => boolean;
@@ -60,6 +60,7 @@ class ComponentHandler extends common_1.BaseHandler {
60
60
  });
61
61
  }
62
62
  },
63
+ onError: options.onError,
63
64
  });
64
65
  return {
65
66
  //@ts-expect-error generic
@@ -84,14 +85,31 @@ class ComponentHandler extends common_1.BaseHandler {
84
85
  return row.options.onPass?.(interaction);
85
86
  }
86
87
  row.idle?.refresh();
87
- await component.callback(interaction, reason => {
88
+ const stop = reason => {
88
89
  this.clearValue(id);
89
90
  row.options?.onStop?.(reason ?? 'stop', () => {
90
91
  this.createComponentCollector(row.messageId, row.channelId, row.guildId, row.options, row.components);
91
92
  });
92
- }, () => {
93
+ };
94
+ const refresh = () => {
93
95
  this.resetTimeouts(id);
94
- });
96
+ };
97
+ try {
98
+ await component.callback(interaction, stop, refresh);
99
+ }
100
+ catch (err) {
101
+ try {
102
+ if (row.onError) {
103
+ await row.onError(interaction, err, stop, refresh);
104
+ }
105
+ else {
106
+ this.client.logger.error('<Client>.components.onComponent', err);
107
+ }
108
+ }
109
+ catch (err) {
110
+ this.client.logger.error('<Client>.components.onComponent', err);
111
+ }
112
+ }
95
113
  }
96
114
  hasComponent(id, customId) {
97
115
  return this.values.get(id)?.components?.some(x => x.match(customId));
@@ -64,7 +64,9 @@ export declare class Guild<State extends StructStates = 'api'> extends Guild_bas
64
64
  channels: {
65
65
  list: (force?: boolean) => Promise<import("./channels").AllChannels[]>;
66
66
  fetch: (id: string, force?: boolean) => Promise<import("./channels").AllChannels>;
67
- create: (body: import("../types").RESTPostAPIGuildChannelJSONBody) => Promise<import("./channels").AllChannels>;
67
+ create: <T extends import("./channels").GuildChannelTypes = import("./channels").GuildChannelTypes>(body: import("../types").RESTPostAPIGuildChannelJSONBody & {
68
+ type: T;
69
+ }) => Promise<import("../commands").SeyfertChannelMap[T]>;
68
70
  delete: (id: string, reason?: string) => Promise<import("./channels").AllChannels>;
69
71
  edit: (id: string, body: import("../types").RESTPatchAPIChannelJSONBody, reason?: string) => Promise<import("./channels").AllChannels>;
70
72
  editPositions: (body: import("../types").RESTPatchAPIGuildChannelPositionsJSONBody) => Promise<never>;
@@ -1,7 +1,7 @@
1
1
  import { Collection, type RawFile, type ReturnCache } from '..';
2
2
  import type { Overwrites } from '../cache/resources/overwrites';
3
3
  import { type BaseChannelStructure, type BaseGuildChannelStructure, type CategoryChannelStructure, type DMChannelStructure, type DirectoryChannelStructure, type ForumChannelStructure, type GuildMemberStructure, type GuildStructure, type MediaChannelStructure, type MessageStructure, type NewsChannelStructure, type StageChannelStructure, type TextGuildChannelStructure, type ThreadChannelStructure, type UserStructure, type VoiceChannelStructure, type VoiceStateStructure, type WebhookStructure } from '../client';
4
- import type { UsingClient } from '../commands';
4
+ import type { SeyfertChannelMap, UsingClient } from '../commands';
5
5
  import { type EmojiResolvable, type MessageCreateBodyRequest, type MessageUpdateBodyRequest, type MethodContext, type ObjectToLower, type StringToNumber, type ToClass } from '../common';
6
6
  import { type APIChannelBase, type APIDMChannel, type APIGuildCategoryChannel, type APIGuildChannel, type APIGuildForumChannel, type APIGuildForumDefaultReactionEmoji, type APIGuildForumTag, type APIGuildMediaChannel, type APIGuildStageVoiceChannel, type APIGuildVoiceChannel, type APINewsChannel, type APITextChannel, type APIThreadChannel, ChannelType, type RESTGetAPIChannelMessageReactionUsersQuery, type RESTGetAPIChannelMessagesQuery, type RESTPatchAPIChannelJSONBody, type RESTPatchAPIGuildChannelPositionsJSONBody, type RESTPostAPIChannelWebhookJSONBody, type RESTPostAPIGuildChannelJSONBody, type RESTPostAPIGuildForumThreadsJSONBody, type SortOrderType, type ThreadAutoArchiveDuration, VideoQualityMode } from '../types';
7
7
  import type { GuildMember } from './GuildMember';
@@ -37,7 +37,9 @@ export declare class BaseNoEditableChannel<T extends ChannelType> extends Discor
37
37
  }>): {
38
38
  list: (force?: boolean) => Promise<AllChannels[]>;
39
39
  fetch: (id: string, force?: boolean) => Promise<AllChannels>;
40
- create: (body: RESTPostAPIGuildChannelJSONBody) => Promise<AllChannels>;
40
+ create: <T extends GuildChannelTypes = GuildChannelTypes>(body: RESTPostAPIGuildChannelJSONBody & {
41
+ type: T;
42
+ }) => Promise<SeyfertChannelMap[T]>;
41
43
  delete: (id: string, reason?: string) => Promise<AllChannels>;
42
44
  edit: (id: string, body: RESTPatchAPIChannelJSONBody, reason?: string) => Promise<AllChannels>;
43
45
  editPositions: (body: RESTPatchAPIGuildChannelPositionsJSONBody) => Promise<never>;
@@ -280,4 +282,5 @@ export type AllTextableChannels = TextGuildChannelStructure | VoiceChannelStruct
280
282
  export type AllGuildTextableChannels = TextGuildChannelStructure | VoiceChannelStructure | NewsChannelStructure | ThreadChannelStructure;
281
283
  export type AllGuildVoiceChannels = VoiceChannelStructure | StageChannelStructure;
282
284
  export type AllChannels = BaseChannelStructure | BaseGuildChannelStructure | TextGuildChannelStructure | DMChannelStructure | VoiceChannelStructure | MediaChannelStructure | ForumChannelStructure | ThreadChannelStructure | CategoryChannelStructure | NewsChannelStructure | DirectoryChannelStructure | StageChannelStructure;
285
+ export type GuildChannelTypes = ChannelType.GuildAnnouncement | ChannelType.GuildVoice | ChannelType.GuildText | ChannelType.GuildStageVoice | ChannelType.GuildForum | ChannelType.GuildMedia | ChannelType.GuildCategory | ChannelType.AnnouncementThread | ChannelType.PrivateThread | ChannelType.PublicThread;
283
286
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "seyfert",
3
- "version": "2.2.1-dev-13556253089.0",
3
+ "version": "2.2.1-dev-13622575948.0",
4
4
  "description": "The most advanced framework for discord bots",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./lib/index.js",