Fixed worker termination and result retrieving

This commit is contained in:
2025-12-02 11:31:34 +01:00
parent ec9f14c9e7
commit fe4c03357a
4 changed files with 67 additions and 22 deletions

38
bot.js
View File

@@ -19,22 +19,20 @@ const launch = async () => {
await data.sender.send(data.socialChannelID, message) await data.sender.send(data.socialChannelID, message)
}); });
data.client.once('clientReady', async () => { /*data.client.once('clientReady', async () => {
await data.sender.send(data.updateChannelID, "I'm now online ! ✅") await data.sender.send(data.updateChannelID, "I'm now online ! ✅")
console.log(`✅ Logged in as ${data.client.user.tag}`); console.log(`✅ Logged in as ${data.client.user.tag}`);
}); });*/
data.client.on('messageCreate', async (message) => { data.client.on('messageCreate', async (message) => {
const isGuildOwner = message.guild && message.author.id === message.guild.ownerId; const isGuildOwner = message.guild && message.author.id === message.guild.ownerId;
if (message.content === '/login' && isGuildOwner) { if (message.content === '/login' && isGuildOwner) {
await message.reply(data.instagramTokenManager.getOauthUrl()); await message.reply(data.instagramTokenManager.getOauthUrl());
} }
}); if (message.content === '/name-card-test' ) {
data.client.on('guildMemberAdd', async (member) => {
try { try {
const avatarUrl = member.user.displayAvatarURL({ extension: 'png', size: 512 }); const avatarUrl = message.author.displayAvatarURL({ extension: 'png', size: 512 });
const username = member.displayName; const username = message.author.displayName;
const result = await launchWorker({ const result = await launchWorker({
templatePath: data.nameCardTemplate, templatePath: data.nameCardTemplate,
@@ -44,6 +42,32 @@ const launch = async () => {
const attachment = new AttachmentBuilder(Buffer.from(result.result), { name: 'namecard.png' }); const attachment = new AttachmentBuilder(Buffer.from(result.result), { name: 'namecard.png' });
const channel = await message.guild.channels.fetch(data.welcomeChannelID);
await channel.send({ files: [attachment] });
} catch (err) {
await Logger.error('Failed to generate/send name card:', err);
}
}
});
data.client.on('guildMemberAdd', async (member) => {
try {
const avatarUrl = member.user.displayAvatarURL({ extension: 'png', size: 512 });
const username = member.displayName || member.user.username;
const result = await launchWorker({
templatePath: data.nameCardTemplate,
avatarURL: avatarUrl,
username: username,
});
const attachment = new AttachmentBuilder(Buffer.from(result.result), { name: 'namecard.png' });
/*const attachment = new AttachmentBuilder(
Buffer.isBuffer(result.result) ? result.result : Buffer.from(result.result),
{ name: 'namecard.png' }
);*/
const channel = await member.guild.channels.fetch(data.welcomeChannelID); const channel = await member.guild.channels.fetch(data.welcomeChannelID);
await channel.send({ files: [attachment] }); await channel.send({ files: [attachment] });

View File

@@ -1,25 +1,41 @@
import {NameCardCreator} from "../wwwroot/core/namecards/nameCardCreator.js";
import {launchWorker} from "../wwwroot/core/namecards/workerLauncher.js";
import {data} from "../wwwroot/core/appData.js"; import {data} from "../wwwroot/core/appData.js";
import {launchWorker} from "../wwwroot/core/namecards/workerLauncher.js";
import {AttachmentBuilder} from "discord.js";
import {Logger} from "../wwwroot/core/logging/logger.js";
const templatePath = "./wwwroot/assets/name-card-template.png"; data.client.on('clientReady', async () => {
const avatarPath = "./tests/assets/avatar-test.png"; console.log("Ready!");
const name = "Aude Vaiselle";
const guild = await data.client.guilds.fetch(data.testGuildID);
const member = await guild.members.fetch(data.testUserID);
try{ console.log("Emitting fake guildMemberAdd...");
const result = await launchWorker({ data.client.emit("guildMemberAdd", member);
templatePath: data.nameCardTemplate,
avatarURL: avatarPath,
username: name,
}); });
const buffer = Buffer.from(result.result); data.client.on('guildMemberAdd', async (member) => {
console.log(buffer); try {
const avatarUrl = member.user.displayAvatarURL({ extension: 'png', size: 512 });
const username = member.displayName || member.user.username;
console.log("Generation successful ✅") const result = await launchWorker({
} catch (error) { templatePath: data.nameCardTemplate,
console.log(error); avatarURL: avatarUrl,
username: username,
});
const attachment = new AttachmentBuilder(Buffer.from(result.result), { name: 'namecard.png' });
/*const attachment = new AttachmentBuilder(
Buffer.isBuffer(result.result) ? result.result : Buffer.from(result.result),
{ name: 'namecard.png' }
);*/
const channel = await member.guild.channels.fetch(data.welcomeChannelID);
await channel.send({ files: [attachment] });
} catch (err) {
await Logger.error('Failed to generate/send name card:', err);
} }
});
await data.client.login(process.env.DISCORD_TOKEN);

View File

@@ -24,6 +24,9 @@ const updateChannelID = process.env.BOT_UPDATE_CHANNEL_ID;
const socialChannelID = process.env.SOCIAL_CHANNEL_ID const socialChannelID = process.env.SOCIAL_CHANNEL_ID
const welcomeChannelID = process.env.WELCOME_CHANNEL_ID const welcomeChannelID = process.env.WELCOME_CHANNEL_ID
const testGuildID = process.env.TEST_GUILD_ID;
const testUserID = process.env.TEST_USER_ID;
const filePath = ".instagram_client_tokens.json"; const filePath = ".instagram_client_tokens.json";
const usersToken = new UsersToken(filePath) const usersToken = new UsersToken(filePath)
@@ -41,6 +44,8 @@ export const data = {
updateChannelID, updateChannelID,
socialChannelID, socialChannelID,
welcomeChannelID, welcomeChannelID,
testGuildID,
testUserID,
instagramTokenManager, instagramTokenManager,
nameCardTemplate nameCardTemplate
//tiktokTokenManager //tiktokTokenManager

View File

@@ -8,11 +8,11 @@ parentPort.on("message", async (data) => {
const creator = new NameCardCreator(templatePath); const creator = new NameCardCreator(templatePath);
const buffer = await creator.getWelcomeCard(avatarURL, username); const buffer = await creator.getWelcomeCard(avatarURL, username);
console.log(buffer);
parentPort.postMessage({ result: buffer }); parentPort.postMessage({ result: buffer });
} catch (err) { } catch (err) {
parentPort.postMessage({ error: err.message }); parentPort.postMessage({ error: err.message });
} finally {
parentPort.close();
} }
}); });