Rework bot function #13
@@ -1,5 +1,5 @@
 | 
			
		||||
import client from "../client";
 | 
			
		||||
import { Events } from "discord.js";
 | 
			
		||||
import { AuditLogEvent, Events, GuildAuditLogsEntry, PermissionFlagsBits, User } from "discord.js";
 | 
			
		||||
import { getGuildSetting } from "../tools/data";
 | 
			
		||||
import { Badword, database } from "../data";
 | 
			
		||||
import { IsNull } from "typeorm";
 | 
			
		||||
@@ -39,6 +39,33 @@ client.on(Events.ChannelUpdate, async (oldChannel, newChannel) => {
 | 
			
		||||
 | 
			
		||||
    if (found === null) return;
 | 
			
		||||
 | 
			
		||||
    let responsibleUser: User | null;
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
        const clientMember = await guild.members.fetchMe();
 | 
			
		||||
        const canSeeAuditLog = clientMember.permissions.has(PermissionFlagsBits.ViewAuditLog);
 | 
			
		||||
        const auditLogs = canSeeAuditLog ? await guild.fetchAuditLogs({
 | 
			
		||||
            type: AuditLogEvent.ChannelUpdate,
 | 
			
		||||
            limit: 50
 | 
			
		||||
        }) : undefined;
 | 
			
		||||
 | 
			
		||||
        const change = auditLogs?.entries.filter((entry) => {
 | 
			
		||||
            if (entry.target.id !== newChannel.id) return false;
 | 
			
		||||
 | 
			
		||||
            return entry.changes.filter((change) => {
 | 
			
		||||
                return change.key === "name" && change.new === newChannel.name;
 | 
			
		||||
            }).length > 0;
 | 
			
		||||
        }).reduce<null | GuildAuditLogsEntry<AuditLogEvent.ChannelUpdate, "Update", "Channel", AuditLogEvent.ChannelUpdate>>((unknown, curr) => {
 | 
			
		||||
            if (!unknown) return curr;
 | 
			
		||||
            const prev = unknown as GuildAuditLogsEntry<AuditLogEvent.ChannelUpdate, "Update", "Channel", AuditLogEvent.ChannelUpdate>
 | 
			
		||||
            return curr.createdTimestamp > prev.createdTimestamp ? curr : prev;
 | 
			
		||||
        }, null);
 | 
			
		||||
 | 
			
		||||
        responsibleUser = change?.executor || null;
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        responsibleUser = null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const logChannel = settings.notificationChannelID ? await getGuildChannel(guild.id, settings.notificationChannelID) : null;
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
@@ -51,6 +78,9 @@ client.on(Events.ChannelUpdate, async (oldChannel, newChannel) => {
 | 
			
		||||
        embed.addFields({
 | 
			
		||||
            name: "Detected banned word:",
 | 
			
		||||
            value: `||${found}||`
 | 
			
		||||
        }, {
 | 
			
		||||
            name: "Channel renamed by:",
 | 
			
		||||
            value: responsibleUser ? `${responsibleUser.tag} (${responsibleUser.id})` : "`Couldn't detect responsible user :(`"
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        logChannel.send({
 | 
			
		||||
@@ -68,6 +98,9 @@ client.on(Events.ChannelUpdate, async (oldChannel, newChannel) => {
 | 
			
		||||
        name: "Detected banned word:",
 | 
			
		||||
        value: `||${found}||`,
 | 
			
		||||
        inline: true
 | 
			
		||||
    }, {
 | 
			
		||||
        name: "Channel renamed by:",
 | 
			
		||||
        value: responsibleUser ? `${responsibleUser.tag} (${responsibleUser.id})` : "`Couldn't detect responsible user :(`"
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    logChannel.send({
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user