@spyglassmc/discord-bot 0.3.34 → 0.3.36

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/lib/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- #!/usr/bin/env node
2
1
  export declare const __dirname: undefined;
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAiCA,MAAM,CAAC,OAAO,CAAC,MAAM,SAAS,EAAE,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAsCA,MAAM,CAAC,OAAO,CAAC,MAAM,SAAS,EAAE,SAAS,CAAA"}
package/lib/index.js CHANGED
@@ -1,12 +1,13 @@
1
- #!/usr/bin/env node
2
1
  import { FileNode, fileUtil, ProfilerFactory, Range, Service, } from '@spyglassmc/core';
3
2
  import { NodeJsExternals } from '@spyglassmc/core/lib/nodejs.js';
4
3
  import * as je from '@spyglassmc/java-edition';
5
4
  import * as mcdoc from '@spyglassmc/mcdoc';
6
- import { ActionRowBuilder, ButtonBuilder, ButtonStyle, Client, ComponentType, GatewayIntentBits, REST, Routes, SlashCommandBooleanOption, SlashCommandBuilder, SlashCommandStringOption, } from 'discord.js';
5
+ import { webcrypto } from 'crypto';
6
+ import { ActionRowBuilder, ButtonBuilder, ButtonStyle, Client, ComponentType, EmbedBuilder, GatewayIntentBits, REST, Routes, SlashCommandBooleanOption, SlashCommandBuilder, SlashCommandStringOption, } from 'discord.js';
7
7
  import { join } from 'path';
8
8
  import { env } from 'process';
9
9
  import { pathToFileURL } from 'url';
10
+ const MaxCommandLength = 1000;
10
11
  const MaxContentLength = 2000;
11
12
  const ProfilerId = 'discord-bot#startup';
12
13
  const profilers = new ProfilerFactory(console, [ProfilerId]);
@@ -34,7 +35,6 @@ const service = new Service({
34
35
  projectRoots: [fileUtil.ensureEndingSlash(pathToFileURL(projectPath).toString())],
35
36
  },
36
37
  });
