generated from Baipyrus/DiscordJS-Template
implemented messageCreate event listener to reply to keywords
This commit is contained in:
parent
1336ee7d0d
commit
cbefb18dcd
@ -10,4 +10,44 @@ export async function execute(message) {
|
|||||||
|
|
||||||
// Split message content into words
|
// Split message content into words
|
||||||
const words = message.content.split(/\s+/);
|
const words = message.content.split(/\s+/);
|
||||||
|
|
||||||
|
// Get guild keywords
|
||||||
|
/** @type {import('../../models/keywords.js').Keyword[]} */
|
||||||
|
const keywords = await Keywords.findAll({
|
||||||
|
where: {
|
||||||
|
guild: message.guildId,
|
||||||
|
name: {
|
||||||
|
[Op.in]: words
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Ignore if no keywords found
|
||||||
|
if (keywords.length === 0) return;
|
||||||
|
|
||||||
|
// Get guild responses
|
||||||
|
/** @type {import('../../models/responses.js').Response|null} */
|
||||||
|
const response = await Responses.findOne({
|
||||||
|
where: {
|
||||||
|
keyword: {
|
||||||
|
[Op.in]: keywords.map((keyword) => keyword.id)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
order: sequelize.random()
|
||||||
|
});
|
||||||
|
|
||||||
|
// Ignore if no response found
|
||||||
|
if (response.length === null) return;
|
||||||
|
|
||||||
|
// Send response, selecting exactly one at random
|
||||||
|
await message.reply({
|
||||||
|
content: response.response,
|
||||||
|
allowedMentions: {
|
||||||
|
repliedUser: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
console.info(
|
||||||
|
`[INFO] Responded to keyword with '${response.name}' in guild with ID '${message.guild.id}'.`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user