use shared method for keyword autocomplete

This commit is contained in:
Baipyrus 2024-04-05 11:33:48 +02:00
parent 1d5d22dd5f
commit 765e80071a

View File

@ -305,30 +305,6 @@ async function completeResponses(interaction, focused) {
// Filter total list of responses // Filter total list of responses
const filtered = responses.filter((choice) => choice.name.startsWith(focused)); const filtered = responses.filter((choice) => choice.name.startsWith(focused));
// Respond with possible suggestions
await interaction.respond(
filtered.map((choice) => ({ name: choice.name, value: choice.response }))
);
}
/**
* @param {AutocompleteInteraction} interaction
* @param {string} focused
*/
async function completeKeywords(interaction, focused) {
const { guildId } = interaction;
// Get list of keywords from database
/** @type {import('../../models/keywords.js').Keyword[]} */
const keywords = await Keywords.findAll({
where: {
guild: guildId
}
});
// Filter total list of keywords
const filtered = keywords.filter((choice) => choice.name.startsWith(focused));
// Respond with possible suggestions // Respond with possible suggestions
await interaction.respond(filtered.map((choice) => ({ name: choice.name, value: choice.name }))); await interaction.respond(filtered.map((choice) => ({ name: choice.name, value: choice.name })));
} }
@ -339,10 +315,10 @@ async function responseAutocomplete(interaction) {
// Get command options // Get command options
const focused = options.getFocused(true); const focused = options.getFocused(true);
const { value } = focused; const { name, value } = focused;
switch (focused.name) { switch (name) {
case 'keyword': case 'keyword':
completeKeywords(interaction, value); keywordAutocomplete(interaction, value);
break; break;
case 'name': case 'name':
completeResponses(interaction, value); completeResponses(interaction, value);