windsor-bot 0.1.8 → 0.1.10

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/README.md CHANGED
@@ -374,6 +374,7 @@ contributors working from the source tree:
374
374
  npm run dev # run Windsor and the diagnostics server
375
375
  npm run build # type-check and build the web panel
376
376
  npm test # run the Node test suite
377
+ npm run gen-image -- a friendly shopping list # generate test.png using the local config
377
378
  ```
378
379
 
379
380
  The control-panel source is `src/web/app.tsx`. The browser app is bundled into
package/dist/ai.js CHANGED
@@ -58,7 +58,7 @@ function parseOccurrenceDate(str) {
58
58
  }
59
59
  return null;
60
60
  }
61
- export async function parseRecurringSchedule(userMessage, now, onRemoteStart) {
61
+ export async function parseRecurringSchedule(userMessage, now) {
62
62
  const client = getClient();
63
63
  if (!client)
64
64
  return null;
@@ -68,7 +68,6 @@ export async function parseRecurringSchedule(userMessage, now, onRemoteStart) {
68
68
  const prompt = `The user has asked for a recurring printout. It is currently ${nowStr}. Tell me the next time that I should do this, and what the non-schedule part of the message was (verbatim). If the user didn't specify a time of day, use 8:00 AM. Here's the user's message: ${userMessage}`;
69
69
  const results = [];
70
70
  const ATTEMPTS = 5;
