From a99386c43120933f44c17d37f0f9ac981a747ad8 Mon Sep 17 00:00:00 2001 From: Keanu Date: Thu, 31 Dec 2020 16:10:56 +0000 Subject: [PATCH 1/4] Added (currently broken) emote dumper. --- src/core/lib.ts | 27 +++++++++++++++++++++++++++ src/core/structures.ts | 18 +++++++++++++++++- src/events/emojiCreate.ts | 10 ++++++++++ src/events/emojiDelete.ts | 10 ++++++++++ src/events/emojiUpdate.ts | 10 ++++++++++ src/events/guildCreate.ts | 10 ++++++++++ src/events/guildDelete.ts | 10 ++++++++++ src/events/ready.ts | 2 ++ 8 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 src/events/emojiCreate.ts create mode 100644 src/events/emojiDelete.ts create mode 100644 src/events/emojiUpdate.ts create mode 100644 src/events/guildCreate.ts create mode 100644 src/events/guildDelete.ts diff --git a/src/core/lib.ts b/src/core/lib.ts index 976514f..ad7dba6 100644 --- a/src/core/lib.ts +++ b/src/core/lib.ts @@ -1,3 +1,4 @@ +import {writeFileSync} from "fs"; import {GenericWrapper, NumberWrapper, StringWrapper, ArrayWrapper} from "./wrappers"; import {Client, Message, TextChannel, DMChannel, NewsChannel, Guild, User, GuildMember, Permissions} from "discord.js"; import chalk from "chalk"; @@ -5,6 +6,7 @@ import {get} from "https"; import FileManager from "./storage"; import {eventListeners} from "../events/messageReactionRemove"; import {client} from "../index"; +import {EmoteRegistryDump, EmoteRegistryDumpEntry} from "./structures"; /** A type that describes what the library module does. */ export interface CommonLibrary { @@ -160,6 +162,31 @@ export function botHasPermission(guild: Guild | null, permission: number): boole return !!(client.user && guild?.members.resolve(client.user)?.hasPermission(permission)); } +export function updateGlobalEmoteRegistry(): void { + const data: EmoteRegistryDump = {version: 1, list: []}; + for (const guild of client.guilds.cache.values()) { + $.debug(client.guilds.cache.size); + for (const emote of guild.emojis.cache.values()) { + $.debug(client.emojis.cache.size); + console.log("HELLO?!"); + data.list.push({ + ref: emote.name, + id: emote.id, + name: emote.name, + requires_colons: emote.requiresColons || false, + animated: emote.animated, + url: emote.url, + guild_id: emote.guild.name, + guild_name: emote.guild.name + }); + } + } + const sData = JSON.stringify(data); + $.debug(data); + $.debug(sData); + writeFileSync("emote-registry.json", sData); +} + // Pagination function that allows for customization via a callback. // Define your own pages outside the function because this only manages the actual turning of pages. $.paginate = async ( diff --git a/src/core/structures.ts b/src/core/structures.ts index 1513d0b..0d78e13 100644 --- a/src/core/structures.ts +++ b/src/core/structures.ts @@ -1,7 +1,7 @@ import FileManager from "./storage"; import $, {select, GenericJSON, GenericStructure} from "./lib"; import {watch} from "fs"; -import {Guild as DiscordGuild} from "discord.js"; +import {Guild as DiscordGuild, Snowflake} from "discord.js"; class ConfigStructure extends GenericStructure { public token: string; @@ -106,3 +106,19 @@ if (process.argv[2] === "dev") { export function getPrefix(guild: DiscordGuild | null): string { return Storage.getGuild(guild?.id || "N/A").prefix ?? Config.prefix; } + +export interface EmoteRegistryDumpEntry { + ref: string; + id: Snowflake; + name: string; + requires_colons: boolean; + animated: boolean; + url: string; + guild_id: Snowflake; + guild_name: string; +} + +export interface EmoteRegistryDump { + version: number; + list: EmoteRegistryDumpEntry[]; +} diff --git a/src/events/emojiCreate.ts b/src/events/emojiCreate.ts new file mode 100644 index 0000000..dffd9aa --- /dev/null +++ b/src/events/emojiCreate.ts @@ -0,0 +1,10 @@ +import Event from "../core/event"; +import $ from "../core/lib"; +import {updateGlobalEmoteRegistry} from "../core/lib"; + +export default new Event<"emojiCreate">({ + on(emote) { + $.log(`Updated emote registry. ${emote.name}`); + updateGlobalEmoteRegistry(); + } +}); diff --git a/src/events/emojiDelete.ts b/src/events/emojiDelete.ts new file mode 100644 index 0000000..a3d5d43 --- /dev/null +++ b/src/events/emojiDelete.ts @@ -0,0 +1,10 @@ +import Event from "../core/event"; +import $ from "../core/lib"; +import {updateGlobalEmoteRegistry} from "../core/lib"; + +export default new Event<"emojiDelete">({ + on() { + $.log("Updated emote registry."); + updateGlobalEmoteRegistry(); + } +}); diff --git a/src/events/emojiUpdate.ts b/src/events/emojiUpdate.ts new file mode 100644 index 0000000..a7a8e11 --- /dev/null +++ b/src/events/emojiUpdate.ts @@ -0,0 +1,10 @@ +import Event from "../core/event"; +import $ from "../core/lib"; +import {updateGlobalEmoteRegistry} from "../core/lib"; + +export default new Event<"emojiUpdate">({ + on() { + $.log("Updated emote registry."); + updateGlobalEmoteRegistry(); + } +}); diff --git a/src/events/guildCreate.ts b/src/events/guildCreate.ts new file mode 100644 index 0000000..2820db7 --- /dev/null +++ b/src/events/guildCreate.ts @@ -0,0 +1,10 @@ +import Event from "../core/event"; +import $ from "../core/lib"; +import {updateGlobalEmoteRegistry} from "../core/lib"; + +export default new Event<"guildCreate">({ + on() { + $.log("Updated emote registry."); + updateGlobalEmoteRegistry(); + } +}); diff --git a/src/events/guildDelete.ts b/src/events/guildDelete.ts new file mode 100644 index 0000000..8fed108 --- /dev/null +++ b/src/events/guildDelete.ts @@ -0,0 +1,10 @@ +import Event from "../core/event"; +import $ from "../core/lib"; +import {updateGlobalEmoteRegistry} from "../core/lib"; + +export default new Event<"guildDelete">({ + on() { + $.log("Updated emote registry."); + updateGlobalEmoteRegistry(); + } +}); diff --git a/src/events/ready.ts b/src/events/ready.ts index 9cef5ec..e3fe021 100644 --- a/src/events/ready.ts +++ b/src/events/ready.ts @@ -2,6 +2,7 @@ import Event from "../core/event"; import {client} from "../index"; import $ from "../core/lib"; import {Config} from "../core/structures"; +import {updateGlobalEmoteRegistry} from "../core/lib"; export default new Event<"ready">({ once() { @@ -12,5 +13,6 @@ export default new Event<"ready">({ name: `${Config.prefix}help` }); } + updateGlobalEmoteRegistry(); } }); From 68d8eed4edd63ec02474c8547da1a23c0d17b443 Mon Sep 17 00:00:00 2001 From: Keanu Date: Thu, 31 Dec 2020 16:11:51 +0000 Subject: [PATCH 2/4] Added emote-registry to gitignore. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7f1e29d..db69620 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ test* !test/ *.bat desktop.ini +emote-registry.json # Logs logs @@ -68,4 +69,4 @@ typings/ .env config.json -.vscode/ \ No newline at end of file +.vscode/ From 5537cec29a0d512cae5509c39a00d71dcf9c6c35 Mon Sep 17 00:00:00 2001 From: WatDuhHekBro <44940783+WatDuhHekBro@users.noreply.github.com> Date: Fri, 1 Jan 2021 19:44:43 -0600 Subject: [PATCH 3/4] Removed structure redundancy and saves to data/ --- .gitignore | 1 - src/core/lib.ts | 17 +++++------------ src/core/structures.ts | 2 -- 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index db69620..a3becd9 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ test* !test/ *.bat desktop.ini -emote-registry.json # Logs logs diff --git a/src/core/lib.ts b/src/core/lib.ts index ad7dba6..7a12538 100644 --- a/src/core/lib.ts +++ b/src/core/lib.ts @@ -1,4 +1,3 @@ -import {writeFileSync} from "fs"; import {GenericWrapper, NumberWrapper, StringWrapper, ArrayWrapper} from "./wrappers"; import {Client, Message, TextChannel, DMChannel, NewsChannel, Guild, User, GuildMember, Permissions} from "discord.js"; import chalk from "chalk"; @@ -163,28 +162,22 @@ export function botHasPermission(guild: Guild | null, permission: number): boole } export function updateGlobalEmoteRegistry(): void { - const data: EmoteRegistryDump = {version: 1, list: []}; + const list: EmoteRegistryDumpEntry[] = []; + for (const guild of client.guilds.cache.values()) { - $.debug(client.guilds.cache.size); for (const emote of guild.emojis.cache.values()) { - $.debug(client.emojis.cache.size); - console.log("HELLO?!"); - data.list.push({ - ref: emote.name, + list.push({ id: emote.id, name: emote.name, requires_colons: emote.requiresColons || false, animated: emote.animated, url: emote.url, - guild_id: emote.guild.name, guild_name: emote.guild.name }); } } - const sData = JSON.stringify(data); - $.debug(data); - $.debug(sData); - writeFileSync("emote-registry.json", sData); + + FileManager.write("emote-registry", {version: 1, list}, true); } // Pagination function that allows for customization via a callback. diff --git a/src/core/structures.ts b/src/core/structures.ts index 0d78e13..a921931 100644 --- a/src/core/structures.ts +++ b/src/core/structures.ts @@ -108,13 +108,11 @@ export function getPrefix(guild: DiscordGuild | null): string { } export interface EmoteRegistryDumpEntry { - ref: string; id: Snowflake; name: string; requires_colons: boolean; animated: boolean; url: string; - guild_id: Snowflake; guild_name: string; } From f8d6c0d33603d3610fdb87565edc6d609d81c94c Mon Sep 17 00:00:00 2001 From: WatDuhHekBro <44940783+WatDuhHekBro@users.noreply.github.com> Date: Sat, 2 Jan 2021 20:16:15 -0600 Subject: [PATCH 4/4] Reverted changes except for the file location --- src/core/lib.ts | 8 +++++--- src/core/structures.ts | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/lib.ts b/src/core/lib.ts index 7a12538..0c44fbc 100644 --- a/src/core/lib.ts +++ b/src/core/lib.ts @@ -162,22 +162,24 @@ export function botHasPermission(guild: Guild | null, permission: number): boole } export function updateGlobalEmoteRegistry(): void { - const list: EmoteRegistryDumpEntry[] = []; + const data: EmoteRegistryDump = {version: 1, list: []}; for (const guild of client.guilds.cache.values()) { for (const emote of guild.emojis.cache.values()) { - list.push({ + data.list.push({ + ref: emote.name, id: emote.id, name: emote.name, requires_colons: emote.requiresColons || false, animated: emote.animated, url: emote.url, + guild_id: emote.guild.name, guild_name: emote.guild.name }); } } - FileManager.write("emote-registry", {version: 1, list}, true); + FileManager.write("emote-registry", data, true); } // Pagination function that allows for customization via a callback. diff --git a/src/core/structures.ts b/src/core/structures.ts index a921931..0d78e13 100644 --- a/src/core/structures.ts +++ b/src/core/structures.ts @@ -108,11 +108,13 @@ export function getPrefix(guild: DiscordGuild | null): string { } export interface EmoteRegistryDumpEntry { + ref: string; id: Snowflake; name: string; requires_colons: boolean; animated: boolean; url: string; + guild_id: Snowflake; guild_name: string; }