37
- const DocumentUri = pathToFileURL(`${rootPath}/virtual/file.mcfunction`).toString();
38
38
  client.on('interactionCreate', async (i) => {
39
39
  try {
40
40
  if (i.isChatInputCommand()) {
@@ -52,12 +52,15 @@ client.on('interactionCreate', async (i) => {
52
52
  const reply = await i.reply(getReplyOptions(info));
53
53
  const collector = reply.createMessageComponentCollector({
54
54
  componentType: ComponentType.Button,
55
- time: 3_600_000, // 1 hour
55
+ time: 600_000, // 10 minutes
56
56
  });
57
57
  collector
58
58
  .on('collect', async (bi) => {
59
59
  if (bi.user.id !== i.user.id) {
60
- // Only allow creator of the interaction to interact.
60
+ await bi.reply({
61
+ content: 'Only the original initiator of this interaction may switch to other diagnostics.',
62
+ ephemeral: true,
63
+ });
61
64
  return;
62
65
  }
63
66
  if (bi.customId === 'previous') {
@@ -74,6 +77,11 @@ client.on('interactionCreate', async (i) => {
74
77
  break;
75
78
  }
76
79
  }
80
+ else if (i.isAutocomplete()) {
81
+ const content = i.options.getFocused();
82
+ const options = await getAutocomplete(content);
83
+ await i.respond(options);
84
+ }
77
85
  }
78
86
  catch (e) {
79
87
  console.error('[interactionCreate]', e);
@@ -105,15 +113,42 @@ async function loadConfig() {
105
113
  */
106
114
  async function registerCommands() {
107
115
  const pingCommand = new SlashCommandBuilder().setName('ping').setDescription('Ping the Spyglass Bot').toJSON();
108
- const spyCommand = new SlashCommandBuilder().setName('spy').setDescription('Renders a mcfunction command. Error reporting coming soon™').addStringOption(new SlashCommandStringOption().setName('command').setDescription('Put a single mcfunction command here').setRequired(true)).addBooleanOption(new SlashCommandBooleanOption().setName('showraw').setDescription('Whether to show the result ANSI code in raw code blocks').setRequired(false)).toJSON();
116
+ const spyCommand = new SlashCommandBuilder().setName('spy').setDescription('Renders a mcfunction command.').addStringOption(new SlashCommandStringOption().setName('command').setDescription('Put a single mcfunction command here').setAutocomplete(true).setMaxLength(MaxCommandLength).setRequired(true)).addBooleanOption(new SlashCommandBooleanOption().setName('showraw').setDescription('Whether to show the result ANSI code in raw code blocks').setRequired(false)).toJSON();
109
117
  return rest.put(Routes.applicationGuildCommands(config.clientId, config.guildId), {
110
118
  body: [pingCommand, spyCommand],
111
119
  });
112
120
  }
121
+ function generateRandomUri() {
122
+ const uuid = webcrypto.randomUUID();
123
+ return pathToFileURL(`${rootPath}/virtual/file-${uuid}.mcfunction`).toString();
124
+ }
125
+ async function getAutocomplete(content) {
126
+ const uri = generateRandomUri();
127
+ await service.project.onDidOpen(uri, 'mcfunction', 0, content);
128
+ const docAndNode = await service.project.ensureClientManagedChecked(uri);
129
+ service.project.onDidClose(uri);
130
+ if (!docAndNode) {
131
+ throw new Error('docAndNode is undefined');
132
+ }
133
+ const { node, doc } = docAndNode;
134
+ return service.complete(node, doc, content.length)
135
+ .sort((a, b) => (a.sortText ?? a.label).localeCompare(b.sortText ?? b.label))
136
+ // Convert autocomplete options into full text options
137
+ .map((i) => {
138
+ const insertText = i.insertText ?? i.label;
139
+ return `${content.slice(0, i.range.start)}${insertText}${content.slice(i.range.end)}`;
140
+ })
141
+ // Filter to the texts starting with the user input
142
+ .filter((v) => v.startsWith(content))
143
+ .map((v) => ({ name: v, value: v }))
144
+ // Limit to a maximum of 25 options
145
+ .slice(0, 25);
146
+ }
113
147
  async function getInteractionInfo(content, showRaw) {
114
- await service.project.onDidOpen(DocumentUri, 'mcfunction', 0, content);
115
- const docAndNode = await service.project.ensureClientManagedChecked(DocumentUri);
116
- service.project.onDidClose(DocumentUri);
148
+ const uri = generateRandomUri();
149
+ await service.project.onDidOpen(uri, 'mcfunction', 0, content);
150
+ const docAndNode = await service.project.ensureClientManagedChecked(uri);
151
+ service.project.onDidClose(uri);
117
152
  if (!docAndNode) {
118
153
  throw new Error('docAndNode is undefined');
119
154
  }
@@ -134,6 +169,11 @@ function getReplyOptions(info, expired = false) {
134
169
  new ActionRowBuilder().addComponents(new ButtonBuilder().setCustomId('previous').setLabel('Previous Error').setStyle(ButtonStyle.Primary).setDisabled(info.activeErrorIndex <= 0), new ButtonBuilder().setCustomId('next').setLabel('Next Error').setStyle(ButtonStyle.Primary).setDisabled(info.activeErrorIndex >= info.errors.length - 1)).toJSON(),
135
170
  ]
136
171
  : [],
172
+ embeds: expired
173
+ ? [
174
+ new EmbedBuilder({ description: 'The interaction has expired.' }).data,
175
+ ]
176
+ : [],
137
177
  fetchReply: true,
138
178
  };
139
179
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spyglassmc/discord-bot",
3
- "version": "0.3.34",
3
+ "version": "0.3.36",
4
4
  "type": "module",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -15,7 +15,7 @@
15
15
  "dependencies": {
16
16
  "discord.js": "^14.16.3",
17
17
  "@spyglassmc/core": "0.4.25",
18
- "@spyglassmc/java-edition": "0.3.33",
18
+ "@spyglassmc/java-edition": "0.3.34",
19
19
  "@spyglassmc/locales": "0.3.12",
20
20
  "@spyglassmc/mcdoc": "0.3.29"
21
21
  },
package/src/index.ts CHANGED
@@ -1,7 +1,6 @@
1
- #!/usr/bin/env node
2
-
3
1
  import type { ColorToken, ColorTokenType, LanguageError } from '@spyglassmc/core'
4
2
  import {
3
+ CompletionItem,
5
4
  ErrorSeverity,
6
5
  FileNode,
7
6
  fileUtil,
@@ -12,6 +11,7 @@ import {
12
11
  import { NodeJsExternals } from '@spyglassmc/core/lib/nodejs.js'
13
12
  import * as je from '@spyglassmc/java-edition'
14
13
  import * as mcdoc from '@spyglassmc/mcdoc'
14
+ import { webcrypto } from 'crypto'
15
15
  import {
16
16
  ActionRowBuilder,
17
17
  ButtonBuilder,
@@ -26,12 +26,18 @@ import {
26
26
  SlashCommandBuilder,
27
27
  SlashCommandStringOption,
28
28
  } from 'discord.js'
29
- import type { APIActionRowComponent, APIMessageActionRowComponent } from 'discord.js'
29
+ import type {
30
+ APIActionRowComponent,
31
+ APIEmbed,
32
+ APIMessageActionRowComponent,
33
+ ApplicationCommandOptionChoiceData,
34
+ } from 'discord.js'
30
35
  import { join } from 'path'
31
36
  import { env } from 'process'
32
37
  import { pathToFileURL } from 'url'
33
38
 
34
39
  export declare const __dirname: undefined // Not defined in ES module scope
40
+ const MaxCommandLength = 1000
35
41
  const MaxContentLength = 2000
36
42
 
37
43
  const ProfilerId = 'discord-bot#startup'
@@ -62,7 +68,6 @@ const service = new Service({
62
68
  projectRoots: [fileUtil.ensureEndingSlash(pathToFileURL(projectPath).toString())],
63
69
  },
64
70
  })
65
- const DocumentUri = pathToFileURL(`${rootPath}/virtual/file.mcfunction`).toString()
66
71
 
67
72
  interface InteractionInfo {
68
73
  content: string
@@ -89,12 +94,16 @@ client.on('interactionCreate', async (i) => {
89
94
  const reply = await i.reply(getReplyOptions(info))
90
95
  const collector = reply.createMessageComponentCollector({
91
96
  componentType: ComponentType.Button,
92
- time: 3_600_000, // 1 hour
97
+ time: 600_000, // 10 minutes
93
98
  })
94
99
  collector
95
100
  .on('collect', async (bi) => {
96
101
  if (bi.user.id !== i.user.id) {
97
- // Only allow creator of the interaction to interact.
102
+ await bi.reply({
103
+ content:
104
+ 'Only the original initiator of this interaction may switch to other diagnostics.',
105
+ ephemeral: true,
106
+ })
98
107
  return
99
108
  }
100
109
 
@@ -110,6 +119,10 @@ client.on('interactionCreate', async (i) => {
110
119
  })
111
120
  break
112
121
  }
122
+ } else if (i.isAutocomplete()) {
123
+ const content = i.options.getFocused()
124
+ const options = await getAutocomplete(content)
125
+ await i.respond(options)
113
126
  }
114
127
  } catch (e) {
115
128
  console.error('[interactionCreate]', e)
@@ -155,11 +168,11 @@ async function registerCommands(): Promise<unknown> {
155
168
  'Ping the Spyglass Bot',
156
169
  ).toJSON()
157
170
  const spyCommand = new SlashCommandBuilder().setName('spy').setDescription(
158
- 'Renders a mcfunction command. Error reporting coming soon™',
171
+ 'Renders a mcfunction command.',
159
172
  ).addStringOption(
160
173
  new SlashCommandStringOption().setName('command').setDescription(
161
174
  'Put a single mcfunction command here',
162
- ).setRequired(true),
175
+ ).setAutocomplete(true).setMaxLength(MaxCommandLength).setRequired(true),
163
176
  ).addBooleanOption(
164
177
  new SlashCommandBooleanOption().setName('showraw').setDescription(
165
178
  'Whether to show the result ANSI code in raw code blocks',
@@ -171,10 +184,43 @@ async function registerCommands(): Promise<unknown> {
171
184
  })
172
185
  }
173
186
 
187
+ function generateRandomUri(): string {
188
+ const uuid = webcrypto.randomUUID()
189
+ return pathToFileURL(`${rootPath}/virtual/file-${uuid}.mcfunction`).toString()
190
+ }
191
+
192
+ async function getAutocomplete(
193
+ content: string,
194
+ ): Promise<readonly ApplicationCommandOptionChoiceData<string>[]> {
195
+ const uri = generateRandomUri()
196
+ await service.project.onDidOpen(uri, 'mcfunction', 0, content)
197
+ const docAndNode = await service.project.ensureClientManagedChecked(uri)
198
+ service.project.onDidClose(uri)
199
+ if (!docAndNode) {
200
+ throw new Error('docAndNode is undefined')
201
+ }
202
+
203
+ const { node, doc } = docAndNode
204
+
205
+ return service.complete(node, doc, content.length)
206
+ .sort((a, b) => (a.sortText ?? a.label).localeCompare(b.sortText ?? b.label))
207
+ // Convert autocomplete options into full text options
208
+ .map((i) => {
209
+ const insertText = i.insertText ?? i.label
210
+ return `${content.slice(0, i.range.start)}${insertText}${content.slice(i.range.end)}`
211
+ })
212
+ // Filter to the texts starting with the user input
213
+ .filter((v) => v.startsWith(content))
214
+ .map((v) => ({ name: v, value: v }))
215
+ // Limit to a maximum of 25 options
216
+ .slice(0, 25)
217
+ }
218
+
174
219
  async function getInteractionInfo(content: string, showRaw: boolean): Promise<InteractionInfo> {
175
- await service.project.onDidOpen(DocumentUri, 'mcfunction', 0, content)
176
- const docAndNode = await service.project.ensureClientManagedChecked(DocumentUri)
177
- service.project.onDidClose(DocumentUri)
220
+ const uri = generateRandomUri()
221
+ await service.project.onDidOpen(uri, 'mcfunction', 0, content)
222
+ const docAndNode = await service.project.ensureClientManagedChecked(uri)
223
+ service.project.onDidClose(uri)
178
224
  if (!docAndNode) {
179
225
  throw new Error('docAndNode is undefined')
180
226
  }
@@ -193,6 +239,7 @@ function getReplyOptions(
193
239
  ): {
194
240
  content: string
195
241
  components: APIActionRowComponent<APIMessageActionRowComponent>[]
242
+ embeds: APIEmbed[]
196
243
  fetchReply: true
197
244
  } {
198
245
  const content = getReplyContent(info)
@@ -212,6 +259,11 @@ function getReplyOptions(
212
259
  ).toJSON(),
213
260
  ]
214
261
  : [],
262
+ embeds: expired
263
+ ? [
264
+ new EmbedBuilder({ description: 'The interaction has expired.' }).data,
265
+ ]
266
+ : [],
215
267
  fetchReply: true,
216
268
  }
217
269
  }