generated from Baipyrus/DiscordJS-Template
implement and categorized info methods and completion
This commit is contained in:
parent
904c33c2f8
commit
c666f5bf8d
@ -208,11 +208,62 @@ async function listResponse(interaction) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** @param {ChatInputCommandInteraction} interaction */
|
/** @param {ChatInputCommandInteraction} interaction */
|
||||||
async function infoResponse(interaction) {
|
async function responseInfos(interaction) {
|
||||||
const { options } = interaction;
|
const { options } = interaction;
|
||||||
|
|
||||||
// Get command options
|
// Get command options
|
||||||
const keyword = options.getString('keyword');
|
const keyword = options.getString('keyword');
|
||||||
|
const name = options.getString('name');
|
||||||
|
|
||||||
|
// Find keyword in database
|
||||||
|
/** @type {import('../../models/keywords.js').Keyword|null} */
|
||||||
|
const found = await Keywords.findOne({
|
||||||
|
where: {
|
||||||
|
guild: interaction.guildId,
|
||||||
|
name: keyword
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Abort if keyword not found
|
||||||
|
if (found === null) {
|
||||||
|
await interaction.reply({
|
||||||
|
content: 'Unknown keyword was specified!',
|
||||||
|
ephemeral: true
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find response in database
|
||||||
|
/** @type {import('../../models/responses.js').Response|null} */
|
||||||
|
const response = await Responses.findOne({
|
||||||
|
where: {
|
||||||
|
keyword: found.id,
|
||||||
|
name
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Abort if response not found
|
||||||
|
if (response === null) {
|
||||||
|
await interaction.reply({
|
||||||
|
content: 'Unknown response was specified!',
|
||||||
|
ephemeral: true
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reply with success
|
||||||
|
await interaction.reply({
|
||||||
|
content: `Response with name '${name}' has data of \`${response.response}\`!`,
|
||||||
|
ephemeral: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param {ChatInputCommandInteraction} interaction */
|
||||||
|
async function keywordInfos(interaction) {
|
||||||
|
const { options } = interaction;
|
||||||
|
|
||||||
|
// Get command options
|
||||||
|
const keyword = options.getString('name');
|
||||||
|
|
||||||
// Find keyword in database
|
// Find keyword in database
|
||||||
/** @type {import('../../models/keywords.js').Keyword|null} */
|
/** @type {import('../../models/keywords.js').Keyword|null} */
|
||||||
@ -402,16 +453,40 @@ export const data = new SlashCommandBuilder()
|
|||||||
.addSubcommand((subcommand) =>
|
.addSubcommand((subcommand) =>
|
||||||
subcommand.setName('list').setDescription('Lists all registered keywords.')
|
subcommand.setName('list').setDescription('Lists all registered keywords.')
|
||||||
)
|
)
|
||||||
.addSubcommand((subcommand) =>
|
.addSubcommandGroup((group) =>
|
||||||
subcommand
|
group
|
||||||
.setName('info')
|
.setName('info')
|
||||||
.setDescription('Shows responses of a registered keyword.')
|
.setDescription('Lists information about a response or a keyword.')
|
||||||
.addStringOption((option) =>
|
.addSubcommand((subcommand) =>
|
||||||
option
|
subcommand
|
||||||
.setName('keyword')
|
.setName('keyword')
|
||||||
.setDescription('The keyword to show the details of.')
|
.setDescription('Lists registered responses of a keyword.')
|
||||||
.setAutocomplete(true)
|
.addStringOption((option) =>
|
||||||
.setRequired(true)
|
option
|
||||||
|
.setName('name')
|
||||||
|
.setDescription('The keyword to be shown the details of.')
|
||||||
|
.setAutocomplete(true)
|
||||||
|
.setRequired(true)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.addSubcommand((subcommand) =>
|
||||||
|
subcommand
|
||||||
|
.setName('response')
|
||||||
|
.setDescription('Lists the data being sent by a response.')
|
||||||
|
.addStringOption((option) =>
|
||||||
|
option
|
||||||
|
.setName('keyword')
|
||||||
|
.setDescription('The keyword that would trigger the response.')
|
||||||
|
.setAutocomplete(true)
|
||||||
|
.setRequired(true)
|
||||||
|
)
|
||||||
|
.addStringOption((option) =>
|
||||||
|
option
|
||||||
|
.setName('name')
|
||||||
|
.setDescription('The name of the data to be listed.')
|
||||||
|
.setAutocomplete(true)
|
||||||
|
.setRequired(true)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
/** @param {ModalSubmitInteraction} interaction */
|
/** @param {ModalSubmitInteraction} interaction */
|
||||||
@ -465,14 +540,15 @@ export async function autocomplete(interaction) {
|
|||||||
const joined = group === null ? command : `${group} ${command}`;
|
const joined = group === null ? command : `${group} ${command}`;
|
||||||
|
|
||||||
switch (joined) {
|
switch (joined) {
|
||||||
|
case 'info keyword':
|
||||||
case 'remove keyword':
|
case 'remove keyword':
|
||||||
await keywordAutocomplete(interaction);
|
await keywordAutocomplete(interaction);
|
||||||
break;
|
break;
|
||||||
|
case 'info response':
|
||||||
case 'remove response':
|
case 'remove response':
|
||||||
await responseAutocomplete(interaction);
|
await responseAutocomplete(interaction);
|
||||||
break;
|
break;
|
||||||
case 'add':
|
case 'add':
|
||||||
case 'info':
|
|
||||||
keywordAutocomplete(interaction);
|
keywordAutocomplete(interaction);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -501,8 +577,11 @@ export async function execute(interaction) {
|
|||||||
case 'list':
|
case 'list':
|
||||||
listResponse(interaction);
|
listResponse(interaction);
|
||||||
break;
|
break;
|
||||||
case 'info':
|
case 'info keyword':
|
||||||
infoResponse(interaction);
|
keywordInfos(interaction);
|
||||||
|
break;
|
||||||
|
case 'info response':
|
||||||
|
responseInfos(interaction);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user