xernerx 4.12.0 → 4.13.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.
@@ -1,7 +1,7 @@
1
1
  /** @format */
2
2
  import { ContextMenuCommandBuilder } from 'discord.js';
3
3
  import { z } from 'zod';
4
- import { XernerxLog } from '../main.js';
4
+ import XernerxLog from '../tools/XernerxLog.js';
5
5
  export default class XernerxContextCommand {
6
6
  constructor(id, options) {
7
7
  this.id = id;
@@ -1,7 +1,7 @@
1
1
  /** @format */
2
2
  import { XernerxEventOptions } from '../types/interfaces.js';
3
3
  import { XernerxEventType } from '../types/types.js';
4
- import { XernerxClientType } from '../main.js';
4
+ import { XernerxClientType } from '../types/extenders.js';
5
5
  /**
6
6
  * @description - The event builder for events.
7
7
  * @param {String} id - The unique ID of the event.
@@ -1,6 +1,6 @@
1
1
  /** @format */
2
2
  import { z } from 'zod';
3
- import { XernerxLog } from '../main.js';
3
+ import XernerxLog from '../tools/XernerxLog.js';
4
4
  /**
5
5
  * @description - The event builder for events.
6
6
  * @param {String} id - The unique ID of the event.
@@ -2,7 +2,9 @@
2
2
  import { XernerxInhibitorOptions, MessageCommandArguments, SlashCommandArguments, ContextCommandArguments } from '../types/interfaces.js';
3
3
  import { InhibitorType, XernerxInteraction } from '../types/types.js';
4
4
  import { XernerxClientType, XernerxMessage, XernerxMessageContextInteraction, XernerxSlashInteraction, XernerxUserContextInteraction } from '../types/extenders.js';
5
- import { XernerxContextCommand, XernerxMessageCommand, XernerxSlashCommand } from '../main.js';
5
+ import XernerxContextCommand from '../build/XernerxContextCommand.js';
6
+ import XernerxSlashCommand from '../build/XernerxSlashCommand.js';
7
+ import XernerxMessageCommand from '../build/XernerxMessageCommand.js';
6
8
  /**
7
9
  * @description - The inhibitor builder for inhibitors.
8
10
  * @param {String} id - The unique ID of the inhibitor.
@@ -12,8 +12,8 @@ export default class XernerxMessageCommand {
12
12
  readonly usage: string | null | undefined;
13
13
  readonly info: string | null | undefined;
14
14
  readonly separator: string | undefined;
15
- readonly args: import("../main.js").MessageCommandArgumentOptions[] | undefined;
16
- readonly flags: import("../main.js").MessageCommandFlagOptions[] | undefined;
15
+ readonly args: import("../types/interfaces.js").MessageCommandArgumentOptions[] | undefined;
16
+ readonly flags: import("../types/interfaces.js").MessageCommandFlagOptions[] | undefined;
17
17
  readonly category: string | null | undefined;
18
18
  readonly cooldown: number | null | undefined;
19
19
  readonly channel: ("GuildText" | "DM" | "GuildVoice" | "GroupDM" | "GuildCategory" | "GuildAnnouncement" | "AnnouncementThread" | "PublicThread" | "PrivateThread" | "GuildStageVoice" | "GuildDirectory" | "GuildForum" | "GuildMedia" | "GuildNews" | "GuildNewsThread" | "GuildPublicThread" | "GuildPrivateThread")[] | null;
@@ -1,6 +1,6 @@
1
1
  /** @format */
2
2
  import { z } from 'zod';
3
- import { XernerxLog } from '../main.js';
3
+ import XernerxLog from '../tools/XernerxLog.js';
4
4
  export default class XernerxMessageCommand {
5
5
  constructor(id, options) {
6
6
  this.id = id;
@@ -30,8 +30,8 @@ export default class XernerxSlashCommand {
30
30
  voice?: boolean | undefined;
31
31
  } | undefined;
32
32
  readonly permissions: {
33
- user?: string[] | import("../main.js").PermissionNames[] | null | undefined;
34
- client?: string[] | import("../main.js").PermissionNames[] | null | undefined;
33
+ user?: string[] | import("../types/types.js").PermissionNames[] | null | undefined;
34
+ client?: string[] | import("../types/types.js").PermissionNames[] | null | undefined;
35
35
  dm?: boolean | undefined;
36
36
  } | undefined;
37
37
  readonly defer: {
@@ -1,7 +1,7 @@
1
1
  /** @format */
2
2
  import Discord, { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from 'discord.js';
3
3
  import { z } from 'zod';
4
- import { XernerxLog } from '../main.js';
4
+ import XernerxLog from '../tools/XernerxLog.js';
5
5
  export default class XernerxSlashCommand {
6
6
  constructor(id, options) {
7
7
  this.id = id;
@@ -2,7 +2,8 @@
2
2
  import { Client, ClientOptions, Collection } from 'discord.js';
3
3
  import { XernerxOptions, ModuleOptions, XernerxCommands, XernerxCache } from '../types/interfaces.js';
4
4
  import ClientUtil from '../utils/ClientUtil.js';
5
- import { XernerxInhibitor, XernerxEvent } from '../main.js';
5
+ import XernerxInhibitor from '../build/XernerxInhibitor.js';
6
+ import XernerxEvent from '../build/XernerxEvent.js';
6
7
  import Cooldowns from '../models/Cooldowns.js';
7
8
  export default class XernerxClient extends Client {
8
9
  readonly settings: {
@@ -17,18 +18,18 @@ export default class XernerxClient extends Client {
17
18
  } | undefined;
18
19
  ignore?: {
19
20
  owner: boolean;
20
- users: string[];
21
- channels: string[];
22
- guilds: string[];
23
21
  self: boolean;
24
22
  bots: boolean;
25
23
  system: boolean;
24
+ users: string[];
25
+ channels: string[];
26
+ guilds: string[];
26
27
  } | undefined;
27
28
  log?: boolean | {
28
- ready: boolean;
29
29
  error: boolean;
30
- warn: boolean;
30
+ ready: boolean;
31
31
  info: boolean;
32
+ warn: boolean;
32
33
  table: string[] | null;
33
34
  } | undefined;
34
35
  cooldown?: {
@@ -1,7 +1,7 @@
1
1
  /** @format */
2
2
  import { ShardingManager } from 'discord.js';
3
- import XernerxLog from '../tools/XernerxLog.js';
4
3
  import { Style } from 'dumfunctions';
4
+ import XernerxLog from '../tools/XernerxLog.js';
5
5
  export default class XernerxShardClient extends ShardingManager {
6
6
  constructor(file, discordOptions, xernerxOptions) {
7
7
  super(file, discordOptions);
@@ -37,12 +37,12 @@ export default class XernerxShardClient extends ShardingManager {
37
37
  const collector = setInterval(() => {
38
38
  const index = shards.size - 1;
39
39
  if (shards.get(index)?.ready) {
40
+ clearInterval(collector);
40
41
  new XernerxLog({ settings: xernerxOptions }).info(`All Shards launched for ${Style.log(String(this.user?.tag), {
41
42
  color: Style.TextColor.Blue,
42
43
  })} with a total of ${Style.log(String(this.stats.shardCount), { color: Style.TextColor.Cyan })} shard${this.stats.shardCount > 1 ? 's' : ''}, watching ${Style.log(String(this.stats.guildCount), {
43
44
  color: Style.TextColor.Cyan,
44
45
  })} guild${this.stats.guildCount > 1 ? 's' : ''}, and ${Style.log(String(this.stats.userCount), { color: Style.TextColor.Cyan })} user${this.stats.userCount > 1 ? 's' : ''}!`);
45
- clearInterval(collector);
46
46
  }
47
47
  }, 1000);
48
48
  });
@@ -1,8 +1,8 @@
1
1
  /** @format */
2
2
  import { GatewayVersion, REST, Routes } from 'discord.js';
3
+ import { Style } from 'dumfunctions';
3
4
  import XernerxLog from '../tools/XernerxLog.js';
4
5
  import XernerxError from '../tools/XernerxError.js';
5
- import { Style } from 'dumfunctions';
6
6
  const globalCommands = [];
7
7
  const localCommands = [];
8
8
  export default function deploy(client) {
@@ -1,3 +1,3 @@
1
1
  /** @format */
2
- import { XernerxClient } from '../main.js';
2
+ import XernerxClient from '../client/XernerxClient.js';
3
3
  export default function reload(client: XernerxClient, type: 'commands' | 'context' | 'message' | 'slash' | 'events' | 'inhibitors'): Promise<true | void | null>;
@@ -1,4 +1,4 @@
1
1
  /** @format */
2
- import XernerxClient from '../main.js';
2
+ import XernerxClient from '../client/XernerxClient.js';
3
3
  import { PresenceOptions } from '../types/interfaces.js';
4
4
  export default function setPresence(client: XernerxClient, options: PresenceOptions): import("discord.js").ClientPresence | undefined;
@@ -1,9 +1,9 @@
1
1
  /** @format */
2
2
  import { z } from 'zod';
3
+ import { Style } from 'dumfunctions';
3
4
  import * as path from 'path';
4
5
  import Handler from './Handler.js';
5
6
  import XernerxLog from '../tools/XernerxLog.js';
6
- import { Style } from 'dumfunctions';
7
7
  export default class EventHandler extends Handler {
8
8
  constructor(client) {
9
9
  super(client);
@@ -1,7 +1,7 @@
1
1
  /** @format */
2
+ import { Style } from 'dumfunctions';
2
3
  import Handler from './Handler.js';
3
4
  import XernerxLog from '../tools/XernerxLog.js';
4
- import { Style } from 'dumfunctions';
5
5
  export default class ExtensionHandler extends Handler {
6
6
  constructor(client) {
7
7
  super(client);
@@ -1,9 +1,9 @@
1
1
  /** @format */
2
2
  import { z } from 'zod';
3
3
  import * as path from 'path';
4
+ import { Style } from 'dumfunctions';
4
5
  import Handler from './Handler.js';
5
6
  import XernerxLog from '../tools/XernerxLog.js';
6
- import { Style } from 'dumfunctions';
7
7
  export default class InhibitorHandler extends Handler {
8
8
  constructor(client) {
9
9
  super(client);
@@ -1,7 +1,7 @@
1
1
  /** @format */
2
+ import dbl from 'dbl-sdk';
2
3
  import XernerxClient from '../client/XernerxClient.js';
3
4
  import Handler from './Handler.js';
4
- import dbl from 'dbl-sdk';
5
5
  export default class IntegrationHandler extends Handler {
6
6
  readonly readyTimestamp: number;
7
7
  readonly dbl: dbl;
@@ -1,7 +1,7 @@
1
1
  /** @format */
2
- // import XernerxLog from '../tools/XernerxLog.js';
3
- import Handler from './Handler.js';
4
2
  import dbl from 'dbl-sdk';
3
+ import XernerxLog from '../tools/XernerxLog.js';
4
+ import Handler from './Handler.js';
5
5
  export default class IntegrationHandler extends Handler {
6
6
  constructor(client) {
7
7
  super(client);
@@ -21,5 +21,6 @@ export default class IntegrationHandler extends Handler {
21
21
  });
22
22
  }
23
23
  });
24
+ new XernerxLog(this.client).info(`Successfully syncing with top.gg.`);
24
25
  }
25
26
  }
package/dist/main.d.ts CHANGED
@@ -8,14 +8,14 @@ import XernerxContextCommand from './build/XernerxContextCommand.js';
8
8
  import XernerxEvent from './build/XernerxEvent.js';
9
9
  import XernerxInhibitor from './build/XernerxInhibitor.js';
10
10
  import XernerxLog from './tools/XernerxLog.js';
11
- export { XernerxIntents as XernerxIntents } from './tools/XernerxIntents.js';
11
+ export { XernerxIntents } from './tools/XernerxIntents.js';
12
12
  export * from 'discord.js';
13
13
  export * from 'dumfunctions';
14
+ import Discord from 'discord.js';
14
15
  import XernerxExtension from 'xernerx-extension-builder';
15
16
  export * from './types/types.js';
16
17
  export * from './types/extenders.js';
17
18
  export * from './types/interfaces.js';
18
- import Discord from 'discord.js';
19
19
  export default XernerxClient;
20
20
  export {
21
21
  /**
package/dist/main.js CHANGED
@@ -10,14 +10,14 @@ import XernerxContextCommand from './build/XernerxContextCommand.js';
10
10
  import XernerxEvent from './build/XernerxEvent.js';
11
11
  import XernerxInhibitor from './build/XernerxInhibitor.js';
12
12
  import XernerxLog from './tools/XernerxLog.js';
13
- export { XernerxIntents as XernerxIntents } from './tools/XernerxIntents.js';
13
+ export { XernerxIntents } from './tools/XernerxIntents.js';
14
14
  export * from 'discord.js';
15
15
  export * from 'dumfunctions';
16
+ import Discord from 'discord.js';
16
17
  import XernerxExtension from 'xernerx-extension-builder';
17
18
  export * from './types/types.js';
18
19
  export * from './types/extenders.js';
19
20
  export * from './types/interfaces.js';
20
- import Discord from 'discord.js';
21
21
  export default XernerxClient;
22
22
  export {
23
23
  /**
@@ -1,6 +1,6 @@
1
1
  /** @format */
2
2
  import { Collection } from 'discord.js';
3
- import XernerxClient from '../main.js';
3
+ import XernerxClient from '../client/XernerxClient.js';
4
4
  export default class Cooldowns {
5
5
  private readonly _client;
6
6
  readonly collections: Record<string, Collection<string, unknown>>;
@@ -1,7 +1,7 @@
1
1
  /** @format */
2
2
  import XernerxError from './XernerxError.js';
3
3
  import XernerxClient from '../client/XernerxClient.js';
4
- import { XernerxClientType } from '../main.js';
4
+ import { XernerxClientType } from '../types/extenders.js';
5
5
  export default class XernerxLog {
6
6
  private readonly client;
7
7
  private readonly errorLog;
@@ -1,5 +1,6 @@
1
1
  /** @format */
2
- import { Emoji, Role, XernerxGuildChannel, XernerxMember, XernerxUser } from '../main.js';
2
+ import { Emoji, Role } from 'discord.js';
3
+ import { XernerxGuildChannel, XernerxMember, XernerxUser } from '../types/extenders.js';
3
4
  export default class XernerxText {
4
5
  user(user: string | XernerxUser): string;
5
6
  channel(channel: string | XernerxGuildChannel): string;
@@ -2,7 +2,10 @@
2
2
  import { ChatInputCommandInteraction, Collection, DMChannel, Guild, GuildChannel, GuildMember, Message, MessageContextMenuCommandInteraction, User, UserContextMenuCommandInteraction } from 'discord.js';
3
3
  import InteractionUtil from '../utils/InteractionUtil.js';
4
4
  import MessageUtil from '../utils/MessageUtil.js';
5
- import { ModuleOptions, XernerxCache, XernerxCommands, XernerxEvent, XernerxInhibitor, XernerxClient } from '../main.js';
5
+ import { ModuleOptions, XernerxCache, XernerxCommands } from '../types/interfaces.js';
6
+ import XernerxEvent from '../build/XernerxEvent.js';
7
+ import XernerxInhibitor from '../build/XernerxInhibitor.js';
8
+ import XernerxClient from '../client/XernerxClient.js';
6
9
  import ClientUtil from '../utils/ClientUtil.js';
7
10
  export interface XernerxUser extends User {
8
11
  owner: boolean;
@@ -1,9 +1,11 @@
1
1
  /** @format */
2
+ import { Collection } from 'discord.js';
2
3
  import XernerxClient from '../client/XernerxClient.js';
3
4
  import { PresenceOptions, ResolveCommandOptions } from '../types/interfaces.js';
4
5
  import Util from './Util.js';
5
- import { Collection } from 'discord.js';
6
- import { XernerxContextCommand, XernerxMessageCommand, XernerxSlashCommand } from '../main.js';
6
+ import XernerxContextCommand from '../build/XernerxContextCommand.js';
7
+ import XernerxMessageCommand from '../build/XernerxMessageCommand.js';
8
+ import XernerxSlashCommand from '../build/XernerxSlashCommand.js';
7
9
  export default class ClientUtil extends Util {
8
10
  hasVoted: Function;
9
11
  constructor(client: XernerxClient);
@@ -1,7 +1,7 @@
1
1
  /** @format */
2
+ import { Collection } from 'discord.js';
2
3
  import setPresence from '../functions/setPresence.js';
3
4
  import Util from './Util.js';
4
- import { Collection } from 'discord.js';
5
5
  export default class ClientUtil extends Util {
6
6
  constructor(client) {
7
7
  super(client);
@@ -1,10 +1,13 @@
1
1
  /** @format */
2
- /// <reference types="node" resolution-mode="require"/>
3
- import { EmbedBuilder, MessageEditOptions, MessagePayload, MessageReplyOptions, User } from 'discord.js';
2
+ import { EmbedBuilder, MessageCreateOptions, MessageEditOptions, MessagePayload, MessageReplyOptions } from 'discord.js';
4
3
  import XernerxClient from '../client/XernerxClient.js';
5
- import { XernerxMessage } from '../types/extenders.js';
4
+ import { XernerxMessage, XernerxUser } from '../types/extenders.js';
6
5
  import Util from './Util.js';
7
- import { PaginatorOptions } from '../main.js';
6
+ import { PaginatorOptions } from '../types/interfaces.js';
7
+ type MimicOptions = {
8
+ url: string;
9
+ timeout: number;
10
+ };
8
11
  export default class MessageUtil extends Util {
9
12
  private readonly message;
10
13
  parsed: {
@@ -15,6 +18,7 @@ export default class MessageUtil extends Util {
15
18
  constructor(client: XernerxClient, message: XernerxMessage);
16
19
  send(content: any): Promise<import("discord.js").Message<boolean> | null>;
17
20
  reply(content: string | MessagePayload | MessageReplyOptions | MessageEditOptions): Promise<import("discord.js").Message<boolean> | null>;
18
- webhookReply(content: MessagePayload, url?: URL, user?: User): Promise<void>;
21
+ mimic(user: XernerxUser | string, message: MessageCreateOptions, options: MimicOptions): Promise<void>;
19
22
  paginator(embeds: Array<EmbedBuilder>, options?: PaginatorOptions): Promise<void | import("discord.js").Message<boolean> | null>;
20
23
  }
24
+ export {};
@@ -1,7 +1,6 @@
1
1
  /** @format */
2
- import { ActionRowBuilder, ButtonBuilder, ButtonStyle, ChannelType, StringSelectMenuBuilder, } from 'discord.js';
2
+ import { ActionRowBuilder, ButtonBuilder, ButtonStyle, StringSelectMenuBuilder, } from 'discord.js';
3
3
  import Util from './Util.js';
4
- import sendWebhook from '../functions/sendWebhook.js';
5
4
  import XernerxError from '../tools/XernerxError.js';
6
5
  export default class MessageUtil extends Util {
7
6
  constructor(client, message) {
@@ -39,23 +38,22 @@ export default class MessageUtil extends Util {
39
38
  this.client.cache.messages.set(this.message.id, msg.id);
40
39
  return msg;
41
40
  }
42
- async webhookReply(content, url, user) {
43
- if (this.message.channel.type === ChannelType.DM)
44
- throw new XernerxError(`Can't use this method in DM Channels`);
45
- const channel = this.message.channel;
46
- let webhook;
47
- if (!url) {
48
- webhook = await channel.createWebhook({
49
- name: user?.username || this.client.user?.username,
50
- avatar: user?.avatarURL() || this.client.user?.avatarURL(),
51
- });
52
- }
53
- if (!webhook)
54
- webhook = { url };
55
- await sendWebhook(webhook.url, content);
56
- if (!url)
57
- webhook.delete();
58
- return;
41
+ async mimic(user, message, options) {
42
+ user = (typeof user == 'string' ? (await this.client.users.fetch(user)) : user);
43
+ const webhooks = await this.message.channel.fetchWebhooks();
44
+ const webhook = webhooks.find((wh) => wh.token) ||
45
+ (await this.message.channel.createWebhook({
46
+ name: `${this.client.user?.username}'s mimic webhook.`,
47
+ avatar: user.displayAvatarURL() || this.client.user?.displayAvatarURL(),
48
+ }));
49
+ await webhook.send({
50
+ content: message.content,
51
+ username: user.username,
52
+ avatarURL: user.displayAvatarURL(),
53
+ });
54
+ setTimeout(() => {
55
+ webhook.delete().catch(() => true);
56
+ }, options.timeout);
59
57
  }
60
58
  async paginator(embeds, options = {}) {
61
59
  let buttonRow, menuRow;
@@ -1,6 +1,9 @@
1
1
  /** @format */
2
- import { ContextCommandArguments, MessageCommandArguments, SlashCommandArguments, XernerxContextCommand, XernerxMessageCommand, XernerxSlashCommand } from '../main.js';
2
+ import { ContextCommandArguments, MessageCommandArguments, SlashCommandArguments } from '../types/interfaces.js';
3
+ import XernerxContextCommand from '../build/XernerxContextCommand.js';
4
+ import XernerxMessageCommand from '../build/XernerxMessageCommand.js';
5
+ import XernerxSlashCommand from '../build/XernerxSlashCommand.js';
3
6
  import { XernerxMessage, XernerxMessageContextInteraction, XernerxSlashInteraction, XernerxUserContextInteraction } from '../types/extenders.js';
4
7
  import { InhibitorType, XernerxInteraction } from '../types/types.js';
5
8
  export declare function inhibitorValidation(event: XernerxMessage | XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxMessageContextInteraction>, args?: SlashCommandArguments | MessageCommandArguments | ContextCommandArguments<'user' | 'message'> | null, cmd?: XernerxContextCommand | XernerxMessageCommand | XernerxSlashCommand, type?: 'pre' | 'check' | 'post'): Promise<boolean>;
6
- export declare function inhibitorArguments(event: XernerxMessage | XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxMessageContextInteraction>, cmd: XernerxContextCommand | XernerxMessageCommand | XernerxSlashCommand | null, type: InhibitorType): import("../main.js").XernerxUser | import("discord.js").GuildMember | import("discord.js").Guild | import("discord.js").TextBasedChannel | XernerxMessageCommand | XernerxSlashCommand | XernerxContextCommand | import("../main.js").APIInteractionGuildMember | null | undefined;
9
+ export declare function inhibitorArguments(event: XernerxMessage | XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxMessageContextInteraction>, cmd: XernerxContextCommand | XernerxMessageCommand | XernerxSlashCommand | null, type: InhibitorType): import("../types/extenders.js").XernerxUser | import("discord.js").GuildMember | import("discord.js").Guild | import("discord.js").TextBasedChannel | XernerxMessageCommand | XernerxSlashCommand | XernerxContextCommand | import("discord.js").APIInteractionGuildMember | null | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xernerx",
3
- "version": "4.12.0",
3
+ "version": "4.13.0",
4
4
  "description": "A bot framework for discord.js.",
5
5
  "main": "dist/main.js",
6
6
  "type": "module",
@@ -40,7 +40,7 @@
40
40
  "url": "https://github.com/xernerx/xernerx/issues"
41
41
  },
42
42
  "dependencies": {
43
- "dbl-sdk": "^2.0.2",
43
+ "dbl-sdk": "^2.0.3",
44
44
  "discord.js": "^14.14.1",
45
45
  "dumfunctions": "2.1.2",
46
46
  "xernerx-extension-builder": "0.0.16",