From 8de11bdac2678529b9cfe6d668ac37cd9879311f Mon Sep 17 00:00:00 2001 From: "Jill \"oatmealine\" Monoids" Date: Mon, 18 Mar 2024 00:22:03 +0300 Subject: [PATCH] audit logs wip --- migrations/20240317202418_auditLog.js | 21 ++++ src/commands/auditlog.ts | 0 src/index.ts | 3 +- src/lib/events.ts | 158 ++++++++++++++++++++++++++ 4 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 migrations/20240317202418_auditLog.js create mode 100644 src/commands/auditlog.ts create mode 100644 src/lib/events.ts diff --git a/migrations/20240317202418_auditLog.js b/migrations/20240317202418_auditLog.js new file mode 100644 index 0000000..95b76cf --- /dev/null +++ b/migrations/20240317202418_auditLog.js @@ -0,0 +1,21 @@ +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.up = function(knex) { + return knex.schema + .createTable('auditLogs', table => { + table.string('guild'); + table.string('channel'); + table.string('eventTypes'); + }); +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.down = function(knex) { + return knex.schema + .dropTable('auditLogs'); +}; diff --git a/src/commands/auditlog.ts b/src/commands/auditlog.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/index.ts b/src/index.ts index b88fbda..f9d89aa 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,7 +19,8 @@ const bot = new Client({ GatewayIntentBits.GuildMessageReactions, GatewayIntentBits.GuildMembers, GatewayIntentBits.MessageContent, - GatewayIntentBits.DirectMessages + GatewayIntentBits.DirectMessages, + GatewayIntentBits.GuildModeration, ], }); diff --git a/src/lib/events.ts b/src/lib/events.ts new file mode 100644 index 0000000..687ad07 --- /dev/null +++ b/src/lib/events.ts @@ -0,0 +1,158 @@ +import { Sticker, ThreadChannel, Message, User, Invite, GuildMember, GuildScheduledEvent, GuildEmoji, Channel } from 'discord.js'; + +export enum EventType { + ChannelCreate, + ChannelRename, + ChannelDelete, + + EmojiCreate, + EmojiRename, + EmojiDelete, + + EventCreate, + EventEdit, + EventDelete, + + InviteCreate, + InviteUpdate, + InviteDelete, + + MemberBan, + MemberUnban, + MemberKick, + MemberDisconnect, + MemberNickname, + MemberChangeRoles, + + MessageDelete, + MessageEdit, + + StickerCreate, + StickerRename, + StickerDelete, + + ThreadCreate, + ThreadEdit, + ThreadDelete, +} + +export type Event = { + type: EventType.ChannelCreate, + causer: User, + channel: Channel, +} | { + type: EventType.ChannelRename, + causer: User, + channel: Channel, + oldName: string, newName: string, +} | { + type: EventType.ChannelDelete, + causer: User, + channel: Channel, +} | { + type: EventType.EmojiCreate, + causer: User, + emoji: GuildEmoji, +} | { + type: EventType.EmojiRename, + causer: User, + emoji: GuildEmoji, + oldName: string, newName: string, +} | { + type: EventType.EmojiDelete, + causer: User, + emoji: GuildEmoji, +} | { + type: EventType.EventCreate, + causer: User, + event: GuildScheduledEvent, +} | { + type: EventType.EventEdit, + causer: User, + oldEvent: GuildScheduledEvent, + event: GuildScheduledEvent, +} | { + type: EventType.EventDelete, + causer: User, + event: GuildScheduledEvent, +} | { + type: EventType.InviteCreate, + causer: User, + invite: Invite, +} | { + type: EventType.InviteUpdate, + causer: User, + oldInvite: Invite, + invite: Invite, +} | { + type: EventType.InviteDelete, + causer: User, + invite: Invite, +} | { + type: EventType.MemberBan, + causer: User, + member: GuildMember, + reason: string, +} | { + type: EventType.MemberUnban, + causer: User, + member: GuildMember, + reason: string, +} | { + type: EventType.MemberKick, + causer: User, + member: GuildMember, + reason: string, +} | { + type: EventType.MemberDisconnect, + causer: User, + member: GuildMember, +} | { + type: EventType.MemberNickname, + causer: User, + member: GuildMember, + oldNickname: string, newNickname: string, +} | { + type: EventType.MemberChangeRoles, + causer: User, + member: GuildMember, + // TODO: huh +} | { + type: EventType.MessageDelete, + causer: User, + message: Message, +} | { + type: EventType.MessageEdit, + causer: User, + oldMessage: Message, + message: Message, +} | { + type: EventType.StickerCreate, + causer: User, + sticker: Sticker, +} | { + type: EventType.StickerRename, + causer: User, + oldName: string, newName: string, +} | { + type: EventType.StickerDelete, + causer: User, + sticker: Sticker, +} | { + type: EventType.ThreadCreate, + causer: User, + thread: ThreadChannel, +} | { + type: EventType.ThreadEdit, + causer: User, + oldThread: ThreadChannel, + thread: ThreadChannel, +} | { + type: EventType.ThreadDelete, + causer: User, + thread: ThreadChannel, +}; + +export async function triggerEvent(event: Event) { + +} \ No newline at end of file