export async function uploadMissingEmojis(client) {
let emojiFiles = [];
try {
emojiFiles = fs
.readdirSync(emojiDir)
.filter(file => file.endsWith('.png'));
if (emojiFiles.length > 0) {
log(`Detected ${emojiFiles.length} emoji files to upload.`);
}
} catch (e) {
error(`Failed to read emoji directory: ${e}`);
return;
}
const rest = new REST({ version: '10' }).setToken(client.token);
let appEmojis = [];
try {
appEmojis = await rest.get(Routes.applicationEmojis(client.application.id), {
headers: { Authorization: `Bot ${client.token}` }
});
} catch (e) {
warn(`Unable to fetch application emojis. Continuing without duplicate check: ${e}`);
}
if (!Array.isArray(appEmojis)) {
appEmojis = Object.values(appEmojis);
}
for (const file of emojiFiles) {
const emojiName = path.basename(file, path.extname(file));
if (appEmojis.some(e => e.name === emojiName)) {
debug(`Emoji "${emojiName}" already exists in the bot's application emojis.`);
continue;
}
const emojiPath = path.join(emojiDir, file);
let emojiBuffer;
try {
emojiBuffer = fs.readFileSync(emojiPath);
} catch (e) {
error(`Failed to read emoji file "${file}": ${e}`);
continue;
}
const imageData = `data:image/png;base64,${emojiBuffer.toString('base64')}`;
try {
const newEmoji = await rest.post(
Routes.applicationEmoji(client.application.id),
{
body: { name: emojiName, image: imageData },
}
);
success(`Uploaded emoji "${newEmoji.name}" to the bot's application.`);
} catch (e) {
error(`Failed to upload emoji "${emojiName}": ${e.stack}`);
}
}
}
export async function uploadMissingEmojis(client) {
let emojiFiles = [];
try {
emojiFiles = fs
.readdirSync(emojiDir)
.filter(file => file.endsWith('.png'));
if (emojiFiles.length > 0) {
log(`Detected ${emojiFiles.length} emoji files to upload.`);
}
} catch (e) {
error(`Failed to read emoji directory: ${e}`);
return;
}
const rest = new REST({ version: '10' }).setToken(client.token);
let appEmojis = [];
try {
appEmojis = await rest.get(Routes.applicationEmojis(client.application.id), {
headers: { Authorization: `Bot ${client.token}` }
});
} catch (e) {
warn(`Unable to fetch application emojis. Continuing without duplicate check: ${e}`);
}
if (!Array.isArray(appEmojis)) {
appEmojis = Object.values(appEmojis);
}
for (const file of emojiFiles) {
const emojiName = path.basename(file, path.extname(file));
if (appEmojis.some(e => e.name === emojiName)) {
debug(`Emoji "${emojiName}" already exists in the bot's application emojis.`);
continue;
}
const emojiPath = path.join(emojiDir, file);
let emojiBuffer;
try {
emojiBuffer = fs.readFileSync(emojiPath);
} catch (e) {
error(`Failed to read emoji file "${file}": ${e}`);
continue;
}
const imageData = `data:image/png;base64,${emojiBuffer.toString('base64')}`;
try {
const newEmoji = await rest.post(
Routes.applicationEmoji(client.application.id),
{
body: { name: emojiName, image: imageData },
}
);
success(`Uploaded emoji "${newEmoji.name}" to the bot's application.`);
} catch (e) {
error(`Failed to upload emoji "${emojiName}": ${e.stack}`);
}
}
}