71
- await onRemoteStart?.();
72
71
  for (let i = 0; i < ATTEMPTS; i++) {
73
72
  try {
74
73
  const completion = await client.chat.completions.create({
@@ -131,11 +130,11 @@ function formatScheduleDate(date) {
131
130
  return `${year}-${month}-${day} ${hours}:${minutes} ${ampm}`;
132
131
  }
133
132
  export { formatScheduleDate };
134
- export async function getNextOccurrence(originalMessage, now, onRemoteStart) {
135
- const result = await parseRecurringSchedule(originalMessage, now, onRemoteStart);
133
+ export async function getNextOccurrence(originalMessage, now) {
134
+ const result = await parseRecurringSchedule(originalMessage, now);
136
135
  return result ? result.nextOccurrence : null;
137
136
  }
138
- export async function generateIcon(text, cacheDir, onRemoteStart) {
137
+ export async function generateIcon(text, cacheDir) {
139
138
  const prompt = `Black-on-transparent line drawing icon for the TODO item: "${text}". Do not produce any text. Use big, thick lines. No fine detailing.`;
140
139
  const hash = createHash('sha1').update(prompt).digest('hex').slice(0, 9);
141
140
  const filename = `${hash}.png`;
@@ -153,7 +152,6 @@ export async function generateIcon(text, cacheDir, onRemoteStart) {
153
152
  return null;
154
153
  if (await isOverTokenLimit())
155
154
  return null;
156
- await onRemoteStart?.();
157
155
  for (let attempt = 0; attempt < 3; attempt++) {
158
156
  try {
159
157
  const response = await client.images.generate({
package/dist/bot.js CHANGED
@@ -362,7 +362,7 @@ export function createWindsorBot() {
362
362
  }
363
363
  if (config.includeIcon) {
364
364
  const iconCacheDir = getCurrentConfig().iconCacheDir ?? './icon-cache';
365
- const iconPath = await generateIcon(strippedText, iconCacheDir, () => reactSafe(message, Reaction.thinking));
365
+ const iconPath = await generateIcon(strippedText, iconCacheDir);
366
366
  if (iconPath)
367
367
  job.iconPath = iconPath;
368
368
  }
@@ -447,7 +447,7 @@ export function createWindsorBot() {
447
447
  async function handleRecurringSetup(message, config) {
448
448
  const rawContent = message.content;
449
449
  try {
450
- const parsed = await parseRecurringSchedule(rawContent, new Date(), () => reactSafe(message, Reaction.thinking));
450
+ const parsed = await parseRecurringSchedule(rawContent, new Date());
451
451
  if (!parsed) {
452
452
  await reactSafe(message, Reaction.what);
453
453
  await replySafe(message, '⁉️ Could not parse a schedule from your message. Please try again with a clearer schedule.');
@@ -486,7 +486,7 @@ export function createWindsorBot() {
486
486
  }
487
487
  if (config.includeIcon) {
488
488
  const iconCacheDir = getCurrentConfig().iconCacheDir ?? './icon-cache';
489
- const iconPath = await generateIcon(strippedText, iconCacheDir, () => reactSafe(scheduleReply, Reaction.thinking));
489
+ const iconPath = await generateIcon(strippedText, iconCacheDir);
490
490
  if (iconPath)
491
491
  job.iconPath = iconPath;
492
492
  }
@@ -506,7 +506,7 @@ export function createWindsorBot() {
506
506
  }
507
507
  logEvent('print', `Printed recurring task: ${text}`);
508
508
  const originalUserMessage = scheduleReply.content.replace(/^Got it\. I will print ⟪.+?⟫ at /, '');
509
- const nextOccurrence = await getNextOccurrence(originalUserMessage, new Date(), () => reactSafe(scheduleReply, Reaction.thinking));
509
+ const nextOccurrence = await getNextOccurrence(originalUserMessage, new Date());
510
510
  let statusReply;
511
511
  if (!nextOccurrence) {
512
512
  statusReply = await replySafe(scheduleReply, 'This occurrence has expired and no more prints are scheduled');
@@ -527,7 +527,7 @@ export function createWindsorBot() {
527
527
  const match = /⟪(.+?)⟫/.exec(scheduleReply.content);
528
528
  if (!match?.[1])
529
529
  return;
530
- const nextOccurrence = await getNextOccurrence(match[1], new Date(), () => reactSafe(latestStatusReply, Reaction.thinking));
530
+ const nextOccurrence = await getNextOccurrence(match[1], new Date());
531
531
  if (!nextOccurrence) {
532
532
  await replySafe(latestStatusReply, 'This occurrence has expired and no more prints are scheduled');
533
533
  await removeReactionSafe(latestStatusReply, Reaction.thinking);
package/package.json CHANGED
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "name": "windsor-bot",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "Self-hosted Discord bot automation for household list and todo printing",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "scripts": {
8
8
  "prepare": "npm run build",
9
9
  "build": "tsc && node scripts/build-web.mjs",
10
+ "clean": "node scripts/clean.mjs",
10
11
  "dev": "node src/index.ts",
11
12
  "test": "node --test src/tests/*.test.ts",
12
- "generate-wordsearches": "node scripts/generate-wordsearches.mjs"
13
+ "generate-wordsearches": "node scripts/generate-wordsearches.mjs",
14
+ "gen-image": "node scripts/generate-image.mjs"
13
15
  },
14
16
  "bin": {
15
17
  "windsor-bot": "dist/index.js"
package/dist/bot.d.ts DELETED
@@ -1,22 +0,0 @@
1
- export declare class HouseholdBot {
2
- private readonly client;
3
- private readonly getConfiguredServerId;
4
- constructor(getConfiguredServerId: () => string | null);
5
- start(token: string): Promise<void>;
6
- private onReady;
7
- /**
8
- * On startup, fetch the last 100 messages in every channel that has at
9
- * least one applicable command and process any that the bot hasn't already
10
- * reacted to.
11
- */
12
- private scanForUnhandledMessages;
13
- private getTargetGuilds;
14
- private onMessage;
15
- /**
16
- * Parses and executes the command in `message` if applicable.
17
- * Returns true if an action was executed, false if skipped (not a command,
18
- * wrong channel, or already handled).
19
- */
20
- private processMessage;
21
- }
22
- //# sourceMappingURL=bot.d.ts.map
package/dist/bot.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAeA,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsB;IAE5D,YAAY,qBAAqB,EAAE,MAAM,MAAM,GAAG,IAAI,EAarD;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExC;YAEa,OAAO;IAgBrB;;;;OAIG;YACW,wBAAwB;IA+BtC,OAAO,CAAC,eAAe;YAiBT,SAAS;IAIvB;;;;OAIG;YACW,cAAc;CAgD/B"}
package/dist/bot.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { BotCommand } from '../types.js';
2
- export declare const helloCommand: BotCommand;
3
- //# sourceMappingURL=hello.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hello.d.ts","sourceRoot":"","sources":["../../src/commands/hello.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,YAAY,EAAE,UAQ1B,CAAC"}
@@ -1,8 +0,0 @@
1
- export const helloCommand = {
2
- name: 'hello',
3
- channels: [],
4
- description: 'Prints "Hello, world" to the local console. Usage: !hello',
5
- async execute() {
6
- console.log('Hello, world');
7
- },
8
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"hello.js","sourceRoot":"","sources":["../../src/commands/hello.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAe;IACpC,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,2DAA2D;IAExE,KAAK,CAAC,OAAO;QACT,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;CACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { BotCommand } from '../types.js';
2
- export declare const commands: BotCommand[];
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,UAAU,EAGhC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,MAAM,CAAC,MAAM,QAAQ,GAAiB;IAClC,YAAY;IACZ,YAAY;CACf,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { BotCommand } from '../types.js';
2
- /**
3
- * Prints text to the configured CUPS printer.
4
- *
5
- * Environment variables:
6
- * PRINTER_NAME - CUPS printer name (optional; omit to use the system default)
7
- */
8
- export declare const printCommand: BotCommand;
9
- //# sourceMappingURL=print.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"print.d.ts","sourceRoot":"","sources":["../../src/commands/print.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,UAkB1B,CAAC"}
@@ -1,46 +0,0 @@
1
- import { exec } from 'child_process';
2
- import { writeFile, unlink } from 'fs/promises';
3
- import { tmpdir } from 'os';
4
- import { join } from 'path';
5
- /**
6
- * Prints text to the configured CUPS printer.
7
- *
8
- * Environment variables:
9
- * PRINTER_NAME - CUPS printer name (optional; omit to use the system default)
10
- */
11
- export const printCommand = {
12
- name: 'print',
13
- channels: ['todo'],
14
- description: 'Prints the given text on the local printer. Usage: !print <text>',
15
- async execute(ctx) {
16
- const text = ctx.args.trim();
17
- if (!text)
18
- throw new Error('Nothing to print — provide text after !print');
19
- const tmpFile = join(tmpdir(), `d2p-${Date.now()}.txt`);
20
- await writeFile(tmpFile, text + '\n', 'utf8');
21
- try {
22
- await printFile(tmpFile);
23
- }
24
- finally {
25
- await unlink(tmpFile).catch(() => undefined);
26
- }
27
- },
28
- };
29
- function printFile(filePath) {
30
- const printerName = process.env['PRINTER_NAME'];
31
- const destination = printerName ? `-d ${shellQuote(printerName)}` : '';
32
- const cmd = `lp ${destination} ${shellQuote(filePath)}`;
33
- return new Promise((resolve, reject) => {
34
- exec(cmd, (err, _stdout, stderr) => {
35
- if (err) {
36
- reject(new Error(`lp failed: ${stderr.trim() || err.message}`));
37
- }
38
- else {
39
- resolve();
40
- }
41
- });
42
- });
43
- }
44
- function shellQuote(s) {
45
- return `'${s.replace(/'/g, "'\\''")}'`;
46
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"print.js","sourceRoot":"","sources":["../../src/commands/print.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAe;IACpC,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,WAAW,EAAE,kEAAkE;IAE/E,KAAK,CAAC,OAAO,CAAC,GAAG;QACb,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAE3E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QAE9C,IAAI,CAAC;YACD,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACP,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;CACJ,CAAC;AAEF,SAAS,SAAS,CAAC,QAAgB;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,GAAG,GAAG,MAAM,WAAW,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IAExD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/B,IAAI,GAAG,EAAE,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACJ,OAAO,EAAE,CAAC;YACd,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IACzB,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC3C,CAAC"}
package/dist/config.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import type { PublicRuntimeConfig, RuntimeConfig, RuntimeConfigPatch } from './types.js';
2
- export declare function toPublicConfig(config: RuntimeConfig, configPath: string): PublicRuntimeConfig;
3
- export declare function loadConfig(): Promise<{
4
- config: RuntimeConfig;
5
- configPath: string;
6
- }>;
7
- export declare function saveConfig(patch: RuntimeConfigPatch, current: RuntimeConfig, configPath: string): Promise<RuntimeConfig>;
8
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EACrB,MAAM,YAAY,CAAC;AA4DpB,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAQ7F;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBzF;AAED,wBAAsB,UAAU,CAC5B,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CAIxB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;AACjE,IAAI,aAAa,GAAG,aAAa,CAAC;AAClC,IAAI,GAAG,GAAwB,IAAI,CAAC;AACpC,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAEjC,SAAS,kBAAkB;IACvB,MAAM,CAAC,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC;IAEnD,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC;IAC5D,CAAC;SAAM,CAAC;QACJ,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;AACL,CAAC;AAED,SAAS,aAAa;IAClB,IAAI,oBAAoB,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;QAAE,OAAO;IAEvE,oBAAoB,GAAG,IAAI,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE/D,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAChD,GAAG,GAAG,OAAO,CAAC;QACd,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACX,QAAQ,CAAC,OAAO,EAAE,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACZ,oBAAoB,GAAG,KAAK,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,kBAAkB,EAAE,CAAC;AACrB,sBAAsB,CAClB,aAAa,CAAC,eAAe,EAC7B,GAAG,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,EAC/C,KAAK,EAAE,KAAK,EAAE,EAAE;IACZ,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IACnE,aAAa,GAAG,OAAO,CAAC;IACxB,kBAAkB,EAAE,CAAC;IACrB,aAAa,EAAE,CAAC;IAChB,OAAO,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACrD,CAAC,CACJ,CAAC;AAEF,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,6EAA6E,CAAC,CAAC;AACpG,CAAC;AACD,aAAa,EAAE,CAAC"}
package/dist/server.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import type { DiagnosticEvent, BotStatus, PublicRuntimeConfig, RuntimeConfigPatch } from './types.js';
2
- export declare const status: BotStatus;
3
- export declare function logEvent(type: DiagnosticEvent['type'], message: string): void;
4
- export declare function startDiagnosticsServer(port: number, getConfig: () => PublicRuntimeConfig, updateConfig: (patch: RuntimeConfigPatch) => Promise<PublicRuntimeConfig>): void;
5
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EACrB,MAAM,YAAY,CAAC;AAKpB,eAAO,MAAM,MAAM,EAAE,SAMpB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAK7E;AAqND,wBAAgB,sBAAsB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,mBAAmB,EACpC,YAAY,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAC1E,IAAI,CAiGN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts DELETED
@@ -1,55 +0,0 @@
1
- export interface CommandContext {
2
- /** The name of the channel the message was sent in */
3
- channelName: string;
4
- /** Everything after `!commandName ` */
5
- args: string;
6
- /** The full original message content */
7
- rawMessage: string;
8
- messageId: string;
9
- channelId: string;
10
- guildId: string;
11
- }
12
- export interface BotCommand {
13
- /** Command name (the word immediately after `!`) */
14
- name: string;
15
- /**
16
- * Channel names this command is active in.
17
- * Empty array means the command is active in all channels.
18
- */
19
- channels: string[];
20
- description: string;
21
- execute(context: CommandContext): Promise<void>;
22
- }
23
- export type DiagnosticEventType = 'startup' | 'command' | 'success' | 'error' | 'info';
24
- export interface DiagnosticEvent {
25
- timestamp: string;
26
- type: DiagnosticEventType;
27
- message: string;
28
- }
29
- export interface BotStatus {
30
- connected: boolean;
31
- tag: string | null;
32
- startedAt: string | null;
33
- guilds: string[];
34
- configuredServerId: string | null;
35
- }
36
- export interface RuntimeConfig {
37
- discordToken: string | null;
38
- serverId: string | null;
39
- diagnosticsPort: number;
40
- printerName: string | null;
41
- }
42
- export interface PublicRuntimeConfig {
43
- hasDiscordToken: boolean;
44
- serverId: string | null;
45
- diagnosticsPort: number;
46
- printerName: string | null;
47
- configPath: string;
48
- }
49
- export interface RuntimeConfigPatch {
50
- discordToken?: string | null;
51
- serverId?: string | null;
52
- diagnosticsPort?: number;
53
- printerName?: string | null;
54
- }
55
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACvB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAChC,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B"}
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}