summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
authorCadence Ember <cadence@disroot.org>2023-10-07 23:39:49 +1300
committerCadence Ember <cadence@disroot.org>2023-10-07 23:39:49 +1300
commit3ef569d855ce96236e4df6e155bbcf79427d5b1f (patch)
treeadccd09bf07ab4cc67091aac5147b5ced6876862 /scripts
parentIgnore messages from Deleted User (diff)
downloadout-of-your-element-3ef569d855ce96236e4df6e155bbcf79427d5b1f.tar.xz
seed.js should now upload the L1 & L2 emojis
Diffstat (limited to 'scripts')
-rw-r--r--scripts/seed.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/scripts/seed.js b/scripts/seed.js

index 2a0c279..0f2f23d 100644 --- a/scripts/seed.js +++ b/scripts/seed.js
@@ -1,10 +1,14 @@ // @ts-check +console.log("This could take up to 30 seconds. Please be patient.") + const assert = require("assert").strict const fs = require("fs") const sqlite = require("better-sqlite3") const HeatSync = require("heatsync") +const args = require("minimist")(process.argv.slice(2), {string: ["emoji-guild"]}) + const config = require("../config") const passthrough = require("../passthrough") const db = new sqlite("db/ooye.db") @@ -27,6 +31,24 @@ const file = require("../matrix/file") const reg = require("../matrix/read-registration") const utils = require("../m2d/converters/utils") +function die(message) { + console.error(message) + process.exit(1) +} + +async function uploadAutoEmoji(guild, name, filename) { + let emoji = guild.emojis.find(e => e.name === name) + if (!emoji) { + console.log(` Uploading ${name}...`) + const data = fs.readFileSync(filename, null) + emoji = await discord.snow.guildAssets.createEmoji(guild.id, {name, image: "data:image/png;base64," + data.toString("base64")}) + } else { + console.log(` Reusing ${name}...`) + } + db.prepare("REPLACE INTO auto_emoji (name, emoji_id, guild_id) VALUES (?, ?, ?)").run(emoji.name, emoji.id, guild.id) + return emoji +} + ;(async () => { const mxid = `@${reg.sender_localpart}:${reg.ooye.server_name}` @@ -45,6 +67,43 @@ const utils = require("../m2d/converters/utils") console.log("✅ Database is ready...") + // upload the L1 L2 emojis to some guild + const emojis = db.prepare("SELECT name FROM auto_emoji WHERE name = 'L1' OR name = 'L2'").pluck().all() + if (emojis.length !== 2) { + // If an argument was supplied, always use that one + let guild = null + if (args["emoji-guild"]) { + if (typeof args["emoji-guild"] === "string") { + guild = await discord.snow.guild.getGuild(args["emoji-guild"]) + } + if (!guild) return die(`Error: You asked emojis to be uploaded to guild ID ${args["emoji-guild"]}, but the bot isn't in that guild.`) + } + // Otherwise, check if we have already registered an auto emoji guild + if (!guild) { + const guildID = passthrough.select("auto_emoji", "guild_id", {name: "_"}).pluck().get() + if (guildID) { + guild = await discord.snow.guild.getGuild(guildID, false) + } + } + // Otherwise, check if we should create a new guild + if (!guild) { + const guilds = await discord.snow.user.getGuilds({limit: 11, with_counts: false}) + if (guilds.length < 10) { + console.log(" Creating a guild for emojis...") + guild = await discord.snow.guild.createGuild({name: "OOYE Emojis"}) + } + } + // Otherwise, it's the user's problem + if (!guild) { + return die(`Error: The bot needs to upload some emojis. Please say where to upload them to. Run seed.js again with --emoji-guild=GUILD_ID`) + } + // Upload those emojis to the chosen location + db.prepare("REPLACE INTO auto_emoji (name, emoji_id, guild_id) VALUES ('_', '_', ?)").run(guild.id) + await uploadAutoEmoji(guild, "L1", "docs/img/L1.png") + await uploadAutoEmoji(guild, "L2", "docs/img/L2.png") + } + console.log("✅ Emojis are ready...") + // ensure homeserver well-known is valid and returns reg.ooye.server_name... // upload initial images...