mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-03 23:36:35 +02:00
change quick.db to sqlite3
This commit is contained in:
@@ -1,6 +0,0 @@
|
||||
.env
|
||||
/node_modules
|
||||
.vscode
|
||||
json.sqlite
|
||||
mybot.js
|
||||
changelog.js
|
||||
@@ -1,201 +0,0 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 61 KiB |
@@ -1,59 +0,0 @@
|
||||
# Nom du Bot Discord
|
||||
|
||||

|
||||
|
||||
## Description
|
||||
|
||||
Le Bot Discord Gestion est un bot multifonction développé en JavaScript utilisant la bibliothèque Discord.js. Il est conçu pour offrir diverses fonctionnalités utiles pour les serveurs Discord.
|
||||
|
||||
## Fonctionnalités
|
||||
|
||||
- **Commandes de base :** Commandes telles que !help, !ping, etc.
|
||||
- **Modération :** Commandes de modération pour gérer les utilisateurs et les messages.
|
||||
- **Fun :** Commandes amusantes pour divertir les membres du serveur.
|
||||
- **Musique :** Lecture de musique depuis YouTube et autres plateformes.
|
||||
|
||||
## Installation
|
||||
|
||||
1. Cloner le référentiel :
|
||||
|
||||
```bash
|
||||
git clone https://github.com/votre_utilisateur/nom-du-bot.git
|
||||
```
|
||||
|
||||
2. Installer les dépendances :
|
||||
|
||||
```
|
||||
cd nom-du-bot
|
||||
npm install
|
||||
```
|
||||
|
||||
3. Ajouter le fichier .env avec votre token bot.
|
||||
|
||||
```
|
||||
TOKEN=votre_token_ici
|
||||
```
|
||||
|
||||
4. Lancer le bot :
|
||||
|
||||
```js
|
||||
node main.js
|
||||
```
|
||||
|
||||
## Contribuer
|
||||
|
||||
Si vous souhaitez contribuer à ce projet, suivez ces étapes :
|
||||
|
||||
1. Fork du projet
|
||||
2. Créer une branche pour votre fonctionnalité (git checkout -b fonctionnalite/ma-fonctionnalite)
|
||||
3. Commit de vos modifications (git commit -am 'Ajout de la fonctionnalité ma-fonctionnalite')
|
||||
4. Push vers la branche (git push origin fonctionnalite/ma-fonctionnalite)
|
||||
5. Ouvrir une Pull Request
|
||||
|
||||
## Auteurs
|
||||
tutur33 - Développeur principal
|
||||
valou336 - Développeur principal
|
||||
|
||||
## Licence
|
||||
|
||||
Ce projet est sous licence Apache 2.0. Consultez le fichier LICENSE pour plus de détails.
|
||||
@@ -0,0 +1,11 @@
|
||||
const { Events, InteractionType } = require("discord.js");
|
||||
|
||||
module.exports = {
|
||||
name: Events.InteractionCreate,
|
||||
async execute(client, interaction) {
|
||||
if (interaction.type === InteractionType.ApplicationCommand) {
|
||||
const command = client.commands.get(interaction.commandName);
|
||||
await command.execute(interaction, client);
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,49 @@
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { Events } = require('discord.js');
|
||||
const permissions = require('../../permissions.json');
|
||||
|
||||
module.exports = {
|
||||
name: Events.ClientReady,
|
||||
async execute(client) {
|
||||
const db = new sqlite3.Database('myDatabase.db', (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
console.log('Connected to the SQLite database.');
|
||||
});
|
||||
|
||||
let permissionsData = 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 (!permissionsData.permissions) {
|
||||
permissionsData.permissions = {};
|
||||
}
|
||||
|
||||
permissionsData.permissions = permissions;
|
||||
const permissionsJson = JSON.stringify(permissionsData);
|
||||
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [client.user.id, permissionsJson], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
} else {
|
||||
console.log(`Les permissions ont été chargées pour le bot ${client.user.tag}`);
|
||||
}
|
||||
});
|
||||
|
||||
console.log(`Le bot ${client.user.tag} est en ligne`);
|
||||
process.on('uncaughtException', (error) => {
|
||||
console.error('Uncaught Exception:', error);
|
||||
});
|
||||
|
||||
process.on('unhandledRejection', (reason, promise) => {
|
||||
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,68 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
// Setup SQLite3 database connection
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
module.exports = {
|
||||
name: 'greet',
|
||||
description: 'Ajoute ou supprime un salon des greet',
|
||||
emote: '👋',
|
||||
utilisation: 'greet <salon>',
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args) {
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
|
||||
const channelId = args[0] ? args[0].replace(/<#|>/g, '') : message.channel.id;
|
||||
|
||||
// Query the greetings data from the SQLite3 database
|
||||
let greet = await new EmbedBuilder((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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
// Access the specific guild's greetings
|
||||
let guildGreetings = greet[guildId] || [];
|
||||
|
||||
const index = guildGreetings.findIndex(greeting => greeting.channelId === channelId);
|
||||
|
||||
if (index !== -1) {
|
||||
guildGreetings.splice(index, 1);
|
||||
greet[guildId] = guildGreetings;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(greet)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
const embed = new EmbedBuilder()
|
||||
.setDescription(`Le salon <#${channelId}> a été retiré de la liste des salutations.`)
|
||||
.setColor('#0099ff');
|
||||
message.channel.send({ embeds: [embed] });
|
||||
} else if (guildGreetings.length < 5) {
|
||||
guildGreetings.push({ channelId });
|
||||
|
||||
greet[guildId] = guildGreetings;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(greet)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
const embed = new EmbedBuilder()
|
||||
.setDescription(`Le salon <#${channelId}> a été ajouté à la liste des salutations.`)
|
||||
.setColor('#0099ff');
|
||||
message.channel.send({ embeds: [embed] });
|
||||
} else {
|
||||
const embed = new EmbedBuilder()
|
||||
.setDescription('Il y a déjà 5 salons dans la liste des salutations. Vous ne pouvez pas en ajouter d\'autres.')
|
||||
.setColor('#ff0000');
|
||||
message.channel.send({ embeds: [embed] });
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
const {Events} = require("discord.js")
|
||||
const db = require('quick.db');
|
||||
const PrevnameDb = new db.table("prevname");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db2 = new sqlite3.Database('myDatabase.db');
|
||||
module.exports = {
|
||||
name: Events.InteractionCreate,
|
||||
async execute(interaction, client) {
|
||||
const botId = client.user.id;
|
||||
let owners = await new Promise((resolve, reject) => {
|
||||
db2.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
}
|
||||
resolve(row ? JSON.parse(row.value).owners || {} : {});
|
||||
});
|
||||
});
|
||||
if (!interaction.isButton()) return;
|
||||
if (interaction.customId.startsWith('deletesuggestion_')) {
|
||||
const userId= interaction.customId.split('_')[1];
|
||||
if (interaction.user.id !== userId && !Object.keys(owners).includes(interaction.user.id)) {
|
||||
await interaction.reply({ content: "vous n'avez pas la permission de supprimer cette suggestion.", ephemeral: true });
|
||||
return;
|
||||
}
|
||||
await interaction.message.delete();
|
||||
} else if (interaction.customId.startsWith('deleteprevnames_')) {
|
||||
const userId = interaction.customId.split('_')[1];
|
||||
if (interaction.user.id !== userId) {
|
||||
await interaction.reply({ content: "vous n'avez pas la permission de suprimer cette suggestion.", ephemeral: true });
|
||||
return;
|
||||
}
|
||||
await PrevnameDb.delete(userId)
|
||||
await interaction.reply({ content: "Vos prevname on etait correctement supprimer.", ephemeral: true });
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,47 @@
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { Events } = require("discord.js");
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
module.exports = {
|
||||
name: Events.GuildMemberAdd,
|
||||
async execute(member) {
|
||||
const botId = member.client.user.id;
|
||||
const guildId = member.guild.id;
|
||||
|
||||
let greet = 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 guildGreetings = greet[guildId] || [];
|
||||
|
||||
if (guildGreetings.length > 0) {
|
||||
const welcomeMessage = `Bienvenue <@${member.id}> sur le serveur ${member.guild.name} !`;
|
||||
const messagePromises = [];
|
||||
for (const greeting of guildGreetings) {
|
||||
try {
|
||||
const channel = await member.guild.channels.fetch(greeting.channelId);
|
||||
if (channel && channel.type === 0) {
|
||||
messagePromises.push(
|
||||
channel.send(welcomeMessage)
|
||||
.then(message => {
|
||||
setTimeout(() => message.delete(), 1000);
|
||||
})
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
try {
|
||||
await Promise.all(messagePromises);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,60 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db2 = new sqlite3.Database('myDatabase.db');
|
||||
const {Events} = require("discord.js")
|
||||
module.exports = {
|
||||
name: Events.GuildMemberAdd,
|
||||
async execute(oldMember, newMember) {
|
||||
const botId = newMember.client.user.id;
|
||||
const guildId = newMember.guild.id;
|
||||
|
||||
let data = await new Promise((resolve, reject) => {
|
||||
db2.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
}
|
||||
resolve(row ? JSON.parse(row.value) : {});
|
||||
});
|
||||
});
|
||||
|
||||
// Access the specific guild's blrank data
|
||||
let blrank = data.blrank || {};
|
||||
|
||||
if (blrank[guildId] && blrank[guildId][newMember.id]) {
|
||||
const addedRoles = newMember.roles.cache.filter(role => !oldMember.roles.cache.has(role.id));
|
||||
addedRoles.forEach(async role => {
|
||||
try {
|
||||
await newMember.roles.remove(role);
|
||||
} catch (error) {
|
||||
console.error(`Erreur lors de la suppression du rôle <@&${role.id}> pour le membre ${newMember.user.tag}:`, error);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
const limitedRoles = GestionDb.get(`${botId}.${guildId}.rolelimits`) || [];
|
||||
const addedRoles = newMember.roles.cache.filter(role => !oldMember.roles.cache.has(role.id));
|
||||
|
||||
addedRoles.forEach(async role => {
|
||||
const limitedRole = limitedRoles.find(r => r.id === role.id);
|
||||
if (limitedRole) {
|
||||
const memberCount = newMember.guild.members.cache.filter(m => m.roles.cache.has(role.id)).size;
|
||||
if (limitedRole.limit === 0) {
|
||||
try {
|
||||
await newMember.roles.remove(role);
|
||||
} catch (error) {
|
||||
console.error(`Erreur lors de la suppression du rôle <@&${role.id}> pour le membre ${newMember.user.tag}:`, error);
|
||||
}
|
||||
}
|
||||
if (memberCount > limitedRole.limit) {
|
||||
try {
|
||||
await newMember.roles.remove(role);
|
||||
} catch (error) {
|
||||
console.error(`Erreur lors de la suppression du rôle <@&${role.id}> pour le membre ${newMember.user.tag}:`, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,46 @@
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { Events } = require("discord.js");
|
||||
|
||||
// Setup SQLite3 database connection
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
module.exports = {
|
||||
name: Events.VoiceStateUpdate,
|
||||
async execute(oldState, newState) {
|
||||
if (!oldState.channelId && newState.channelId) {
|
||||
const guildId = newState.guild.id;
|
||||
const botId = newState.client.user.id;
|
||||
const channelId = newState.channelId;
|
||||
|
||||
// Query the bot's data from the SQLite3 database
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
// Access the specific guild's rolevocal data
|
||||
let rolevocal = data.rolevocal || {};
|
||||
let guildRoles = rolevocal[guildId] || {};
|
||||
let channelRoles = guildRoles[channelId] || [];
|
||||
|
||||
if (channelRoles.length > 0) {
|
||||
const member = newState.member;
|
||||
for (const roleId of channelRoles) {
|
||||
const role = newState.guild.roles.cache.get(roleId);
|
||||
if (role) {
|
||||
try {
|
||||
await member.roles.add(role);
|
||||
} catch (error) {
|
||||
console.error(`Erreur lors de l'ajout du rôle ${roleId} à l'utilisateur ${member.id}:`, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,45 @@
|
||||
const { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { Events } = require("discord.js");
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
module.exports = {
|
||||
name: Events.MessageCreate,
|
||||
async execute(message) {
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
|
||||
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 suggestChannelId = data.suggestChannel && data.suggestChannel[guildId];
|
||||
|
||||
if (message.channel.id === suggestChannelId && !message.author.bot) {
|
||||
await message.delete();
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({ name: message.author.tag, iconURL: message.author.displayAvatarURL() })
|
||||
.setDescription(message.content || 'Aucun contenu fourni')
|
||||
.setFooter({ text: `${message.guild.name} | ${message.client.user.username}`, })
|
||||
.setColor('#409CED');
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(
|
||||
new ButtonBuilder()
|
||||
.setCustomId(`deletesuggestion_${message.author.id}`)
|
||||
.setLabel('Supprimer')
|
||||
.setStyle(ButtonStyle.Danger)
|
||||
);
|
||||
|
||||
const suggestionMessage = await message.channel.send({ embeds: [embed], components: [row] });
|
||||
suggestionMessage.react('👎')
|
||||
suggestionMessage.react('👍')
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,15 @@
|
||||
const {Events} = require("discord.js")
|
||||
|
||||
module.exports = {
|
||||
name: Events.MessageDelete,
|
||||
once: false,
|
||||
async execute(message, client) {
|
||||
if (message.author.bot) return;
|
||||
|
||||
client.snipes.set(message.channel.id, {
|
||||
content: message.content,
|
||||
author: message.author.id,
|
||||
timestamp: Date.now(),
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,20 @@
|
||||
const { Events } = require("discord.js");
|
||||
const db = require('quick.db');
|
||||
const PrevnameDb = new db.table("prevname");
|
||||
module.exports = {
|
||||
name: Events.GuildMemberUpdate,
|
||||
async execute(oldMember, newMember) {
|
||||
if (oldMember.displayName !== newMember.displayName) {
|
||||
let changeData = {
|
||||
oldName: oldMember.displayName,
|
||||
newName: newMember.displayName,
|
||||
changeDate: Math.floor(Date.now() / 1000)
|
||||
};
|
||||
let nameChanges = PrevnameDb.get(`${newMember.id}.nameChanges`) || [];
|
||||
|
||||
nameChanges.push(changeData);
|
||||
|
||||
PrevnameDb.set(`${newMember.id}.nameChanges`, nameChanges);
|
||||
}
|
||||
},
|
||||
};
|
||||
+23
-19
@@ -1,32 +1,36 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion')
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
async function getPermissionLevel(member, client) {
|
||||
const botId = client.user.id;
|
||||
const guildId = member.guild.id;
|
||||
const buyerId = ['1003985920162287696', '671763971803447298'];
|
||||
let owners = await GestionDb.get(`${botId}.owners`) || {};
|
||||
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
let owners = data.owners || {};
|
||||
if (buyerId.includes(member.id)) {
|
||||
return 11;
|
||||
return 11;
|
||||
}
|
||||
if (owners[member.id]) {
|
||||
return 10;
|
||||
return 10;
|
||||
}
|
||||
let highestPermission = 0;
|
||||
try {
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
const roleIds = await GestionDb.get(`${botId}.${member.guild.id}.p${i}`);
|
||||
if (roleIds) {
|
||||
if (!Array.isArray(roleIds)) {
|
||||
roleIds = [roleIds];
|
||||
}
|
||||
if (roleIds.some(id => member.roles.cache.has(id))) {
|
||||
highestPermission = Math.max(highestPermission, i);
|
||||
}
|
||||
let highestPermission = 0;
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
const roleIds = data.permissions && data.permissions[guildId] && data.permissions[guildId].p && data.permissions[guildId].p[i];
|
||||
if (roleIds) {
|
||||
if (roleIds.some(id => member.roles.cache.has(id))) {
|
||||
highestPermission = Math.max(highestPermission, i);
|
||||
}
|
||||
}
|
||||
return highestPermission;
|
||||
} catch {
|
||||
return highestPermission;
|
||||
}
|
||||
return highestPermission;
|
||||
}
|
||||
module.exports = { getPermissionLevel };
|
||||
@@ -31,6 +31,7 @@ module.exports = {
|
||||
'Mes sources disent non.',
|
||||
'Les perspectives ne sont pas bonnes.',
|
||||
'Très douteux.',
|
||||
"Il est difficile de dire avec certitude à ce stade.",
|
||||
];
|
||||
|
||||
const response = responses[Math.floor(Math.random() * responses.length)];
|
||||
|
||||
+44
-13
@@ -1,6 +1,5 @@
|
||||
const { EmbedBuilder} = require('discord.js');
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'blrank',
|
||||
@@ -10,29 +9,61 @@ module.exports = {
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
|
||||
|
||||
if (args.length > 0) {
|
||||
const userId = args[0].replace(/<@!?(\d+)>/, '$1');
|
||||
let blrank = await GestionDb.get(`${botId}.${guildId}.blrank`) || {};
|
||||
|
||||
if (blrank[userId]) {
|
||||
delete blrank[userId];
|
||||
await GestionDb.set(`${botId}.${guildId}.blrank`, blrank);
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.blrank) {
|
||||
data.blrank = {};
|
||||
}
|
||||
|
||||
if (data.blrank[userId]) {
|
||||
delete data.blrank[userId];
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.reply('Utilisateur retiré de la blrank.');
|
||||
} else {
|
||||
blrank[userId] = true;
|
||||
await GestionDb.set(`${botId}.${guildId}.blrank`, blrank);
|
||||
data.blrank[userId] = true;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.reply('Utilisateur ajouté à la blrank.');
|
||||
}
|
||||
} else {
|
||||
let blrank = await GestionDb.get(`${botId}.${guildId}.blrank`) || {};
|
||||
const embed = new EmbedBuilder()
|
||||
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 blrank = data.blrank || {};
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Blrank')
|
||||
.setDescription(Object.keys(blrank).map(id => `<@${id}>`).join('\n') || 'Aucun utilisateur sur la liste blanche')
|
||||
.setFooter({ text: message.client.user.username, iconURL: client.user.displayAvatarURL({dynamic: true})});
|
||||
|
||||
|
||||
message.channel.send({ embeds: [embed] });
|
||||
}
|
||||
},
|
||||
|
||||
+33
-17
@@ -1,7 +1,7 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'change',
|
||||
aliases: ['permchange'],
|
||||
@@ -9,11 +9,12 @@ module.exports = {
|
||||
emote: '🔄',
|
||||
utilisation: 'change <commande> <perm>',
|
||||
category: 'botcontrol',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const botId = client.user.id;
|
||||
const unchangeableCommands = ['owner', 'unowner','buyer'];
|
||||
const unchangeableCommands = ['owner', 'unowner', 'buyer'];
|
||||
|
||||
if (args.length < 2) {
|
||||
if (args.length < 2) {
|
||||
return message.reply('Veuillez spécifier une commande et un niveau de permission.');
|
||||
}
|
||||
|
||||
@@ -21,16 +22,13 @@ module.exports = {
|
||||
let permissionLevel;
|
||||
|
||||
if (args[1] === 'owner') {
|
||||
permissionLevel = 10;
|
||||
}
|
||||
|
||||
else if (args[1] === 'buyer') {
|
||||
permissionLevel = 11;
|
||||
}
|
||||
else {
|
||||
permissionLevel = 10;
|
||||
} else if (args[1] === 'buyer') {
|
||||
permissionLevel = 11;
|
||||
} else {
|
||||
permissionLevel = parseInt(args[1]);
|
||||
if (isNaN(permissionLevel) || permissionLevel < 0 || permissionLevel > 9) {
|
||||
return message.reply('Veuillez spécifier un niveau de permission valide (entre 0 et 9).');
|
||||
if (isNaN(permissionLevel) || permissionLevel < 0 || permissionLevel > 9) {
|
||||
return message.reply('Veuillez spécifier un niveau de permission valide (entre 0 et 9).');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,10 +40,28 @@ module.exports = {
|
||||
return message.reply('Cette commande n\'existe pas.');
|
||||
}
|
||||
|
||||
let permissions = await GestionDb.get(`${botId}.permissions`);
|
||||
permissions[commandName] = permissionLevel;
|
||||
await GestionDb.set(`${botId}.permissions`, permissions);
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
let permissions = 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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
message.reply(`Le niveau de permission de la commande ${commandName} a été changé à ${args[0].toLowerCase()}.`);
|
||||
if (!permissions.permissions) {
|
||||
permissions.permissions = {};
|
||||
}
|
||||
|
||||
permissions.permissions[commandName] = permissionLevel;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(permissions)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
|
||||
message.reply(`Le niveau de permission de la commande ${commandName} a été changé à ${permissionLevel}.`);
|
||||
},
|
||||
};
|
||||
+49
-20
@@ -1,46 +1,75 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'delperm',
|
||||
description: 'Supprime un rôle d\'un niveau de permission ou d\'une commande',
|
||||
emote: '❌',
|
||||
emote: '❌',
|
||||
utilisation: 'delperm <perm/commande> @role',
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const permissionOrCommand = args[0].toLowerCase();
|
||||
const role = message.mentions.roles.first();
|
||||
|
||||
if (!role) {
|
||||
return message.reply('Veuillez mentionner un rôle valide.');
|
||||
}
|
||||
if (['1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(permissionOrCommand)) {
|
||||
let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.p${permissionOrCommand}`);
|
||||
if (roleIds) {
|
||||
if (!Array.isArray(roleIds)) {
|
||||
roleIds = [roleIds];
|
||||
|
||||
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);
|
||||
}
|
||||
const index = roleIds.indexOf(role.id);
|
||||
resolve(row ? JSON.parse(row.value) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.permissions) {
|
||||
data.permissions = {};
|
||||
}
|
||||
|
||||
if (['1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(permissionOrCommand)) {
|
||||
if (!data.permissions[guildId]) {
|
||||
data.permissions[guildId] = {};
|
||||
}
|
||||
if (!data.permissions[guildId].p) {
|
||||
data.permissions[guildId].p = {};
|
||||
}
|
||||
if (data.permissions[guildId].p[permissionOrCommand]) {
|
||||
const index = data.permissions[guildId].p[permissionOrCommand].indexOf(role.id);
|
||||
if (index !== -1) {
|
||||
roleIds.splice(index, 1);
|
||||
await GestionDb.set(`${botId}.${message.guild.id}.p${permissionOrCommand}`, roleIds);
|
||||
data.permissions[guildId].p[permissionOrCommand].splice(index, 1);
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
message.reply(`Le rôle pour ${permissionOrCommand} a été supprimé.`);
|
||||
} else {
|
||||
let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.c${permissionOrCommand}`);
|
||||
if (roleIds) {
|
||||
if (!Array.isArray(roleIds)) {
|
||||
roleIds = [roleIds];
|
||||
}
|
||||
const index = roleIds.indexOf(role.id);
|
||||
if (!data.permissions[guildId]) {
|
||||
data.permissions[guildId] = {};
|
||||
}
|
||||
if (!data.permissions[guildId].c) {
|
||||
data.permissions[guildId].c = {};
|
||||
}
|
||||
if (data.permissions[guildId].c[permissionOrCommand]) {
|
||||
const index = data.permissions[guildId].c[permissionOrCommand].indexOf(role.id);
|
||||
if (index !== -1) {
|
||||
roleIds.splice(index, 1);
|
||||
await GestionDb.set(`${botId}.${message.guild.id}.c${permissionOrCommand}`, roleIds);
|
||||
data.permissions[guildId].c[permissionOrCommand].splice(index, 1);
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
message.reply(`L commande ${permissionOrCommand} a été supprimé du role.`);
|
||||
message.reply(`La commande ${permissionOrCommand} a été supprimée du rôle.`);
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -1,6 +1,6 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
module.exports = {
|
||||
name: 'greet',
|
||||
@@ -12,29 +12,46 @@ module.exports = {
|
||||
async execute(message, args) {
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const guildGreetings = GestionDb.get(`${botId}.${guildId}.greetings`) || [];
|
||||
|
||||
const channelId = args[0] ? args[0].replace(/<#|>/g, '') : message.channel.id;
|
||||
|
||||
let guildGreetings = await new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM gestion WHERE id = ?', [`${botId}.${guildId}.greetings`], (err, row) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
}
|
||||
resolve(row ? JSON.parse(row.value) : []);
|
||||
});
|
||||
});
|
||||
|
||||
const index = guildGreetings.findIndex(greeting => greeting.channelId === channelId);
|
||||
|
||||
if (index !== -1) {
|
||||
guildGreetings.splice(index, 1);
|
||||
GestionDb.set(`${botId}.${guildId}.greetings`, guildGreetings);
|
||||
guildGreetings.splice(index, 1);
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [`${botId}.${guildId}.greetings`, JSON.stringify(guildGreetings)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
const embed = new EmbedBuilder()
|
||||
.setDescription(`Le salon <#${channelId}> a été retiré de la liste des salutations.`)
|
||||
.setColor('#0099ff');
|
||||
message.channel.send({ embeds: [embed] });
|
||||
} else if (guildGreetings.length < 5) {
|
||||
} else if (guildGreetings.length < 5) {
|
||||
guildGreetings.push({ channelId });
|
||||
GestionDb.set(`${botId}.${guildId}.greetings`, guildGreetings);
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [`${botId}.${guildId}.greetings`, JSON.stringify(guildGreetings)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
const embed = new EmbedBuilder()
|
||||
.setDescription(`Le salon <#${channelId}> a été ajouté à la liste des salutations.`)
|
||||
.setColor('#0099ff');
|
||||
message.channel.send({ embeds: [embed] });
|
||||
} else {
|
||||
const embed = new EmbedBuilder()
|
||||
.setDescription('Il y a déjà 5 salons dans la liste des salutations. Vous ne pouvez pas en ajouter d\'autres.')
|
||||
.setDescription('Il y a déjà 5 salons dans la liste des salutations. Vous ne pouvez pas en ajouter d\'autres.')
|
||||
.setColor('#ff0000');
|
||||
message.channel.send({ embeds: [embed] });
|
||||
}
|
||||
|
||||
+28
-15
@@ -1,6 +1,5 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
name: 'perm',
|
||||
@@ -11,13 +10,29 @@ module.exports = {
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, client) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Rôles de permission et de commande')
|
||||
.setColor('#0099ff');
|
||||
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.p${i}`);
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.permissions) {
|
||||
data.permissions = {};
|
||||
}
|
||||
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
let roleIds = data.permissions[guildId] && data.permissions[guildId].p && data.permissions[guildId].p[i];
|
||||
let roles = 'Aucun rôle défini';
|
||||
if (roleIds) {
|
||||
if (!Array.isArray(roleIds)) {
|
||||
@@ -27,14 +42,14 @@ module.exports = {
|
||||
}
|
||||
embed.addFields({ name: `Perm ${i}`, value: roles});
|
||||
}
|
||||
const commandNames = await GestionDb.get(`${botId}.${message.guild.id}.commandNames`);
|
||||
if (commandNames && commandNames.length > 0) {
|
||||
// Créez un objet pour regrouper les commandes par rôle
|
||||
|
||||
const commandNames = data.permissions[guildId] && data.permissions[guildId].commandNames;
|
||||
if (commandNames && commandNames.length > 0) {
|
||||
const commandsByRole = {};
|
||||
|
||||
|
||||
for (const commandName of commandNames) {
|
||||
const roleIds = await GestionDb.get(`${botId}.${message.guild.id}.c${commandName}`);
|
||||
if (roleIds && roleIds.length > 0) {
|
||||
const roleIds = data.permissions[guildId] && data.permissions[guildId].c && data.permissions[guildId].c[commandName];
|
||||
if (roleIds && roleIds.length > 0) {
|
||||
for (const roleId of roleIds) {
|
||||
if (!commandsByRole[roleId]) {
|
||||
commandsByRole[roleId] = [];
|
||||
@@ -43,15 +58,13 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Ajoutez chaque groupe de commandes à l'embed
|
||||
|
||||
for (const roleId in commandsByRole) {
|
||||
const role = message.guild.roles.cache.get(roleId);
|
||||
const commands = commandsByRole[roleId].join('\n');
|
||||
embed.addFields({ name: `${role.name}`,value: commands , inline: true });
|
||||
embed.addField(`${role.name}`, commands, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
message.channel.send({ embeds: [embed] });
|
||||
},
|
||||
|
||||
+35
-10
@@ -1,29 +1,54 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'prefix',
|
||||
aliases: ['setprefix'],
|
||||
description: 'Change le préfixe du bot ',
|
||||
emote: '🔧',
|
||||
description: 'Change le préfixe du bot',
|
||||
emote: '🔧',
|
||||
utilisation: 'prefix <newprefix/main>',
|
||||
category: 'botcontrol',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
|
||||
if (args.length < 1) {
|
||||
if (args.length < 1) {
|
||||
return message.reply('Veuillez spécifier un nouveau préfixe.');
|
||||
}
|
||||
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.prefixes) {
|
||||
data.prefixes = {};
|
||||
}
|
||||
|
||||
if (args[0] === "main") {
|
||||
const newPrefix = args[1];
|
||||
await GestionDb.set(`${botId}.prefix`, newPrefix);
|
||||
data.prefixes.main = newPrefix;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.reply(`Le main préfixe a été changé à ${newPrefix}.`);
|
||||
}else {
|
||||
const newPrefix = args[0];
|
||||
await GestionDb.set(`${botId}.${guildId}.prefix`, newPrefix);
|
||||
message.reply(`Le préfixe a été changé à ${newPrefix}.`);
|
||||
} else {
|
||||
const newPrefix = args[0];
|
||||
data.prefixes[guildId] = newPrefix;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.reply(`Le préfixe a été changé à ${newPrefix}.`);
|
||||
}
|
||||
},
|
||||
};
|
||||
+44
-16
@@ -1,6 +1,5 @@
|
||||
const { ChannelType , EmbedBuilder } = require('discord.js');
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion');
|
||||
const { ChannelType, EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'rvocal',
|
||||
@@ -10,31 +9,37 @@ module.exports = {
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
let mentionedChannel = message.mentions.channels.first();
|
||||
if (!mentionedChannel) {
|
||||
const channelId = args[0];
|
||||
mentionedChannel = message.guild.channels.cache.get(channelId);
|
||||
if (!mentionedChannel || mentionedChannel.type !== ChannelType.GuildVoice) {
|
||||
return message.channel.send("Veuillez mentionner un salon vocal valide ou fournir un ID de salon vocal valide.");
|
||||
}
|
||||
}
|
||||
if (mentionedChannel === ChannelType.GuildText || mentionedChannel === ChannelType.DM) {
|
||||
return message.channel.send("Veuillez mentionner un salon vocal valide ou fournir un ID de salon vocal valide.");
|
||||
}
|
||||
if (args.length === 1 ) {
|
||||
const channelId = args[0];
|
||||
mentionedChannel = message.guild.channels.cache.get(channelId);
|
||||
if (!mentionedChannel || mentionedChannel.type !== ChannelType.GuildVoice) {
|
||||
return message.channel.send("Veuillez mentionner un salon vocal valide ou fournir un ID de salon vocal valide.");
|
||||
}
|
||||
}
|
||||
if (mentionedChannel.type !== ChannelType.GuildVoice) {
|
||||
return message.channel.send("Veuillez mentionner un salon vocal valide ou fournir un ID de salon vocal valide.");
|
||||
}
|
||||
|
||||
const roles = GestionDb.get(`${botId}.${guildId}.rolevocal.${mentionedChannel.id}`) || [];
|
||||
if (args.length === 1 ) {
|
||||
const roles = 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 channelRoles = roles.rolevocal && roles.rolevocal[guildId] && roles.rolevocal[guildId][mentionedChannel.id] || [];
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(`Rôles associés au salon vocal <#${mentionedChannel.id}>`)
|
||||
.setDescription(roles.length > 0 ? roles.map(roleId => `<@&${roleId}>`).join(', ') : 'Aucun rôle associé.')
|
||||
.setDescription(channelRoles.length > 0 ? channelRoles.map(roleId => `<@&${roleId}>`).join(', ') : 'Aucun rôle associé.')
|
||||
.setColor('#0099ff');
|
||||
|
||||
return message.channel.send({ embeds: [embed] });
|
||||
@@ -55,7 +60,30 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
|
||||
GestionDb.set(`${botId}.${guildId}.rolevocal.${mentionedChannel.id}`, roles);
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.rolevocal) {
|
||||
data.rolevocal = {};
|
||||
}
|
||||
if (!data.rolevocal[guildId]) {
|
||||
data.rolevocal[guildId] = {};
|
||||
}
|
||||
data.rolevocal[guildId][mentionedChannel.id] = roles;
|
||||
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
|
||||
message.channel.send(`Les rôles ont été enregistrés pour le salon vocal <#${mentionedChannel.id}>.`);
|
||||
}
|
||||
},
|
||||
|
||||
+50
-21
@@ -1,14 +1,16 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'setperm',
|
||||
description: 'Définit un rôle pour un niveau de permission ou une commande',
|
||||
emote: '🔑',
|
||||
emote: '🔑',
|
||||
utilisation: 'setperm <perm/commande> @role',
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const permissionOrCommand = args[0].toLowerCase();
|
||||
const role = message.mentions.roles.first();
|
||||
|
||||
@@ -16,43 +18,70 @@ module.exports = {
|
||||
return message.reply('Veuillez mentionner un rôle valide.');
|
||||
}
|
||||
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.permissions) {
|
||||
data.permissions = {};
|
||||
}
|
||||
|
||||
if (['1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(permissionOrCommand)) {
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
let oldRoleIds = await GestionDb.get(`${botId}.${message.guild.id}.p${i}`);
|
||||
if (!data.permissions[guildId]) {
|
||||
data.permissions[guildId] = {};
|
||||
}
|
||||
if (!data.permissions[guildId].p) {
|
||||
data.permissions[guildId].p = {};
|
||||
}
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
let oldRoleIds = data.permissions[guildId].p[i];
|
||||
if (oldRoleIds) {
|
||||
if (!Array.isArray(oldRoleIds)) {
|
||||
oldRoleIds = [oldRoleIds];
|
||||
}
|
||||
const index = oldRoleIds.indexOf(role.id);
|
||||
if (index !== -1) {
|
||||
oldRoleIds.splice(index, 1);
|
||||
await GestionDb.set(`${botId}.${message.guild.id}.p${i}`, oldRoleIds);
|
||||
oldRoleIds.splice(index, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.p${permissionOrCommand}`);
|
||||
let roleIds = data.permissions[guildId].p[permissionOrCommand];
|
||||
if (!roleIds) {
|
||||
roleIds = [];
|
||||
} else if (!Array.isArray(roleIds)) {
|
||||
roleIds = [roleIds];
|
||||
}
|
||||
roleIds.push(role.id);
|
||||
await GestionDb.set(`${botId}.${message.guild.id}.p${permissionOrCommand}`, roleIds);
|
||||
message.reply(`La permission ${permissionOrCommand} a été défini sur ${role.name}.`);
|
||||
data.permissions[guildId].p[permissionOrCommand] = roleIds;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.reply(`La permission ${permissionOrCommand} a été définie sur ${role.name}.`);
|
||||
} else {
|
||||
if (!client.commands.has(permissionOrCommand)) {
|
||||
return message.reply('Cette commande n\'existe pas.');
|
||||
}
|
||||
let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.c${permissionOrCommand}`);
|
||||
if (!data.permissions[guildId]) {
|
||||
data.permissions[guildId] = {};
|
||||
}
|
||||
if (!data.permissions[guildId].c) {
|
||||
data.permissions[guildId].c = {};
|
||||
}
|
||||
let roleIds = data.permissions[guildId].c[permissionOrCommand];
|
||||
if (!roleIds) {
|
||||
roleIds = [];
|
||||
} else if (!Array.isArray(roleIds)) {
|
||||
roleIds = [roleIds];
|
||||
}
|
||||
roleIds.push(role.id);
|
||||
await GestionDb.set(`${botId}.${message.guild.id}.c${permissionOrCommand}`, roleIds);
|
||||
GestionDb.push(`${botId}.${message.guild.id}.commandNames`, permissionOrCommand);
|
||||
message.reply(`La role ${role.name} a maintenant accée a la commande ${permissionOrCommand} .`);
|
||||
data.permissions[guildId].c[permissionOrCommand] = roleIds;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.reply(`Le rôle ${role.name} a maintenant accès à la commande ${permissionOrCommand}.`);
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -1,5 +1,4 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'suggest',
|
||||
@@ -7,18 +6,45 @@ module.exports = {
|
||||
emote: '💡',
|
||||
utilisation: 'suggest #channel',
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const botid = client.user.id;
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const currentSuggestChannelId = GestionDb.get(`${botid}.${guildId}.suggestchannel`);
|
||||
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.suggestChannel) {
|
||||
data.suggestChannel = {};
|
||||
}
|
||||
|
||||
const currentSuggestChannelId = data.suggestChannel[guildId];
|
||||
|
||||
const mentionedChannel = message.mentions.channels.first();
|
||||
if (mentionedChannel) {
|
||||
if (mentionedChannel.id === currentSuggestChannelId) {
|
||||
GestionDb.delete(`${botid}.${guildId}.suggestchannel`);
|
||||
delete data.suggestChannel[guildId];
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.channel.send(`Le salon de suggestion a été supprimé.`);
|
||||
} else {
|
||||
GestionDb.set(`${botid}.${guildId}.suggestchannel`, mentionedChannel.id);
|
||||
data.suggestChannel[guildId] = mentionedChannel.id;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.channel.send(`Le salon de suggestion a été configuré à <#${mentionedChannel.id}>`);
|
||||
}
|
||||
return;
|
||||
@@ -28,10 +54,20 @@ module.exports = {
|
||||
const channel = message.guild.channels.cache.get(args[0]);
|
||||
if (channel) {
|
||||
if (channel.id === currentSuggestChannelId) {
|
||||
GestionDb.delete(`${botid}.${guildId}.suggestchannel`);
|
||||
delete data.suggestChannel[guildId];
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.channel.send(`Le salon de suggestion a été supprimé.`);
|
||||
} else {
|
||||
GestionDb.set(`${botid}.${guildId}.suggestchannel`, args[0]);
|
||||
data.suggestChannel[guildId] = args[0];
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.channel.send(`Le salon de suggestion a été configuré à <#${args[0]}>`);
|
||||
}
|
||||
return;
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = (client) => {
|
||||
const loadCommands = (dir) => {
|
||||
let count = 0;
|
||||
fs.readdirSync(path.join(__dirname, dir)).forEach(file => {
|
||||
const filePath = path.join(__dirname, dir, file);
|
||||
if (fs.statSync(filePath).isDirectory()) {
|
||||
count += loadCommands(path.join(dir, file));
|
||||
} else if (file.endsWith('.js')) {
|
||||
try {
|
||||
delete require.cache[require.resolve(filePath)];
|
||||
const command = require(filePath);
|
||||
client.commands.set(command.name, command);
|
||||
if (command.aliases) {
|
||||
command.aliases.forEach(alias => {
|
||||
client.commands.set(alias, command);
|
||||
});
|
||||
}
|
||||
count++;
|
||||
} catch (error) {
|
||||
console.error(`Failed to load file: ${filePath}`);
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
});
|
||||
return count;
|
||||
}
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
async function getPermissionLevel(member, client) {
|
||||
const botId = client.user.id;
|
||||
const guildId = member.guild.id;
|
||||
const buyerId = ['1003985920162287696', '671763971803447298'];
|
||||
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
let owners = data.owners || {};
|
||||
if (buyerId.includes(member.id)) {
|
||||
return 11;
|
||||
}
|
||||
if (owners[member.id]) {
|
||||
return 10;
|
||||
}
|
||||
let highestPermission = 0;
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
const roleIds = data.permissions && data.permissions[guildId] && data.permissions[guildId].p && data.permissions[guildId].p[i];
|
||||
if (roleIds) {
|
||||
if (roleIds.some(id => member.roles.cache.has(id))) {
|
||||
highestPermission = Math.max(highestPermission, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
return highestPermission;
|
||||
}
|
||||
const totalCommands = loadCommands('../commands');
|
||||
console.log(`Commands => ${totalCommands} commandes préfixées chargées sur le bot`);
|
||||
|
||||
client.on('messageCreate', async message => {
|
||||
const botId = client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
|
||||
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 permissions = data.permissions || {};
|
||||
const defaultPrefix = "+";
|
||||
let mainPrefix = data.prefix || defaultPrefix;
|
||||
let serverPrefix = data.permissions && data.permissions[guildId] && data.permissions[guildId].prefix || mainPrefix;
|
||||
const prefix = serverPrefix !== undefined ? serverPrefix : mainPrefix;
|
||||
|
||||
if (!message.content.startsWith(prefix) || message.author.bot) return;
|
||||
|
||||
const args = message.content.slice(prefix.length).trim().split(/ +/);
|
||||
const commandName = args.shift().toLowerCase();
|
||||
if (!client.commands.has(commandName)) return;
|
||||
const command = client.commands.get(commandName)
|
||||
|| client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
|
||||
|
||||
if (command) {
|
||||
const permissionLevel = await getPermissionLevel(message.member, client, guildId);
|
||||
|
||||
try {
|
||||
if (permissionLevel === 11) {
|
||||
command.execute(message, args, client);
|
||||
} else if (permissionLevel >= permissions[command.name]) {
|
||||
command.execute(message, args, client);
|
||||
} else {
|
||||
return message.reply("Vous n'avez pas accès à cette commande.");
|
||||
}
|
||||
} catch {
|
||||
console.error(`Erreur lors de l'exécution de la commande: ${command.name}`);
|
||||
message.reply('Une erreur est survenue lors de l\'exécution de cette commande.');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = (client) => {
|
||||
let count = 0;
|
||||
const loadEvents = (dir) => {
|
||||
fs.readdirSync(path.join(__dirname, dir)).forEach(file => {
|
||||
const filePath = path.join(__dirname, dir, file);
|
||||
if (fs.statSync(filePath).isDirectory()) {
|
||||
loadEvents(path.join(dir, file));
|
||||
} else if (file.endsWith('.js')) {
|
||||
delete require.cache[require.resolve(filePath)];
|
||||
const event = require(filePath);
|
||||
if (typeof event.execute === 'function') {
|
||||
client.on(event.name, (...args) => event.execute(...args, client));
|
||||
console.log(`Event ${event.name} loaded`);
|
||||
count++;
|
||||
} else {
|
||||
console.error(`Event ${event.name} does not have an execute method.`);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
loadEvents('../events');
|
||||
console.log(`Event => ${count} chargé sur le bot`)
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
require('dotenv').config();
|
||||
const { Client, IntentsBitField, Collection } = require("discord.js");
|
||||
const loadCommands = require("./loaders/loadCommands");
|
||||
const loadEvents = require("./loaders/loadEvents");
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion')
|
||||
const client = new Client({intents: new IntentsBitField(3276799)});
|
||||
|
||||
client.events = new Collection();
|
||||
client.commands = new Collection();
|
||||
client.snipes = new Map();
|
||||
client.once('ready', () => {
|
||||
const permissions = require('./permissions.json');
|
||||
GestionDb.set(`${client.user.id}.permissions`, permissions);
|
||||
console.log(`${client.user.username} a bien charge les permissions`);
|
||||
});
|
||||
|
||||
(async () => {
|
||||
loadCommands(client);
|
||||
loadEvents(client);
|
||||
await client.login(process.env.TOKEN);
|
||||
})();
|
||||
+47
-14
@@ -1,24 +1,42 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
name: 'bl',
|
||||
aliases: ['blacklist', 'blacklistlist', 'bliste'],
|
||||
description: 'AJouter ou affiché la list des blacklist',
|
||||
emote: '🚫',
|
||||
utilisation: 'bl [@user]',
|
||||
emote: '🚫',
|
||||
utilisation: 'bl [@user]',
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const user = message.mentions.users.first() || (args[0] && client.users.cache.get(args[0]));
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
const user = message.mentions.users.first() || (args[0] && client.users.cache.get(args[0]));
|
||||
|
||||
if (user) {
|
||||
let bl = await GestionDb.get(`${botId}.bl`) || {};
|
||||
bl[user.id] = true;
|
||||
await GestionDb.set(`${botId}.bl`, bl);
|
||||
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.blacklist) {
|
||||
data.blacklist = {};
|
||||
}
|
||||
|
||||
data.blacklist[user.id] = true;
|
||||
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
|
||||
let successfulBans = 0;
|
||||
try {
|
||||
if (client.guilds && client.guilds.cache) {
|
||||
@@ -29,20 +47,35 @@ module.exports = {
|
||||
successfulBans++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
|
||||
|
||||
// Informe l'utilisateur que l'opération a réussi
|
||||
message.reply(`L'utilisateur <@${user.id}> a été ajouté à la blacklist et a été banni de ${successfulBans} serveurs.`);
|
||||
} else {
|
||||
let bl = await GestionDb.get(`${botId}.owners`) || {};
|
||||
// Récupère les données existantes de la base de données
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
// Récupère la liste noire spécifique à partir des données
|
||||
const blacklist = data.blacklist || {};
|
||||
|
||||
// Crée un embed pour afficher la liste noire
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Liste des blacklist')
|
||||
.setDescription(Object.keys(bl).map(bllist => `<@${bllist}>`).join('\n') || "Aucun personne n'est blacklist")
|
||||
.setDescription(Object.keys(blacklist).map(bllist => `<@${bllist}>`).join('\n') || "Aucun personne n'est blacklist")
|
||||
.setColor('#0099ff');
|
||||
|
||||
// Envoie l'embed dans le canal
|
||||
message.channel.send({ embeds: [embed] });
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,18 +1,23 @@
|
||||
const { MessageEmbed } = require('discord.js');
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'clearowner',
|
||||
aliases: ['clearowners'],
|
||||
description: 'Supprimer tout les owners',
|
||||
emote: '👑',
|
||||
utilisation: 'clearowner',
|
||||
category: 'buyer',
|
||||
emote: '👑',
|
||||
utilisation: 'clearowner',
|
||||
category: 'buyer',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = client.user.id;
|
||||
GestionDb.set(`${botId}.owners`, {});
|
||||
message.reply("Toutes les owner ony etaient supprimer")
|
||||
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify({})], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
} else {
|
||||
message.reply("Toutes les owner ony etaient supprimer");
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
+37
-10
@@ -1,27 +1,54 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
name: 'owner',
|
||||
aliases: ['owners'],
|
||||
description: 'Affiche la liste des propriétaires ou ajoute un propriétaire',
|
||||
emote: '👑',
|
||||
utilisation: 'owner <@user>',
|
||||
emote: '👑',
|
||||
utilisation: 'owner <@user>',
|
||||
category: 'buyer',
|
||||
|
||||
async execute(message, client) {
|
||||
const user = message.mentions.users.first();
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
const user = message.mentions.users.first();
|
||||
|
||||
if (user) {
|
||||
let owners = await GestionDb.get(`${botId}.owners`) || {};
|
||||
owners[user.id] = true;
|
||||
await GestionDb.set(`${botId}.owners`, owners);
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.owners) {
|
||||
data.owners = {};
|
||||
}
|
||||
|
||||
data.owners[user.id] = true;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
|
||||
message.reply(`L'utilisateur <@${user.id}> a été ajouté à la liste des owners.`);
|
||||
} else {
|
||||
let owners = await GestionDb.get(`${botId}.owners`) || {};
|
||||
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 owners = data.owners || {};
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Liste des owner')
|
||||
.setDescription(Object.keys(owners).map(ownerId => `<@${ownerId}>`).join('\n') || 'Aucun owner est dans la liste')
|
||||
|
||||
+27
-11
@@ -1,24 +1,40 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'unbl',
|
||||
aliases: ['unblacklist'],
|
||||
description: 'Enlever une personne de la blacklist',
|
||||
emote: '🚫',
|
||||
utilisation: 'unbl <@user>',
|
||||
emote: '🚫',
|
||||
utilisation: 'unbl <@user>',
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const user = message.mentions.users.first() || (args[0] && client.users.cache.get(args[0]));
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
if (user) {
|
||||
let bl = await GestionDb.get(`${botId}.bl`) || {};
|
||||
const user = message.mentions.users.first() || (args[0] && client.users.cache.get(args[0]));
|
||||
|
||||
if (bl[user.id]) {
|
||||
delete bl[user.id];
|
||||
await GestionDb.set(`${botId}.bl`, bl);
|
||||
if (user) {
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.blacklist) {
|
||||
data.blacklist = {};
|
||||
}
|
||||
|
||||
if (data.blacklist[user.id]) {
|
||||
delete data.blacklist[user.id];
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.reply(`L'utilisateur <@${user.id}> a été enlevé de la blacklist.`);
|
||||
} else {
|
||||
message.reply(`L'utilisateur <@${user.id}> n'est pas sur la blacklist.`);
|
||||
|
||||
@@ -1,26 +1,44 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { MessageEmbed } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
name: 'unowner',
|
||||
aliases: ['unowners'],
|
||||
description: 'Supprime un propriétaire',
|
||||
emote: '👑',
|
||||
emote: '👑',
|
||||
utilisation: 'unowner <@user>',
|
||||
category: 'buyer',
|
||||
|
||||
async execute(message) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
const user = message.mentions.users.first();
|
||||
|
||||
if (!user) {
|
||||
return message.reply('Veuillez mentionner un utilisateur à supprimer de la liste des propriétaires.');
|
||||
}
|
||||
|
||||
let owners = await GestionDb.get(`${botId}.owners`) || {};
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (owners[user.id]) {
|
||||
delete owners[user.id];
|
||||
await GestionDb.set(`${botId}.owners`, owners);
|
||||
if (!data.owners) {
|
||||
data.owners = {};
|
||||
}
|
||||
|
||||
if (data.owners[user.id]) {
|
||||
delete data.owners[user.id];
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.reply(`L'utilisateur <@${user.id}> a été supprimé de la liste des propriétaires.`);
|
||||
} else {
|
||||
message.reply('Cet utilisateur n\'est pas un owner.');
|
||||
|
||||
+26
-10
@@ -1,5 +1,4 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'unwl',
|
||||
@@ -8,20 +7,37 @@ module.exports = {
|
||||
emote: '🚫',
|
||||
utilisation: 'unwl <@user>',
|
||||
category: 'gestion',
|
||||
|
||||
|
||||
async execute(message, args) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
if (args.length === 0) {
|
||||
const user = message.mentions.users.first() || (args[0] && message.client.users.cache.get(args[0]));
|
||||
|
||||
if (!user) {
|
||||
return message.reply('Veuillez mentionner un utilisateur à retirer de la liste blanche.');
|
||||
}
|
||||
|
||||
const userId = args[0].replace(/<@!?(\d+)>/, '$1');
|
||||
let whitelist = await GestionDb.get(`${botId}.${guildId}.whitelist`) || {};
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (whitelist[userId]) {
|
||||
delete whitelist[userId];
|
||||
await GestionDb.set(`${botId}.${guildId}.whitelist`, whitelist);
|
||||
if (!data.whitelist) {
|
||||
data.whitelist = {};
|
||||
}
|
||||
|
||||
if (data.whitelist[user.id]) {
|
||||
delete data.whitelist[user.id];
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.reply('Utilisateur retiré de la liste blanche.');
|
||||
} else {
|
||||
message.reply('Cet utilisateur n\'est pas sur la liste blanche.');
|
||||
|
||||
+38
-12
@@ -1,6 +1,5 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'wl',
|
||||
@@ -11,27 +10,54 @@ module.exports = {
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
|
||||
if (args.length > 0) {
|
||||
const userId = args[0].replace(/<@!?(\d+)>/, '$1');
|
||||
let whitelist = await GestionDb.get(`${botId}.${guildId}.whitelist`) || {};
|
||||
const user = message.mentions.users.first() || (args[0] && message.client.users.cache.get(args[0]));
|
||||
|
||||
if (!whitelist[userId]) {
|
||||
whitelist[userId] = true;
|
||||
await GestionDb.set(`${botId}.${guildId}.whitelist`, whitelist);
|
||||
if (user) {
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.whitelist) {
|
||||
data.whitelist = {};
|
||||
}
|
||||
|
||||
if (!data.whitelist[user.id]) {
|
||||
data.whitelist[user.id] = true;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
message.reply('Utilisateur ajouté à la liste blanche.');
|
||||
} else {
|
||||
message.reply('Cet utilisateur est déjà sur la liste blanche.');
|
||||
}
|
||||
} else {
|
||||
let whitelist = await GestionDb.get(`${botId}.${guildId}.whitelist`) || {};
|
||||
const embed = new EmbedBuilder()
|
||||
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 whitelist = data.whitelist || {};
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Liste blanche')
|
||||
.setDescription(Object.keys(whitelist).map(id => `<@${id}>`).join('\n') || 'Aucun utilisateur sur la liste blanche')
|
||||
.setFooter({ text: 'design by valou336', iconURL: client.user.displayAvatarURL({dynamic: true})});
|
||||
|
||||
|
||||
message.channel.send({ embeds: [embed] });
|
||||
}
|
||||
},
|
||||
|
||||
Generated
-1896
File diff suppressed because it is too large
Load Diff
@@ -1,31 +0,0 @@
|
||||
{
|
||||
"name": "gestion",
|
||||
"version": "1.0.0",
|
||||
"description": "Bot discord en js by TuturP33 & Valou336",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/Tutur33/gestion.git"
|
||||
},
|
||||
"author": "Valou336 && Tutur33 ",
|
||||
"license": "Apache-2.0",
|
||||
"bugs": {
|
||||
"url": "https://github.com/Tutur33/gestion/issues"
|
||||
},
|
||||
"homepage": "https://github.com/Tutur33/gestion#readme",
|
||||
"dependencies": {
|
||||
"axios": "^1.6.7",
|
||||
"color-name-list": "^10.19.0",
|
||||
"discord-gamecord": "^4.4.1",
|
||||
"discord.js": "^14.14.1",
|
||||
"discordjs-button-pagination": "^3.0.1",
|
||||
"dotenv": "^16.4.4",
|
||||
"ms": "^2.1.3",
|
||||
"quick.db": "^7.1.3",
|
||||
"sqlite": "^5.1.1",
|
||||
"sqlite3": "^5.1.7"
|
||||
}
|
||||
}
|
||||
@@ -1,122 +0,0 @@
|
||||
{
|
||||
"2048": 0,
|
||||
"permupdate": 4,
|
||||
"dbperm": 4,
|
||||
"clear": 4,
|
||||
"help": 0,
|
||||
"support": 0,
|
||||
"setperm": 6,
|
||||
"delperm": 6,
|
||||
"owner": 11,
|
||||
"unowner": 11,
|
||||
"backup": 11,
|
||||
"perm": 5,
|
||||
"alladmin": 5,
|
||||
"allbot": 5,
|
||||
"banner": 5,
|
||||
"botinfo": 5,
|
||||
"channel": 5,
|
||||
"helpall": 1,
|
||||
"pic": 0,
|
||||
"ping": 0,
|
||||
"snipe": 0,
|
||||
"roleinfo": 0,
|
||||
"uptime": 0,
|
||||
"setavatar": 10,
|
||||
"setname": 10,
|
||||
"prefix": 10,
|
||||
"servers": 10,
|
||||
"leave": 10,
|
||||
"change": 10,
|
||||
"find": 0,
|
||||
"serverinfo": 0,
|
||||
"antibot": 10,
|
||||
"say": 0,
|
||||
"massiverole": 6,
|
||||
"unmassiverole": 6,
|
||||
"soutien": 10,
|
||||
"renew": 5,
|
||||
"lock": 5,
|
||||
"unlock": 5,
|
||||
"unlockall": 5,
|
||||
"lockall": 5,
|
||||
"hide": 5,
|
||||
"hideall": 5,
|
||||
"unhide": 5,
|
||||
"unhideall": 5,
|
||||
"ban": 5,
|
||||
"unban": 5,
|
||||
"mute": 5,
|
||||
"unmute": 5,
|
||||
"tempmute": 5,
|
||||
"mutelist": 5,
|
||||
"banlist": 5,
|
||||
"warn": 3,
|
||||
"unwarn": 3,
|
||||
"sanction": 5,
|
||||
"kick": 5,
|
||||
"addrole": 5,
|
||||
"delrole": 5,
|
||||
"derank": 5,
|
||||
"stream": 10,
|
||||
"watch": 10,
|
||||
"listen": 10,
|
||||
"game": 10,
|
||||
"antichannel": 10,
|
||||
"wl": 10,
|
||||
"unwl": 10,
|
||||
"secur": 10,
|
||||
"buyer": 11,
|
||||
"clearowner": 10,
|
||||
"checkperms": 10,
|
||||
"create": 5,
|
||||
"embed": 5,
|
||||
"joinsettings": 10,
|
||||
"setlog": 10,
|
||||
"clearsanction": 5,
|
||||
"unbanall": 8,
|
||||
"calcul": 0,
|
||||
"clearwl": 10,
|
||||
"reset": 10,
|
||||
"resetall": 11,
|
||||
"dm": 10,
|
||||
"giveaway": 5,
|
||||
"8ball": 0,
|
||||
"slowmode": 5,
|
||||
"mybot": 10,
|
||||
"invite": 10,
|
||||
"setalerte": 10,
|
||||
"alerteping": 10,
|
||||
"messagelog": 10,
|
||||
"modlog": 10,
|
||||
"vocallog": 10,
|
||||
"rolelog": 10,
|
||||
"snake": 0,
|
||||
"catsay": 0,
|
||||
"puissance4": 0,
|
||||
"morpion": 0,
|
||||
"pfc": 0,
|
||||
"vc": 0,
|
||||
"flood": 0,
|
||||
"findemoji": 0,
|
||||
"guesspokemon": 0,
|
||||
"slot": 0,
|
||||
"fasttype": 0,
|
||||
"demineur": 0,
|
||||
"pendu": 0,
|
||||
"wordle": 0,
|
||||
"pdefault": 11,
|
||||
"changelog": 0,
|
||||
"mod": 10,
|
||||
"bunker": 5,
|
||||
"play": 5,
|
||||
"set": 5,
|
||||
"poll": 5,
|
||||
"userinfo": 5,
|
||||
"bl": 10,
|
||||
"unbl": 10,
|
||||
"stat": 10,
|
||||
"random": 0,
|
||||
"greet": 10,
|
||||
"greetlist": 10
|
||||
}
|
||||
+53
-44
@@ -1,6 +1,5 @@
|
||||
const { EmbedBuilder , ButtonBuilder, ButtonStyle, ActionRowBuilder } = require('discord.js');
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table("gestion");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = {
|
||||
name: 'helpall',
|
||||
@@ -11,83 +10,93 @@ module.exports = {
|
||||
category: 'utils',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const defaultprefix = "+";
|
||||
let mainPrefix = await GestionDb.get(`${botId}.prefix`);
|
||||
let serverPrefix = await GestionDb.get(`${botId}.${guildId}.prefix`);
|
||||
const prefix = serverPrefix !== undefined ? serverPrefix : mainPrefix !== undefined ? mainPrefix : defaultprefix;
|
||||
const defaultPrefix = "+";
|
||||
|
||||
const permissions = GestionDb.get(`${botId}.permissions`);
|
||||
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 permissions = data.permissions || {};
|
||||
const prefix = data.prefix || defaultPrefix;
|
||||
|
||||
const commandsByPermission = {};
|
||||
|
||||
// Parcourir les permissions et les commandes associées
|
||||
for (const [commandName, permissionLevel] of Object.entries(permissions)) {
|
||||
if (!commandsByPermission[permissionLevel]) {
|
||||
commandsByPermission[permissionLevel] = [];
|
||||
}
|
||||
commandsByPermission[permissionLevel].push(commandName);
|
||||
}
|
||||
|
||||
const embeds = Object.entries(commandsByPermission).sort(([a], [b]) => a - b).map(([permissionLevel, commands]) => {
|
||||
|
||||
// Créer les embeds pour chaque niveau de permission avec des commandes associées
|
||||
const embeds = Object.entries(commandsByPermission).map(([permissionLevel, commands]) => {
|
||||
const commandDescriptions = commands.map(commandName => {
|
||||
const command = client.commands.get(commandName);
|
||||
if (!command) {
|
||||
return null;
|
||||
return null;
|
||||
}
|
||||
return `**${prefix}${commandName}**\n\`${command.description}\``;
|
||||
}).filter(Boolean);
|
||||
}).filter(Boolean);
|
||||
|
||||
if (commandDescriptions.length === 0) {
|
||||
return null; // Skip creating an embed if there are no commands for this permission level
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(`Commandes de niveau de permission ${permissionLevel === '10' ? 'Owner' : permissionLevel === '11' ? 'Buyer' : permissionLevel}`)
|
||||
.setColor('#0099ff');
|
||||
const embed = new EmbedBuilderon()
|
||||
.setTitle(`Commandes de niveau de permission ${permissionLevel}`)
|
||||
.setColor('#0099ff');
|
||||
|
||||
if (commandDescriptions.length > 0) {
|
||||
embed.setDescription(commandDescriptions.join('\n'));
|
||||
} else {
|
||||
embed.setDescription('Aucune commande disponible pour ce niveau de permission.');
|
||||
}
|
||||
return embed;
|
||||
});
|
||||
const backButton = new ButtonBuilder()
|
||||
.setCustomId('back')
|
||||
.setLabel('⬅️')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
const nextButton = new ButtonBuilder()
|
||||
.setCustomId('next')
|
||||
.setLabel('➡️')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
// Create the action row with the buttons
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(backButton, nextButton);
|
||||
const msg = await message.channel.send({ embeds: [embeds[0]], components: [row] });
|
||||
}).filter(Boolean) // Filter out any undefined embeds
|
||||
|
||||
if (embeds.length === 0) {
|
||||
return message.reply("Aucune commande disponible pour ce serveur.");
|
||||
}
|
||||
|
||||
|
||||
const backButton = new ButtonBuilder()
|
||||
.setCustomId('back')
|
||||
.setLabel('⬅️')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
const nextButton = new ButtonBuilder()
|
||||
.setCustomId('next')
|
||||
.setLabel('➡️')
|
||||
.setStyle(ButtonStyle.Primary);
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(backButton, nextButton);
|
||||
|
||||
const msg = await message.channel.send({ embeds: [embeds[0]], components: [row] });
|
||||
|
||||
const collector = msg.createMessageComponentCollector({
|
||||
filter: (interaction) => interaction.isButton() && interaction.user.id === message.author.id,
|
||||
time: 60000
|
||||
});
|
||||
|
||||
|
||||
let currentPage = 0;
|
||||
let currentPage = 0;
|
||||
collector.on('collect', async (interaction) => {
|
||||
// Acknowledge the interaction
|
||||
await interaction.deferUpdate();
|
||||
|
||||
if (!interaction.isButton()) return;
|
||||
|
||||
|
||||
if (interaction.customId === 'back') {
|
||||
currentPage = currentPage > 0 ? --currentPage : embeds.length - 1;
|
||||
currentPage = currentPage > 0 ? --currentPage : embeds.length - 1;
|
||||
} else if (interaction.customId === 'next') {
|
||||
currentPage = currentPage + 1 < embeds.length ? ++currentPage : 0;
|
||||
currentPage = currentPage + 1 < embeds.length ? ++currentPage : 0;
|
||||
}
|
||||
|
||||
// Update the message with the new embed and the action row with buttons
|
||||
|
||||
await msg.edit({ embeds: [embeds[currentPage]], components: [row] });
|
||||
});
|
||||
|
||||
|
||||
collector.on('end', () => msg.edit({ embeds: [embeds[currentPage]], components: [] }));
|
||||
},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const { EmbedBuilder, } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
name: 'stat',
|
||||
|
||||
+37
-3
@@ -1,9 +1,43 @@
|
||||
const { Events, ActivityType } = require("discord.js");
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { Events } = require('discord.js');
|
||||
const permissions = require('../../permissions.json');
|
||||
|
||||
module.exports = {
|
||||
name: Events.ClientReady,
|
||||
async execute(client) {
|
||||
console.log(`le bot ${client.user.tag} est en ligne`)
|
||||
const db = new sqlite3.Database('myDatabase.db', (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
console.log('Connected to the SQLite database.');
|
||||
});
|
||||
|
||||
let permissionsData = 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 (!permissionsData.permissions) {
|
||||
permissionsData.permissions = {};
|
||||
}
|
||||
|
||||
permissionsData.permissions = permissions;
|
||||
const permissionsJson = JSON.stringify(permissionsData);
|
||||
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [client.user.id, permissionsJson], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
} else {
|
||||
console.log(`Les permissions ont été chargées pour le bot ${client.user.tag}`);
|
||||
}
|
||||
});
|
||||
|
||||
console.log(`Le bot ${client.user.tag} est en ligne`);
|
||||
process.on('uncaughtException', (error) => {
|
||||
console.error('Uncaught Exception:', error);
|
||||
});
|
||||
@@ -11,5 +45,5 @@ module.exports = {
|
||||
process.on('unhandledRejection', (reason, promise) => {
|
||||
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
+64
-14
@@ -1,18 +1,68 @@
|
||||
const { Events } = require("discord.js");
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion')
|
||||
module.exports = {
|
||||
name: Events.GuildMemberAdd,
|
||||
once: false,
|
||||
async execute(member, client) {
|
||||
const userId = member.user.id;
|
||||
const bl = await GestionDb.get(`${client.user.id}.bl`);
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
if (bl && bl[userId]) {
|
||||
try {
|
||||
await member.ban({ reason: 'Blacklisted' });
|
||||
} catch (error) {
|
||||
}
|
||||
// Setup SQLite3 database connection
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
module.exports = {
|
||||
name: 'greet',
|
||||
description: 'Ajoute ou supprime un salon des greet',
|
||||
emote: '👋',
|
||||
utilisation: 'greet <salon>',
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args) {
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
|
||||
const channelId = args[0] ? args[0].replace(/<#|>/g, '') : message.channel.id;
|
||||
|
||||
// Query the greetings data from the SQLite3 database
|
||||
let greet = await new EmbedBuilder((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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
// Access the specific guild's greetings
|
||||
let guildGreetings = greet[guildId] || [];
|
||||
|
||||
const index = guildGreetings.findIndex(greeting => greeting.channelId === channelId);
|
||||
|
||||
if (index !== -1) {
|
||||
guildGreetings.splice(index, 1);
|
||||
greet[guildId] = guildGreetings;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(greet)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
const embed = new EmbedBuilder()
|
||||
.setDescription(`Le salon <#${channelId}> a été retiré de la liste des salutations.`)
|
||||
.setColor('#0099ff');
|
||||
message.channel.send({ embeds: [embed] });
|
||||
} else if (guildGreetings.length < 5) {
|
||||
guildGreetings.push({ channelId });
|
||||
|
||||
greet[guildId] = guildGreetings;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(greet)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
}
|
||||
});
|
||||
const embed = new EmbedBuilder()
|
||||
.setDescription(`Le salon <#${channelId}> a été ajouté à la liste des salutations.`)
|
||||
.setColor('#0099ff');
|
||||
message.channel.send({ embeds: [embed] });
|
||||
} else {
|
||||
const embed = new EmbedBuilder()
|
||||
.setDescription('Il y a déjà 5 salons dans la liste des salutations. Vous ne pouvez pas en ajouter d\'autres.')
|
||||
.setColor('#ff0000');
|
||||
message.channel.send({ embeds: [embed] });
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -1,20 +1,28 @@
|
||||
const {Events} = require("discord.js")
|
||||
const db = require('quick.db');
|
||||
const PrevnameDb = new db.table("prevname");
|
||||
const GestionDb = new db.table('gestion');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db2 = new sqlite3.Database('myDatabase.db');
|
||||
module.exports = {
|
||||
name: Events.InteractionCreate,
|
||||
async execute(interaction, client) {
|
||||
const botId = client.user.id;
|
||||
let owners = await GestionDb.get(`${botId}.owners`) || {};
|
||||
let owners = await new Promise((resolve, reject) => {
|
||||
db2.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
}
|
||||
resolve(row ? JSON.parse(row.value).owners || {} : {});
|
||||
});
|
||||
});
|
||||
if (!interaction.isButton()) return;
|
||||
if (interaction.customId.startsWith('deletesuggestion_')) {
|
||||
const userId = interaction.customId.split('_')[1];
|
||||
const userId= interaction.customId.split('_')[1];
|
||||
if (interaction.user.id !== userId && !Object.keys(owners).includes(interaction.user.id)) {
|
||||
await interaction.reply({ content: "vous n'avez pas la permission de supprimer cette suggestion.", ephemeral: true });
|
||||
return;
|
||||
}
|
||||
|
||||
await interaction.message.delete();
|
||||
} else if (interaction.customId.startsWith('deleteprevnames_')) {
|
||||
const userId = interaction.customId.split('_')[1];
|
||||
|
||||
+19
-7
@@ -1,21 +1,31 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion');
|
||||
const {Events} = require("discord.js")
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { Events } = require("discord.js");
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
module.exports = {
|
||||
name: Events.GuildMemberAdd ,
|
||||
name: Events.GuildMemberAdd,
|
||||
async execute(member) {
|
||||
const botId = member.client.user.id;
|
||||
const guildId = member.guild.id;
|
||||
const guildGreetings = GestionDb.get(`${botId}.${guildId}.greetings`) || [];
|
||||
|
||||
if (guildGreetings.length > 0) {
|
||||
let greet = 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 guildGreetings = greet[guildId] || [];
|
||||
|
||||
if (guildGreetings.length > 0) {
|
||||
const welcomeMessage = `Bienvenue <@${member.id}> sur le serveur ${member.guild.name} !`;
|
||||
const messagePromises = [];
|
||||
for (const greeting of guildGreetings) {
|
||||
try {
|
||||
const channel = await member.guild.channels.fetch(greeting.channelId);
|
||||
if (channel && channel.type === 0) {
|
||||
if (channel && channel.type === 0) {
|
||||
messagePromises.push(
|
||||
channel.send(welcomeMessage)
|
||||
.then(message => {
|
||||
@@ -24,11 +34,13 @@ module.exports = {
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
try {
|
||||
await Promise.all(messagePromises);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,15 +1,28 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db2 = new sqlite3.Database('myDatabase.db');
|
||||
const {Events} = require("discord.js")
|
||||
module.exports = {
|
||||
name: 'guildMemberUpdate',
|
||||
execute(oldMember, newMember) {
|
||||
name: Events.GuildMemberAdd,
|
||||
async execute(oldMember, newMember) {
|
||||
const botId = newMember.client.user.id;
|
||||
const guildId = newMember.guild.id;
|
||||
|
||||
const limitedRoles = GestionDb.get(`${botId}.${guildId}.rolelimits`) || [];
|
||||
const blrank = GestionDb.get(`${botId}.${guildId}.blrank`) || {};
|
||||
let data = await new Promise((resolve, reject) => {
|
||||
db2.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
}
|
||||
resolve(row ? JSON.parse(row.value) : {});
|
||||
});
|
||||
});
|
||||
|
||||
if (blrank[newMember.id]) {
|
||||
// Access the specific guild's blrank data
|
||||
let blrank = data.blrank || {};
|
||||
|
||||
if (blrank[guildId] && blrank[guildId][newMember.id]) {
|
||||
const addedRoles = newMember.roles.cache.filter(role => !oldMember.roles.cache.has(role.id));
|
||||
addedRoles.forEach(async role => {
|
||||
try {
|
||||
@@ -20,6 +33,7 @@ module.exports = {
|
||||
});
|
||||
return;
|
||||
}
|
||||
const limitedRoles = GestionDb.get(`${botId}.${guildId}.rolelimits`) || [];
|
||||
const addedRoles = newMember.roles.cache.filter(role => !oldMember.roles.cache.has(role.id));
|
||||
|
||||
addedRoles.forEach(async role => {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion');
|
||||
const {Events} = require("discord.js")
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { Events } = require("discord.js");
|
||||
|
||||
// Setup SQLite3 database connection
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
module.exports = {
|
||||
name: Events.VoiceStateUpdate,
|
||||
@@ -9,10 +11,26 @@ module.exports = {
|
||||
const guildId = newState.guild.id;
|
||||
const botId = newState.client.user.id;
|
||||
const channelId = newState.channelId;
|
||||
const roles = GestionDb.get(`${botId}.${guildId}.rolevocal.${channelId}`) || [];
|
||||
if (roles.length > 0) {
|
||||
|
||||
// Query the bot's data from the SQLite3 database
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
// Access the specific guild's rolevocal data
|
||||
let rolevocal = data.rolevocal || {};
|
||||
let guildRoles = rolevocal[guildId] || {};
|
||||
let channelRoles = guildRoles[channelId] || [];
|
||||
|
||||
if (channelRoles.length > 0) {
|
||||
const member = newState.member;
|
||||
for (const roleId of roles) {
|
||||
for (const roleId of channelRoles) {
|
||||
const role = newState.guild.roles.cache.get(roleId);
|
||||
if (role) {
|
||||
try {
|
||||
|
||||
@@ -1,12 +1,25 @@
|
||||
const { ActionRowBuilder, ButtonBuilder,ButtonStyle , EmbedBuilder } = require('discord.js');
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion')
|
||||
const {Events} = require("discord.js")
|
||||
const { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { Events } = require("discord.js");
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
module.exports = {
|
||||
name: Events.MessageCreate,
|
||||
async execute(message) {
|
||||
const botid = message.client.user.id;
|
||||
const suggestChannelId = GestionDb.get(`${botid}.${message.guild.id}.suggestchannel`);
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
|
||||
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 suggestChannelId = data.suggestChannel && data.suggestChannel[guildId];
|
||||
|
||||
if (message.channel.id === suggestChannelId && !message.author.bot) {
|
||||
await message.delete();
|
||||
|
||||
@@ -24,9 +37,9 @@ module.exports = {
|
||||
.setStyle(ButtonStyle.Danger)
|
||||
);
|
||||
|
||||
const suggestionmesssage = await message.channel.send({ embeds: [embed], components: [row] });
|
||||
suggestionmesssage.react('👎')
|
||||
suggestionmesssage.react('👍')
|
||||
const suggestionMessage = await message.channel.send({ embeds: [embed], components: [row] });
|
||||
suggestionMessage.react('👎')
|
||||
suggestionMessage.react('👍')
|
||||
}
|
||||
},
|
||||
};
|
||||
+56
-38
@@ -1,7 +1,6 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion')
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
module.exports = (client) => {
|
||||
const loadCommands = (dir) => {
|
||||
@@ -12,7 +11,6 @@ module.exports = (client) => {
|
||||
count += loadCommands(path.join(dir, file));
|
||||
} else if (file.endsWith('.js')) {
|
||||
try {
|
||||
// Delete the cache for this command file
|
||||
delete require.cache[require.resolve(filePath)];
|
||||
const command = require(filePath);
|
||||
client.commands.set(command.name, command);
|
||||
@@ -23,63 +21,83 @@ module.exports = (client) => {
|
||||
}
|
||||
count++;
|
||||
} catch (error) {
|
||||
console.error(`Failed to load file: ${filePath}`); // Log any errors
|
||||
console.error(`Failed to load file: ${filePath}`);
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
});
|
||||
return count;
|
||||
}
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
async function getPermissionLevel(member, client) {
|
||||
const botId = client.user.id;
|
||||
const buyerId = ['1003985920162287696', '671763971803447298'];
|
||||
let owners = await GestionDb.get(`${botId}.owners`) || {};
|
||||
if (buyerId.includes(member.id)) {
|
||||
return 11;
|
||||
}
|
||||
if (owners[member.id]) {
|
||||
return 10;
|
||||
}
|
||||
let highestPermission = 0;
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
const roleIds = await GestionDb.get(`${botId}.${member.guild.id}.p${i}`);
|
||||
if (roleIds) {
|
||||
// Si roleIds n'est pas un tableau, le convertir en tableau
|
||||
if (!Array.isArray(roleIds)) {
|
||||
roleIds = [roleIds];
|
||||
}
|
||||
if (roleIds.some(id => member.roles.cache.has(id))) {
|
||||
highestPermission = Math.max(highestPermission, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
return highestPermission;
|
||||
}
|
||||
const botId = client.user.id;
|
||||
const guildId = member.guild.id;
|
||||
const buyerId = ['1003985920162287696', '671763971803447298'];
|
||||
|
||||
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) : {});
|
||||
});
|
||||
});
|
||||
|
||||
let owners = data.owners || {};
|
||||
if (buyerId.includes(member.id)) {
|
||||
return 11;
|
||||
}
|
||||
if (owners[member.id]) {
|
||||
return 10;
|
||||
}
|
||||
let highestPermission = 0;
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
const roleIds = data.permissions && data.permissions[guildId] && data.permissions[guildId].p && data.permissions[guildId].p[i];
|
||||
if (roleIds) {
|
||||
if (roleIds.some(id => member.roles.cache.has(id))) {
|
||||
highestPermission = Math.max(highestPermission, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
return highestPermission;
|
||||
}
|
||||
const totalCommands = loadCommands('../commands');
|
||||
console.log(`Commands => ${totalCommands} commandes préfixées chargées sur le bot`);
|
||||
|
||||
client.on('messageCreate', async message => {
|
||||
const botId = client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const botInfo = GestionDb.get(botId);
|
||||
const permissions = botInfo.permissions;
|
||||
const defaultprefix = "+";
|
||||
let mainPrefix = await GestionDb.get(`${botId}.prefix`);
|
||||
let serverPrefix = await GestionDb.get(`${botId}.${guildId}.prefix`);
|
||||
const prefix = serverPrefix !== undefined ? serverPrefix : mainPrefix !== undefined ? mainPrefix : 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 permissions = data.permissions || {};
|
||||
const defaultPrefix = "+";
|
||||
let mainPrefix = data.prefix || defaultPrefix;
|
||||
let serverPrefix = data.permissions && data.permissions[guildId] && data.permissions[guildId].prefix || mainPrefix;
|
||||
const prefix = serverPrefix !== undefined ? serverPrefix : mainPrefix;
|
||||
|
||||
if (!message.content.startsWith(prefix) || message.author.bot) return;
|
||||
|
||||
const args = message.content.slice(prefix.length).trim().split(/ +/);
|
||||
const commandName = args.shift().toLowerCase();
|
||||
if (!client.commands.has(commandName)) return;
|
||||
const command = client.commands.get(commandName)
|
||||
|| client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
|
||||
|| client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
|
||||
|
||||
if (command) {
|
||||
const permissionLevel = await getPermissionLevel(message.member, client, guildId);
|
||||
|
||||
|
||||
try {
|
||||
if (permissionLevel === 11) {
|
||||
if (permissionLevel === 11) {
|
||||
command.execute(message, args, client);
|
||||
} else if (permissionLevel >= permissions[command.name]) {
|
||||
command.execute(message, args, client);
|
||||
|
||||
Reference in New Issue
Block a user