Files
blitzkit/src/core/discord/autocompleteUsername.ts
T

37 lines
1.1 KiB
TypeScript
Raw Normal View History

2023-05-14 17:13:42 +00:00
import {
ApplicationCommandOptionChoiceData,
AutocompleteInteraction,
CacheType,
} from 'discord.js';
import { REGION_DOMAIN_NAMES } from '../../constants/regions';
2023-07-11 19:54:57 +00:00
import listPlayers from '../blitz/listPlayers';
2023-05-14 17:13:42 +00:00
2023-06-27 02:22:28 +00:00
export default async function autocompleteUsername(
2023-05-14 17:13:42 +00:00
interaction: AutocompleteInteraction<CacheType>,
) {
const focusedOption = interaction.options.getFocused(true);
if (focusedOption.name !== 'username') return;
2023-06-27 02:13:57 +00:00
const players = await listPlayers(focusedOption.value);
2023-05-14 17:13:42 +00:00
2023-05-28 16:56:15 +00:00
try {
await interaction.respond(
players
? players.map(
(player) =>
({
name: `${player.nickname} (${
REGION_DOMAIN_NAMES[player.server]
})`,
2023-05-28 16:56:15 +00:00
value: `${player.server}/${player.account_id}`,
2023-07-11 19:54:57 +00:00
}) satisfies ApplicationCommandOptionChoiceData<string>,
2023-05-28 16:56:15 +00:00
)
: [],
);
2023-05-14 17:13:42 +00:00
2023-05-28 16:56:15 +00:00
console.log(`Username autocomplete for ${focusedOption.value}`);
} catch (error) {
console.warn(
`Failed to autocomplete username for ${focusedOption.value} in time`,
);
}
2023-05-14 17:13:42 +00:00
}