68 lines
2.9 KiB
JavaScript
68 lines
2.9 KiB
JavaScript
const { InteractionType } = require('discord.js');
|
|
const { UserUtils, SearchUtils } = require('../util');
|
|
const { Character, Group } = require('../models');
|
|
|
|
module.exports = {
|
|
name: "interactionCreate",
|
|
async execute (interaction) {
|
|
if (interaction.type !== InteractionType.ApplicationCommandAutocomplete) return;
|
|
let isRegistered = await UserUtils.registrationCheck(interaction);
|
|
if (!isRegistered) return;
|
|
console.log(`Autocomplete request from ${interaction.user.tag} (${interaction.user.id}) for ${interaction.commandName} with ${interaction.options.getFocused(true).value}`);
|
|
|
|
let user = await UserUtils.getUserByDiscordId(interaction.member.id);
|
|
let focusedOption = interaction.options.getFocused(true);
|
|
let choices = [];
|
|
|
|
if (interaction.commandName === "burn") {
|
|
choices = (await SearchUtils.findCards(focusedOption, { user: user, ownedOnly: true }))["choices"];
|
|
}
|
|
|
|
if (interaction.commandName === "trade") {
|
|
if (focusedOption.name === "card") {
|
|
choices = (await SearchUtils.findCards(focusedOption, { user: user, ownedOnly: true }))["choices"];
|
|
}
|
|
}
|
|
|
|
if (interaction.commandName === 'view') {
|
|
const viewType = interaction.options.getString('type');
|
|
|
|
switch (viewType) {
|
|
case 'card':
|
|
choices = (await SearchUtils.findCards(focusedOption, { user: user}))["choices"];
|
|
break;
|
|
case 'character':
|
|
choices = (await SearchUtils.findByName(Character, focusedOption.value))["choices"];
|
|
break;
|
|
case 'group':
|
|
choices = (await SearchUtils.findByName(Group, focusedOption.value))["choices"];
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (interaction.commandName === 'wishlist') {
|
|
choices = (await SearchUtils.findByName(Character, focusedOption.value))["choices"];
|
|
}
|
|
|
|
if (interaction.commandName === 'collection') {
|
|
const character = interaction.options.getString('character');
|
|
const group = interaction.options.getString('group');
|
|
const quality = interaction.options.getString('quality');
|
|
//TODO: avoid duplicate code hehe
|
|
switch (focusedOption.name) {
|
|
case 'character':
|
|
choices = (await SearchUtils.findByName(Character, focusedOption.value))["choices"];
|
|
break;
|
|
case 'group':
|
|
choices = (await SearchUtils.findByName(Group, focusedOption.value))["choices"];
|
|
break;
|
|
}
|
|
}
|
|
if (choices.length > 0) {
|
|
choices = choices.splice(0,10);
|
|
console.log(choices);
|
|
await interaction.respond(choices);
|
|
}
|
|
return;
|
|
},
|
|
} |