aboutsummaryrefslogtreecommitdiff
path: root/src/listeners/member-custom/updateSettings.ts
blob: 2b6c8b06d8c0e53574416b7cc915e0d34fb26d47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import { BotListener, colors, Emitter, TanzaniteEvent, type BotClientEvents } from '#lib';
import { EmbedBuilder } from 'discord.js';

export default class UpdateSettingsListener extends BotListener {
	public constructor() {
		super(TanzaniteEvent.UpdateSettings, {
			emitter: Emitter.Client,
			event: TanzaniteEvent.UpdateSettings
		});
	}

	public async exec(...[setting, guild, oldSettings, newSettings, moderator]: BotClientEvents[TanzaniteEvent.UpdateSettings]) {
		const logChannel = await guild.getLogChannel('moderation');
		if (!logChannel) return;

		const logEmbed = new EmbedBuilder().setColor(colors.Blurple).setTimestamp();

		if (moderator)
			logEmbed.setAuthor({
				name: moderator.user.tag,
				iconURL: moderator.user.avatarURL({ extension: 'png', size: 4096 }) ?? undefined
			});
		logEmbed.addFields({ name: '**Action**', value: `${'Update Settings'}` });
		if (moderator) logEmbed.addFields({ name: '**Moderator**', value: `${moderator} (${moderator.user.tag})` });
		logEmbed.addFields(
			{ name: '**Setting Changed**', value: setting },
			{ name: '**Old Value**', value: await this.client.utils.inspectCleanRedactCodeblock(oldSettings, 'js', undefined, 1024) },
			{ name: '**New Value**', value: await this.client.utils.inspectCleanRedactCodeblock(newSettings, 'js', undefined, 1024) }
		);

		return await logChannel.send({ embeds: [logEmbed] });
	}
}