Added other events with voice state logging

This commit is contained in:
2023-11-21 12:37:23 +01:00
parent 118bb7c6a0
commit 926d1f01e8
6 changed files with 128 additions and 7 deletions

View File

@@ -5,5 +5,6 @@
"inactivityLogChannel": "829742524796239882",
"staffOtherChannel": "1082036748558803104",
"hypixelGuildID": "5a353a170cf2e529044f2935",
"botLogChannel": "1101144489306886226"
"onlineLogChannel": "1101144489306886226",
"botLogChannel": "1174403585149243472"
}

View File

@@ -0,0 +1,76 @@
const { userMention, channelMention } = require('discord.js')
const { botLogChannel, color } = require('../../config/options.json')
module.exports = {
name: 'vcJoinLeave',
description: 'Logs when a user joins or leaves a voice channel.',
type: 'other',
event: 'voiceStateUpdate',
/**
* @param { import('discord.js').VoiceState } oldState
* @param { import('discord.js').VoiceState } newState
*/
execute(oldState, newState) {
const oldChannel = oldState.channel
const newChannel = newState.channel
const guild = oldState.guild
const channel = guild.channels.cache.get(botLogChannel)
const embedColor = Number(color.replace('#', '0x'))
if (oldChannel === null && newChannel !== null) {
channel.send({
embeds: [{
title: "Voice Channel Join",
description: userMention(oldState.member.id) +
" joined " +
channelMention(newChannel.id),
color: embedColor,
footer: {
text: "ID: " + oldState.member.id
},
timestamp: new Date()
}]
})
} else if (oldChannel !== null && newChannel === null) {
channel.send({
embeds: [{
title: "Voice Channel Leave",
description: userMention(oldState.member.id) +
" left " +
channelMention(oldChannel.id),
color: embedColor,
footer: {
text: "ID: " + oldState.member.id
},
timestamp: new Date()
}]
})
} else if (oldChannel !== null && newChannel !== null) {
channel.send({
embeds: [{
title: "Voice Channel Switch",
description: userMention(oldState.member.id) +
" switched from " +
channelMention(oldChannel.id) +
" to " +
channelMention(newChannel.id),
color: embedColor,
footer: {
text: "ID: " + oldState.member.id
},
timestamp: new Date()
}]
})
}
}
}

View File

@@ -1,4 +1,4 @@
const { botLogChannel, color } = require('../../config/options.json');
const { onlineLogChannel, color } = require('../../config/options.json');
module.exports = {
name: 'sendonlinemessage',
@@ -7,10 +7,11 @@ module.exports = {
execute(client) {
if (process.env.NODE_ENV !== 'dev') {
const channel = client.channels.cache.get(botLogChannel);
const channel = client.channels.cache.get(onlineLogChannel);
const embedColor = Number(color.replace('#', '0x'))
if (!channel) {
console.log(`[ERROR] Could not find channel used for online message.`);
return;
}

View File

@@ -1,5 +1,14 @@
const { Client, GatewayIntentBits, Partials, Collection } = require('discord.js');
const { loadSlashCommands, loadMessageEvents, loadContextMenu, loadModalEvents, loadButtonEvents, loadReadyEvents, loadInteractionEvents } = require('./utils/eventHandler.js')
const {
loadSlashCommands,
loadMessageEvents,
loadContextMenu,
loadModalEvents,
loadButtonEvents,
loadReadyEvents,
loadInteractionEvents,
loadOtherEvents
} = require('./utils/eventHandler.js')
const { autoDeployCommands } = require('./utils/autodeploy.js');
require('dotenv').config();
const mongoURI = process.env.MONGOURI;
@@ -20,7 +29,8 @@ const client = new Client({
GatewayIntentBits.GuildMessages,
GatewayIntentBits.GuildMembers,
GatewayIntentBits.MessageContent,
GatewayIntentBits.DirectMessages
GatewayIntentBits.DirectMessages,
GatewayIntentBits.GuildVoiceStates
],
partials: [
Partials.GuildMember,
@@ -41,6 +51,7 @@ loadModalEvents(client);
loadMessageEvents(client);
loadReadyEvents(client)
loadInteractionEvents(client);
loadOtherEvents(client);
client.login(token);

View File

@@ -5,5 +5,15 @@ const { loadMessageEvents } = require('./eventHandlers/message.js')
const { loadModalEvents } = require('./eventHandlers/modal.js')
const { loadReadyEvents } = require('./eventHandlers/ready.js')
const { loadInteractionEvents } = require('./eventHandlers/interaction.js')
const { loadOtherEvents } = require('./eventHandlers/other.js')
module.exports = { loadSlashCommands, loadButtonEvents, loadContextMenu, loadMessageEvents, loadModalEvents, loadReadyEvents, loadInteractionEvents }
module.exports = {
loadSlashCommands,
loadButtonEvents,
loadContextMenu,
loadMessageEvents,
loadModalEvents,
loadReadyEvents,
loadInteractionEvents,
loadOtherEvents
}

View File

@@ -0,0 +1,22 @@
const path = require('path');
const fs = require('fs');
/** @param { import('discord.js').Client } client */
function loadOtherEvents(client) {
const otherPath = path.join(__dirname, '..', '..', 'events', 'other')
const otherFiles = fs.readdirSync(otherPath).filter(file => file.endsWith('.js'));
for (const file of otherFiles) {
const filePath = path.join(otherPath, file);
const other = require(filePath);
if ('name' in other && 'execute' in other && 'event' in other && other.type === 'other') {
client.on(other.event, other.execute)
} else {
console.log(`[WARNING] The other event at ${filePath} is missing a required "name", "execute", "type" or "event" property.`);
}
}
}
module.exports = { loadOtherEvents }