diff --git a/bot.js b/bot.js index ff91a27..f7a91b4 100644 --- a/bot.js +++ b/bot.js @@ -19,22 +19,42 @@ const launch = async () => { 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 ! ✅") console.log(`✅ Logged in as ${data.client.user.tag}`); - }); + });*/ data.client.on('messageCreate', async (message) => { const isGuildOwner = message.guild && message.author.id === message.guild.ownerId; if (message.content === '/login' && isGuildOwner) { await message.reply(data.instagramTokenManager.getOauthUrl()); } + if (message.content === '/name-card-test' ) { + try { + const avatarUrl = message.author.displayAvatarURL({ extension: 'png', size: 512 }); + const username = message.author.displayName; + + const result = await launchWorker({ + templatePath: data.nameCardTemplate, + avatarURL: avatarUrl, + username: username, + }); + + 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; + const username = member.displayName || member.user.username; const result = await launchWorker({ templatePath: data.nameCardTemplate, @@ -43,6 +63,10 @@ const launch = async () => { }); 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] }); diff --git a/tests/name-card-test.js b/tests/name-card-test.js index 9b9062d..f6f137d 100644 --- a/tests/name-card-test.js +++ b/tests/name-card-test.js @@ -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 {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"; -const avatarPath = "./tests/assets/avatar-test.png"; -const name = "Aude Vaiselle"; +data.client.on('clientReady', async () => { + console.log("Ready!"); + const guild = await data.client.guilds.fetch(data.testGuildID); + const member = await guild.members.fetch(data.testUserID); -try{ - const result = await launchWorker({ - templatePath: data.nameCardTemplate, - avatarURL: avatarPath, - username: name, - }); + console.log("Emitting fake guildMemberAdd..."); + data.client.emit("guildMemberAdd", member); +}); - const buffer = Buffer.from(result.result); - console.log(buffer); +data.client.on('guildMemberAdd', async (member) => { + try { + const avatarUrl = member.user.displayAvatarURL({ extension: 'png', size: 512 }); + const username = member.displayName || member.user.username; - console.log("Generation successful ✅") -} catch (error) { - console.log(error); -} + 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); + 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); diff --git a/wwwroot/core/appData.js b/wwwroot/core/appData.js index 4618724..d51d731 100644 --- a/wwwroot/core/appData.js +++ b/wwwroot/core/appData.js @@ -24,6 +24,9 @@ const updateChannelID = process.env.BOT_UPDATE_CHANNEL_ID; const socialChannelID = process.env.SOCIAL_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 usersToken = new UsersToken(filePath) @@ -41,6 +44,8 @@ export const data = { updateChannelID, socialChannelID, welcomeChannelID, + testGuildID, + testUserID, instagramTokenManager, nameCardTemplate //tiktokTokenManager diff --git a/wwwroot/core/namecards/nameCardWorker.js b/wwwroot/core/namecards/nameCardWorker.js index a9e77e3..9c711c0 100644 --- a/wwwroot/core/namecards/nameCardWorker.js +++ b/wwwroot/core/namecards/nameCardWorker.js @@ -8,11 +8,11 @@ parentPort.on("message", async (data) => { const creator = new NameCardCreator(templatePath); const buffer = await creator.getWelcomeCard(avatarURL, username); - console.log(buffer); - parentPort.postMessage({ result: buffer }); } catch (err) { parentPort.postMessage({ error: err.message }); + } finally { + parentPort.close(); } }); \ No newline at end of file