Files
gestion/commands/utils/encode.js
T
2024-04-28 00:19:55 +02:00

107 lines
3.2 KiB
JavaScript

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: "<base64|binaire> <encode|decode> <texte>",
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 \`<base64|binaire>\` \`<encode|decode>\` \`<texte>\``)
.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;
}