mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-03 23:36:35 +02:00
rolereact system
This commit is contained in:
@@ -37,7 +37,7 @@ module.exports = {
|
|||||||
|
|
||||||
const filter = i => i.user.id === message.author.id;
|
const filter = i => i.user.id === message.author.id;
|
||||||
const filter2 = m => m.author.id === message.author.id;
|
const filter2 = m => m.author.id === message.author.id;
|
||||||
const collector = channel.createMessageComponentCollector({ filter: filter, time: 60000 * 2 });
|
const collector = message.channel.createMessageComponentCollector({ filter: filter, time: 60000 * 4 });
|
||||||
|
|
||||||
collector.on('collect', async i => {
|
collector.on('collect', async i => {
|
||||||
if (i.customId === 'add_role') {
|
if (i.customId === 'add_role') {
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
const sqlite3 = require('sqlite3').verbose();
|
||||||
|
const db = new sqlite3.Database('myDatabase.db');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'rolereact',
|
||||||
|
description: 'Associate an emoji with a role and add the reaction to a message',
|
||||||
|
emote: '🎭',
|
||||||
|
utilisation: '+rolereact @role/id <emojie> <messageid>',
|
||||||
|
category: 'gestion',
|
||||||
|
async execute(message, args, client) {
|
||||||
|
if (args.length < 3) {
|
||||||
|
return message.reply('Veuillez fournir un rôle, un message ID et un emoji.');
|
||||||
|
}
|
||||||
|
|
||||||
|
const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[0]);
|
||||||
|
if (!role) {
|
||||||
|
return message.reply('Rôle invalide. Veuillez entrer un ID de rôle valide ou mentionner un rôle existant.');
|
||||||
|
}
|
||||||
|
|
||||||
|
const emoji = args[1];
|
||||||
|
const messageId = args[2];
|
||||||
|
if (!/^\d+$/.test(messageId)) {
|
||||||
|
return message.reply('Veuillez fournir un ID de message valide.');
|
||||||
|
}
|
||||||
|
|
||||||
|
let data = await new Promise((resolve, reject) => {
|
||||||
|
db.get('SELECT value FROM gestion WHERE id = ?', [client.user.id], (err, row) => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err.message);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
resolve(row ? JSON.parse(row.value) : {});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!data[message.guild.id]) {
|
||||||
|
data[message.guild.id] = {};
|
||||||
|
}
|
||||||
|
if (!data[message.guild.id].rolereact) {
|
||||||
|
data[message.guild.id].rolereact = {};
|
||||||
|
}
|
||||||
|
if (!data[message.guild.id].rolereact[messageId]) {
|
||||||
|
data[message.guild.id].rolereact[messageId] = [];
|
||||||
|
}
|
||||||
|
data[message.guild.id].rolereact[messageId].push({ emoji, roleId: role.id });
|
||||||
|
|
||||||
|
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [client.user.id, JSON.stringify(data)], async (err) => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err.message);
|
||||||
|
return message.reply('Une erreur s\'est produite lors de la mise à jour de la base de données.');
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const messageToReact = await message.channel.messages.fetch(messageId);
|
||||||
|
message.reply(`L'emoji ${emoji} a été associé au rôle ${role.name} pour le message ${messageToReact.url}.`);
|
||||||
|
await messageToReact.react(emoji);
|
||||||
|
} catch (error) {
|
||||||
|
message.reply('Une erreur est survenue lors de l\'ajout de la réaction au message.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
};
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
module.exports = {
|
||||||
|
name: 'encode',
|
||||||
|
description: 'Encoder ou décoder un language chiffré',
|
||||||
|
utilisation: '<base64|binaire> <encode|decode> <texte>',
|
||||||
|
emote: "🔐",
|
||||||
|
category: "utils",
|
||||||
|
async execute(message, args) {
|
||||||
|
if (args.length < 3) {
|
||||||
|
return message.reply('Usage: `encode <base64|binaire> <encode|decode> <texte>`');
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
const sqlite3 = require('sqlite3').verbose();
|
||||||
|
const db = new sqlite3.Database('myDatabase.db');
|
||||||
|
const { Events } = require("discord.js");
|
||||||
|
module.exports = {
|
||||||
|
name: Events.MessageReactionAdd,
|
||||||
|
async execute(reaction, user, client) {
|
||||||
|
if (user.bot) return;
|
||||||
|
const messageId = reaction.message.id;
|
||||||
|
const emoji = reaction.emoji.toString();
|
||||||
|
let data = await new Promise((resolve, reject) => {
|
||||||
|
db.get('SELECT value FROM gestion WHERE id = ?', [client.user.id], (err, row) => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err.message);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
resolve(row ? JSON.parse(row.value) : {});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const roleDataArray = data[reaction.message.guild.id]?.rolereact?.[messageId];
|
||||||
|
if (!Array.isArray(roleDataArray)) {
|
||||||
|
console.error('Expected an array of role data objects, but received something else.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const roleData = roleDataArray.find(r => r.emoji === emoji);
|
||||||
|
if (!roleData) return;
|
||||||
|
|
||||||
|
const role = reaction.message.guild.roles.cache.get(roleData.roleId);
|
||||||
|
if (!role) return;
|
||||||
|
|
||||||
|
const member = reaction.message.guild.members.cache.get(user.id);
|
||||||
|
if (!member) return;
|
||||||
|
await member.roles.add(role);
|
||||||
|
|
||||||
|
},
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user