discord-bot-shared 0.16.2 → 0.18.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.
- package/dist/bot.d.ts +1 -0
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +3 -0
- package/dist/bot.js.map +1 -1
- package/dist/event-manager.d.ts +1 -0
- package/dist/event-manager.d.ts.map +1 -1
- package/dist/event-manager.js +2 -1
- package/dist/event-manager.js.map +1 -1
- package/package.json +3 -3
package/dist/bot.d.ts
CHANGED
package/dist/bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","names":[],"sources":["../src/bot.ts"],"mappings":";;;;;UAQU,UAAA;EACR,aAAA;EACA,KAAA;EACA,aAAA,EAAe,aAAa;AAAA;AAAA,UAGb,cAAA;EACf,aAAA;EACA,KAAA;EACA,MAAA,EAAQ,MAAA;EACR,IAAA,EAAM,IAAI;AAAA;AAAA,cAGC,GAAA;EAAA;WAGK,QAAA,EAAU,cAAA;EAAA,SACV,MAAA,EAAQ,YAAA;cAEL,OAAA,EAAS,UAAA;EAYf,KAAA,IAAS,OAAA;AAAA"}
|
|
1
|
+
{"version":3,"file":"bot.d.ts","names":[],"sources":["../src/bot.ts"],"mappings":";;;;;UAQU,UAAA;EACR,aAAA;EACA,KAAA;EACA,aAAA,EAAe,aAAa;AAAA;AAAA,UAGb,cAAA;EACf,aAAA;EACA,KAAA;EACA,MAAA,EAAQ,MAAA;EACR,IAAA,EAAM,IAAI;AAAA;AAAA,cAGC,GAAA;EAAA;WAGK,QAAA,EAAU,cAAA;EAAA,SACV,MAAA,EAAQ,YAAA;cAEL,OAAA,EAAS,UAAA;EAYf,KAAA,IAAS,OAAA;EAYT,MAAA,IAAU,OAAA;AAAA"}
|
package/dist/bot.js
CHANGED
|
@@ -26,6 +26,9 @@ var Bot = class {
|
|
|
26
26
|
const loginResult = await attempt(async () => this.#discord.client.login(this.#discord.token));
|
|
27
27
|
if (isErr(loginResult)) console.error(`failed to login: ${loginResult.messageChain}`);
|
|
28
28
|
}
|
|
29
|
+
async logout() {
|
|
30
|
+
await this.#discord.client.destroy();
|
|
31
|
+
}
|
|
29
32
|
};
|
|
30
33
|
//#endregion
|
|
31
34
|
export { Bot };
|
package/dist/bot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.js","names":["#discord"],"sources":["../src/bot.ts"],"sourcesContent":["// oxlint-disable no-underscore-dangle\nimport type { ClientOptions } from \"discord.js\"\nimport { Client, Events, REST } from \"discord.js\"\nimport { attempt, isErr } from \"ts-explicit-errors\"\n\nimport { CommandManager } from \"#/command-manager.ts\"\nimport { EventManager } from \"#/event-manager.ts\"\n\ninterface BotOptions {\n applicationId: string\n token: string\n clientOptions: ClientOptions\n}\n\nexport interface DiscordContext {\n applicationId: string\n token: string\n client: Client\n rest: REST\n}\n\nexport class Bot {\n readonly #discord: DiscordContext\n\n public readonly commands: CommandManager\n public readonly events: EventManager\n\n public constructor(options: BotOptions) {\n this.#discord = {\n applicationId: options.applicationId,\n token: options.token,\n client: new Client(options.clientOptions),\n rest: new REST().setToken(options.token),\n }\n\n this.commands = new CommandManager(this.#discord)\n this.events = new EventManager(this.#discord)\n }\n\n public async login(): Promise<void> {\n this.#discord.client.once(Events.ClientReady, (readyClient) => {\n console.log(`Client is ready. Logged in as '${readyClient.user.tag}'.`)\n })\n\n this.commands._listen()\n this.events._listen()\n\n const loginResult = await attempt(async () => this.#discord.client.login(this.#discord.token))\n if (isErr(loginResult)) console.error(`failed to login: ${loginResult.messageChain}`)\n }\n}\n"],"mappings":";;;;;AAqBA,IAAa,MAAb,MAAiB;CACf;CAEA;CACA;CAEA,YAAmB,SAAqB;EACtC,KAAKA,WAAW;GACd,eAAe,QAAQ;GACvB,OAAO,QAAQ;GACf,QAAQ,IAAI,OAAO,QAAQ,aAAa;GACxC,MAAM,IAAI,KAAK,CAAC,CAAC,SAAS,QAAQ,KAAK;EACzC;EAEA,KAAK,WAAW,IAAI,eAAe,KAAKA,QAAQ;EAChD,KAAK,SAAS,IAAI,aAAa,KAAKA,QAAQ;CAC9C;CAEA,MAAa,QAAuB;EAClC,KAAKA,SAAS,OAAO,KAAK,OAAO,cAAc,gBAAgB;GAC7D,QAAQ,IAAI,kCAAkC,YAAY,KAAK,IAAI,GAAG;EACxE,CAAC;EAED,KAAK,SAAS,QAAQ;EACtB,KAAK,OAAO,QAAQ;EAEpB,MAAM,cAAc,MAAM,QAAQ,YAAY,KAAKA,SAAS,OAAO,MAAM,KAAKA,SAAS,KAAK,CAAC;EAC7F,IAAI,MAAM,WAAW,GAAG,QAAQ,MAAM,oBAAoB,YAAY,cAAc;CACtF;AACF"}
|
|
1
|
+
{"version":3,"file":"bot.js","names":["#discord"],"sources":["../src/bot.ts"],"sourcesContent":["// oxlint-disable no-underscore-dangle\nimport type { ClientOptions } from \"discord.js\"\nimport { Client, Events, REST } from \"discord.js\"\nimport { attempt, isErr } from \"ts-explicit-errors\"\n\nimport { CommandManager } from \"#/command-manager.ts\"\nimport { EventManager } from \"#/event-manager.ts\"\n\ninterface BotOptions {\n applicationId: string\n token: string\n clientOptions: ClientOptions\n}\n\nexport interface DiscordContext {\n applicationId: string\n token: string\n client: Client\n rest: REST\n}\n\nexport class Bot {\n readonly #discord: DiscordContext\n\n public readonly commands: CommandManager\n public readonly events: EventManager\n\n public constructor(options: BotOptions) {\n this.#discord = {\n applicationId: options.applicationId,\n token: options.token,\n client: new Client(options.clientOptions),\n rest: new REST().setToken(options.token),\n }\n\n this.commands = new CommandManager(this.#discord)\n this.events = new EventManager(this.#discord)\n }\n\n public async login(): Promise<void> {\n this.#discord.client.once(Events.ClientReady, (readyClient) => {\n console.log(`Client is ready. Logged in as '${readyClient.user.tag}'.`)\n })\n\n this.commands._listen()\n this.events._listen()\n\n const loginResult = await attempt(async () => this.#discord.client.login(this.#discord.token))\n if (isErr(loginResult)) console.error(`failed to login: ${loginResult.messageChain}`)\n }\n\n public async logout(): Promise<void> {\n await this.#discord.client.destroy()\n }\n}\n"],"mappings":";;;;;AAqBA,IAAa,MAAb,MAAiB;CACf;CAEA;CACA;CAEA,YAAmB,SAAqB;EACtC,KAAKA,WAAW;GACd,eAAe,QAAQ;GACvB,OAAO,QAAQ;GACf,QAAQ,IAAI,OAAO,QAAQ,aAAa;GACxC,MAAM,IAAI,KAAK,CAAC,CAAC,SAAS,QAAQ,KAAK;EACzC;EAEA,KAAK,WAAW,IAAI,eAAe,KAAKA,QAAQ;EAChD,KAAK,SAAS,IAAI,aAAa,KAAKA,QAAQ;CAC9C;CAEA,MAAa,QAAuB;EAClC,KAAKA,SAAS,OAAO,KAAK,OAAO,cAAc,gBAAgB;GAC7D,QAAQ,IAAI,kCAAkC,YAAY,KAAK,IAAI,GAAG;EACxE,CAAC;EAED,KAAK,SAAS,QAAQ;EACtB,KAAK,OAAO,QAAQ;EAEpB,MAAM,cAAc,MAAM,QAAQ,YAAY,KAAKA,SAAS,OAAO,MAAM,KAAKA,SAAS,KAAK,CAAC;EAC7F,IAAI,MAAM,WAAW,GAAG,QAAQ,MAAM,oBAAoB,YAAY,cAAc;CACtF;CAEA,MAAa,SAAwB;EACnC,MAAM,KAAKA,SAAS,OAAO,QAAQ;CACrC;AACF"}
|
package/dist/event-manager.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ type EventHandler<E extends ValidEvents = ValidEvents> = (client: Client, ...arg
|
|
|
7
7
|
type EventHandlerMap = { [E in ValidEvents]: EventHandler<E> };
|
|
8
8
|
interface SingleEvent<E extends ValidEvents = ValidEvents> {
|
|
9
9
|
event: E;
|
|
10
|
+
once?: boolean;
|
|
10
11
|
handler: EventHandlerMap[E];
|
|
11
12
|
}
|
|
12
13
|
declare class EventManager {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-manager.d.ts","names":[],"sources":["../src/event-manager.ts"],"mappings":";;;;KAOK,WAAA,SAAoB,YAAY;AAAA,KAEhC,YAAA,WAAuB,WAAA,GAAc,WAAA,KACxC,MAAA,EAAQ,MAAA,KACL,IAAA,EAAM,YAAA,CAAa,CAAA,aACZ,OAAA;AAAA,KAEP,eAAA,WACG,WAAA,GAAc,YAAA,CAAa,CAAA;AAAA,UAGzB,WAAA,WAAsB,WAAA,GAAc,WAAA;EAC5C,KAAA,EAAO,CAAA;EACP,OAAA,EAAS,eAAA,CAAgB,CAAA;AAAA;AAAA,cAGd,YAAA;EAAA;cAIQ,OAAA,EAAS,cAAA;EAOrB,GAAA,WAAc,WAAA,EAAa,KAAA,EAAO,WAAA,CAAY,CAAA;EAI9C,OAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"event-manager.d.ts","names":[],"sources":["../src/event-manager.ts"],"mappings":";;;;KAOK,WAAA,SAAoB,YAAY;AAAA,KAEhC,YAAA,WAAuB,WAAA,GAAc,WAAA,KACxC,MAAA,EAAQ,MAAA,KACL,IAAA,EAAM,YAAA,CAAa,CAAA,aACZ,OAAA;AAAA,KAEP,eAAA,WACG,WAAA,GAAc,YAAA,CAAa,CAAA;AAAA,UAGzB,WAAA,WAAsB,WAAA,GAAc,WAAA;EAC5C,KAAA,EAAO,CAAA;EACP,IAAA;EACA,OAAA,EAAS,eAAA,CAAgB,CAAA;AAAA;AAAA,cAGd,YAAA;EAAA;cAIQ,OAAA,EAAS,cAAA;EAOrB,GAAA,WAAc,WAAA,EAAa,KAAA,EAAO,WAAA,CAAY,CAAA;EAI9C,OAAA;AAAA;AAAA,KAqBG,KAAA,WACJ,WAAA,GAAc,WAAA,CAAY,CAAA,IAChC,WAAA"}
|
package/dist/event-manager.js
CHANGED
|
@@ -19,7 +19,8 @@ var EventManager = class {
|
|
|
19
19
|
const eventHandlerResult = await attempt(async () => singleEvent.handler(this.#discord.client, ...args));
|
|
20
20
|
if (isErr(eventHandlerResult)) return err(`failed to handle event '${singleEvent.event}'`, eventHandlerResult);
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
const listenerType = singleEvent.once ? "once" : "on";
|
|
23
|
+
this.#discord.client[listenerType](singleEvent.event, (...args) => void handleCallback(async () => handleEvent(...args)));
|
|
23
24
|
}
|
|
24
25
|
};
|
|
25
26
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-manager.js","names":["#events","#discord","#listen"],"sources":["../src/event-manager.ts"],"sourcesContent":["import type { Client, ClientEvents } from \"discord.js\"\nimport type { Result } from \"ts-explicit-errors\"\nimport { attempt, err, isErr } from \"ts-explicit-errors\"\n\nimport type { DiscordContext } from \"#/bot.ts\"\nimport { handleCallback } from \"#/util.ts\"\n\ntype ValidEvents = keyof ClientEvents\n\ntype EventHandler<E extends ValidEvents = ValidEvents> = (\n client: Client,\n ...args: ClientEvents[E]\n) => void | Promise<void>\n\ntype EventHandlerMap = {\n [E in ValidEvents]: EventHandler<E>\n}\n\ninterface SingleEvent<E extends ValidEvents = ValidEvents> {\n event: E\n handler: EventHandlerMap[E]\n}\n\nexport class EventManager {\n readonly #events: SingleEvent[] = []\n readonly #discord: DiscordContext\n\n public constructor(discord: DiscordContext) {\n this.#discord = discord\n }\n\n /*\n * Add an event listener\n */\n public add<N extends ValidEvents>(event: SingleEvent<N>): void {\n this.#events.push(event)\n }\n\n public _listen(): void {\n for (const singleEvent of this.#events) this.#listen(singleEvent)\n\n console.log(`Listening for (${this.#events.length.toString()}) events.`)\n }\n\n // generic over E so `event` and `handler` stay correlated, see microsoft/TypeScript#47109\n #listen<E extends ValidEvents>(singleEvent: SingleEvent<E>): void {\n const handleEvent = async (...args: ClientEvents[E]): Promise<Result> => {\n const eventHandlerResult = await attempt(async () => singleEvent.handler(this.#discord.client, ...args))\n if (isErr(eventHandlerResult)) return err(`failed to handle event '${singleEvent.event}'`, eventHandlerResult)\n }\n\n this.#discord.client
|
|
1
|
+
{"version":3,"file":"event-manager.js","names":["#events","#discord","#listen"],"sources":["../src/event-manager.ts"],"sourcesContent":["import type { Client, ClientEvents } from \"discord.js\"\nimport type { Result } from \"ts-explicit-errors\"\nimport { attempt, err, isErr } from \"ts-explicit-errors\"\n\nimport type { DiscordContext } from \"#/bot.ts\"\nimport { handleCallback } from \"#/util.ts\"\n\ntype ValidEvents = keyof ClientEvents\n\ntype EventHandler<E extends ValidEvents = ValidEvents> = (\n client: Client,\n ...args: ClientEvents[E]\n) => void | Promise<void>\n\ntype EventHandlerMap = {\n [E in ValidEvents]: EventHandler<E>\n}\n\ninterface SingleEvent<E extends ValidEvents = ValidEvents> {\n event: E\n once?: boolean\n handler: EventHandlerMap[E]\n}\n\nexport class EventManager {\n readonly #events: SingleEvent[] = []\n readonly #discord: DiscordContext\n\n public constructor(discord: DiscordContext) {\n this.#discord = discord\n }\n\n /*\n * Add an event listener\n */\n public add<N extends ValidEvents>(event: SingleEvent<N>): void {\n this.#events.push(event)\n }\n\n public _listen(): void {\n for (const singleEvent of this.#events) this.#listen(singleEvent)\n\n console.log(`Listening for (${this.#events.length.toString()}) events.`)\n }\n\n // generic over E so `event` and `handler` stay correlated, see microsoft/TypeScript#47109\n #listen<E extends ValidEvents>(singleEvent: SingleEvent<E>): void {\n const handleEvent = async (...args: ClientEvents[E]): Promise<Result> => {\n const eventHandlerResult = await attempt(async () => singleEvent.handler(this.#discord.client, ...args))\n if (isErr(eventHandlerResult)) return err(`failed to handle event '${singleEvent.event}'`, eventHandlerResult)\n }\n\n const listenerType = singleEvent.once ? \"once\" : \"on\"\n this.#discord.client[listenerType](\n singleEvent.event,\n (...args) => void handleCallback(async () => handleEvent(...args)),\n )\n }\n}\n\nexport type Event = {\n [E in ValidEvents]: SingleEvent<E>\n}[ValidEvents]\n"],"mappings":";;;AAwBA,IAAa,eAAb,MAA0B;CACxB,UAAkC,CAAC;CACnC;CAEA,YAAmB,SAAyB;EAC1C,KAAKC,WAAW;CAClB;CAKA,IAAkC,OAA6B;EAC7D,KAAKD,QAAQ,KAAK,KAAK;CACzB;CAEA,UAAuB;EACrB,KAAK,MAAM,eAAe,KAAKA,SAAS,KAAKE,QAAQ,WAAW;EAEhE,QAAQ,IAAI,kBAAkB,KAAKF,QAAQ,OAAO,SAAS,EAAE,UAAU;CACzE;CAGA,QAA+B,aAAmC;EAChE,MAAM,cAAc,OAAO,GAAG,SAA2C;GACvE,MAAM,qBAAqB,MAAM,QAAQ,YAAY,YAAY,QAAQ,KAAKC,SAAS,QAAQ,GAAG,IAAI,CAAC;GACvG,IAAI,MAAM,kBAAkB,GAAG,OAAO,IAAI,2BAA2B,YAAY,MAAM,IAAI,kBAAkB;EAC/G;EAEA,MAAM,eAAe,YAAY,OAAO,SAAS;EACjD,KAAKA,SAAS,OAAO,aAAa,CAChC,YAAY,QACX,GAAG,SAAS,KAAK,eAAe,YAAY,YAAY,GAAG,IAAI,CAAC,CACnE;CACF;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "discord-bot-shared",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "Modules for creating discord bots.",
|
|
5
5
|
"homepage": "https://github.com/adamhl8/discord-bot-shared",
|
|
6
6
|
"bugs": {
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
"ts-explicit-errors": "^4.1.2"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@adamhl8/configs": "^0.
|
|
44
|
+
"@adamhl8/configs": "^0.25.0",
|
|
45
45
|
"@arethetypeswrong/core": "^0.18.4",
|
|
46
46
|
"@commitlint/cli": "^21.2.0",
|
|
47
47
|
"@commitlint/config-conventional": "^21.2.0",
|
|
48
48
|
"@types/node": "^26.1.0",
|
|
49
49
|
"discord.js": "^14.26.4",
|
|
50
|
-
"knip": "^6.
|
|
50
|
+
"knip": "^6.24.0",
|
|
51
51
|
"markdown-toc": "^1.2.0",
|
|
52
52
|
"oxfmt": "^0.57.0",
|
|
53
53
|
"oxlint": "^1.72.0",
|