const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js'); const sqlite3 = require('sqlite3').verbose(); const db = new sqlite3.Database('myDatabase.db'); module.exports = { name: "encode", aliases: ["encoder", "decode", "decoder"], description: "Encoder ou décoder un language chiffré", utilisation: " ", emote: "🔐", category: "utils", async execute(message, args, client) { if (args.length < 3) { const botId = client.user.id; const defaultPrefix = "+"; let data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => { if (err) { console.error(err.message); reject(err); } resolve(row ? JSON.parse(row.value) : {}); }); }); const prefix = data.prefix || defaultPrefix; const embed = new EmbedBuilder() .setColor("#FF0000") .setTitle("❌ Erreur") .setDescription(`Usage: ${prefix}encode \`\` \`\` \`\``) .setTimestamp(); const button = new ButtonBuilder() .setEmoji('✖️') .setCustomId('delete') .setStyle(ButtonStyle.Secondary); const row = new ActionRowBuilder() .addComponents(button); const errorMessage = await message.reply({ embeds: [embed], components: [row]}); const filter = i => i.customId === 'delete' && i.user.id === message.author.id; const collector = errorMessage.createMessageComponentCollector({ filter, time: 300000 }); collector.on('collect', async () => { return errorMessage.delete(); }); } else { const subcommand = args[0]; const action = args[1]; const text = args.slice(2).join(" "); if (subcommand !== "base64" && subcommand !== "binaire") { return message.reply("Invalid subcommand. Use `base64` or `binaire`."); } if (action !== "encode" && action !== "decode") { return message.reply("Invalid action. Use `encode` or `decode`."); } if (subcommand === "base64") { let result; if (action === "encode") { result = btoa(text); } else { result = atob(text); } return message.channel.send(`**Resultat:** \`${result}\``); } if (subcommand === "binaire") { let result; if (action === "encode") { result = texteVersBinaire(text); } else { result = binaireVersTexte(text); } return message.channel.send(`**Resultat:** \`${result}\``); } } }, }; function texteVersBinaire(texte) { let binaire = ""; for (let i = 0; i < texte.length; i++) { let charCode = texte.charCodeAt(i).toString(2); charCode = "0".repeat(8 - charCode.length) + charCode; binaire += charCode + " "; } return binaire.trim(); } function binaireVersTexte(binaire) { let texte = ""; const octets = binaire.split(" "); for (let i = 0; i < octets.length; i++) { const decimal = parseInt(octets[i], 2); const caractere = String.fromCharCode(decimal); texte += caractere; } return texte; }