From c32fb9c793b85fdc13bec89db2813cd38c3f054a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Gro=C3=9F?= Date: Tue, 7 Nov 2023 18:25:04 +0100 Subject: [PATCH] Migrate user avatar update notifications --- events/messageCreate.js | 2 +- events/userUpdate.js | 40 ++++++++++++++++++++++++++++++++++++++++ main.js | 3 ++- 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 events/userUpdate.js diff --git a/events/messageCreate.js b/events/messageCreate.js index 88092eb..31f6802 100644 --- a/events/messageCreate.js +++ b/events/messageCreate.js @@ -3,6 +3,6 @@ const { Events } = require('discord.js'); module.exports = { name: Events.MessageCreate, async execute(message) { - console.log(`[${message.guild.name}/${message.channe.name}]${message.author.globalName}: ${message.content}`); + console.log(`[${message.guild.name}/${message.channel.name}]${message.author.globalName}: ${message.content}`); }, }; \ No newline at end of file diff --git a/events/userUpdate.js b/events/userUpdate.js new file mode 100644 index 0000000..a753dd2 --- /dev/null +++ b/events/userUpdate.js @@ -0,0 +1,40 @@ +const { Events, EmbedBuilder, AttachmentBuilder } = require('discord.js'); + +module.exports = { + name: Events.UserUpdate, + async execute(oldMember, newMember) { + + let client = newMember.client; + let debugChannel = await client.channels.fetch('1171410849269809232'); + + let notifyList = [ + { guild: '837807020618023002', channel: '938462252720328715' } + ] + + if(oldMember.avatarURL() !== newMember.avatarURL()) { + console.log(`[USER] ${oldMember.displayName} changed their avatar`); + const newAvatar = new AttachmentBuilder(newMember.avatarURL({ size: 1024 }), { name: 'new.webp' }); + + const notificationEmbed = new EmbedBuilder() + .setColor(0x0099FF) + .setTitle('Avatar changed') + .setDescription(`${newMember.displayName} changed their avatar`) + .setImage('attachment://new.webp') + .setTimestamp(); + + debugChannel.send({ embeds: [notificationEmbed], files: [newAvatar] }); + + for (const subscriber of notifyList) { + let guild = await client.guilds.fetch(subscriber['guild']); + if (guild.members.cache.has(newMember.id)) { + console.log(`[NOTIFY] Sending avatar notification for ${newMember.displayName} to ${guild.name}`); + await (await client.channels.fetch(subscriber['channel'])).send({ embeds: [notificationEmbed], files: [newAvatar] }); + } + } + } + + if(oldMember.globalName !== oldMember.globalName) { + console.log(`[USER] ${oldMember.displayName} changed their name to ${newMember.displayName}`); + } + }, +}; \ No newline at end of file diff --git a/main.js b/main.js index bc5a24f..23bb4ea 100644 --- a/main.js +++ b/main.js @@ -3,7 +3,7 @@ const path = require('node:path'); const { Client, Collection, Events, GatewayIntentBits } = require('discord.js'); const { token } = require('./config.json'); -const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMessages] }); +const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildMembers, GatewayIntentBits.GuildPresences] }); client.commands = new Collection(); const foldersPath = path.join(__dirname, 'commands'); @@ -32,6 +32,7 @@ for (const file of eventFiles) { if (event.once) { client.once(event.name, (...args) => event.execute(...args)); } else { + console.log(`Registered event ${event.name} ${file}`); client.on(event.name, (...args) => event.execute(...args)); } }