generated from Baipyrus/DiscordJS-Template
implement reaction add/remove events
This commit is contained in:
parent
d7409ed0f7
commit
afa958b557
@ -1,11 +1,43 @@
|
||||
import { Events } from 'discord.js';
|
||||
import { config } from 'dotenv';
|
||||
import { Events } from 'discord.js';
|
||||
import { Message, RoleEmojiPair } from '../database.js';
|
||||
config();
|
||||
|
||||
export const name = Events.MessageReactionAdd;
|
||||
export async function execute(reaction, user) {
|
||||
if (user.id === process.env.CLIENT) return;
|
||||
const uname = user.username;
|
||||
const rname = reaction._emoji.name;
|
||||
console.debug(`[DEBUG] User '${uname}' reacted with emoji '${rname}'.`);
|
||||
|
||||
// Get message
|
||||
const msgID = reaction.message.id;
|
||||
const message = await Message.findOne({
|
||||
where: {
|
||||
id: msgID,
|
||||
}
|
||||
});
|
||||
// Ignore if unregistered
|
||||
if (message === null) return;
|
||||
|
||||
// Get emoji
|
||||
const emoji = reaction.emoji.toString();
|
||||
const rep = await RoleEmojiPair.findOne({
|
||||
where: {
|
||||
message: msgID,
|
||||
emoji,
|
||||
}
|
||||
});
|
||||
// Deny if unregistered
|
||||
if (rep === null) {
|
||||
// Remove reaction and quit
|
||||
await reaction.remove();
|
||||
return;
|
||||
}
|
||||
|
||||
// Fetch role from guild
|
||||
const guild = reaction.message.guild;
|
||||
const role = await guild.roles.fetch(rep.role);
|
||||
if (role === null) return;
|
||||
|
||||
// Add role to user
|
||||
await guild.members.addRole({ role, user });
|
||||
console.info(`[INFO] Added role with id '${role.id}' to user '${user.username}'.`);
|
||||
}
|
||||
|
@ -1,8 +1,39 @@
|
||||
import { config } from 'dotenv';
|
||||
import { Events } from 'discord.js';
|
||||
import { Message, RoleEmojiPair } from '../database.js';
|
||||
config();
|
||||
|
||||
export const name = Events.MessageReactionRemove;
|
||||
export async function execute(reaction, user) {
|
||||
const uname = user.username;
|
||||
const rname = reaction._emoji.name;
|
||||
console.debug(`[DEBUG] User '${uname}' removed reaction of emoji '${rname}'.`);
|
||||
if (user.id === process.env.CLIENT) return;
|
||||
|
||||
// Get message
|
||||
const msgID = reaction.message.id;
|
||||
const message = await Message.findOne({
|
||||
where: {
|
||||
id: msgID,
|
||||
}
|
||||
});
|
||||
// Ignore if unregistered
|
||||
if (message === null) return;
|
||||
|
||||
// Get emoji
|
||||
const emoji = reaction.emoji.toString();
|
||||
const rep = await RoleEmojiPair.findOne({
|
||||
where: {
|
||||
message: msgID,
|
||||
emoji,
|
||||
}
|
||||
});
|
||||
// Deny if unregistered
|
||||
if (rep === null) return;
|
||||
|
||||
// Fetch role from guild
|
||||
const guild = reaction.message.guild;
|
||||
const role = await guild.roles.fetch(rep.role);
|
||||
if (role === null) return;
|
||||
|
||||
// Add role to user
|
||||
await guild.members.removeRole({ role, user });
|
||||
console.info(`[INFO] Removed role with id '${role.id}' from user '${user.username}'.`);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user