mirror of
https://github.com/arthur-pbty/LazyBot.git
synced 2026-06-03 23:36:37 +02:00
add little config bot
This commit is contained in:
+26
-3
@@ -1,11 +1,34 @@
|
||||
const { Client, GatewayIntentBits } = require("discord.js");
|
||||
const loadSlashCommands = require('./slash_commands.js');
|
||||
loadSlashCommands();
|
||||
|
||||
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
|
||||
const { Client, GatewayIntentBits, ActivityType, Events } = require("discord.js");
|
||||
|
||||
client.once("ready", () => {
|
||||
const client = new Client({ intents: Object.values(GatewayIntentBits) });
|
||||
|
||||
client.once("clientReady", () => {
|
||||
console.log(`Bot connecté en tant que ${client.user.tag}`);
|
||||
client.user.setActivity("LazyBot à votre service !", { type: ActivityType.Custom });
|
||||
});
|
||||
|
||||
|
||||
client.on(Events.InteractionCreate, async interaction => {
|
||||
if (!interaction.isChatInputCommand()) return;
|
||||
|
||||
if (interaction.commandName === 'ping') {
|
||||
await interaction.reply('Pong!');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
client.on(Events.MessageCreate, message => {
|
||||
if (message.author.bot) return;
|
||||
const config = global.guildConfigs?.[message.guild.id];
|
||||
if (config?.autoMessage) {
|
||||
message.channel.send(config.autoMessage);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
client.login(process.env.BOT_TOKEN);
|
||||
|
||||
module.exports = client;
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Dashboard du serveur</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="guild-name">Chargement...</h1>
|
||||
|
||||
<form id="event-form">
|
||||
<label>Message automatique :</label>
|
||||
<input type="text" id="auto-message" placeholder="Ex: Bonjour à tous !">
|
||||
<button type="submit">Sauvegarder</button>
|
||||
</form>
|
||||
|
||||
<div id="status"></div>
|
||||
|
||||
<script>
|
||||
const guildId = window.location.pathname.split("/")[2]; // récupère l'ID du serveur
|
||||
|
||||
// Afficher le nom du serveur
|
||||
fetch("/api/guilds")
|
||||
.then(res => res.json())
|
||||
.then(guilds => {
|
||||
const guild = guilds.find(g => g.id === guildId);
|
||||
if (!guild) {
|
||||
document.getElementById("guild-name").textContent = "Serveur introuvable ou accès refusé";
|
||||
return;
|
||||
}
|
||||
document.getElementById("guild-name").textContent = `Dashboard : ${guild.name}`;
|
||||
});
|
||||
|
||||
// Envoyer la config du formulaire au serveur
|
||||
const form = document.getElementById("event-form");
|
||||
form.addEventListener("submit", async (e) => {
|
||||
e.preventDefault();
|
||||
const message = document.getElementById("auto-message").value;
|
||||
|
||||
const res = await fetch("/api/bot/save-config", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ guildId, autoMessage: message })
|
||||
});
|
||||
|
||||
const data = await res.json();
|
||||
document.getElementById("status").textContent = data.success ? "Config sauvegardée ✅" : "Erreur ❌";
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -60,6 +60,8 @@
|
||||
.catch(() => {
|
||||
console.log("Impossible de récupérer le lien du bot.");
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -114,6 +114,41 @@ app.get("/api/guilds", (req, res) => {
|
||||
res.json({ url });
|
||||
});
|
||||
|
||||
// Servir le dashboard par serveur
|
||||
app.get("/guild/:guildId", (req, res) => {
|
||||
const guildId = req.params.guildId;
|
||||
const userGuilds = req.session.guilds;
|
||||
|
||||
// Vérifie que l'utilisateur est connecté et a admin sur ce serveur
|
||||
if (!userGuilds) return res.redirect("/"); // ou une page de connexion
|
||||
const guildValid = userGuilds.find(
|
||||
g => g.id === guildId && (BigInt(g.permissions) & 0x8n) === 0x8n
|
||||
);
|
||||
if (!guildValid) return res.send("Accès interdit : vous n'êtes pas admin sur ce serveur.");
|
||||
|
||||
// Redirige vers la page HTML statique du dashboard
|
||||
res.sendFile(path.join(__dirname, "public", "guild.html"));
|
||||
});
|
||||
|
||||
// Exemple : sauvegarde config d'un serveur
|
||||
app.post("/api/bot/save-config", express.json(), (req, res) => {
|
||||
const { guildId, autoMessage } = req.body;
|
||||
const userGuilds = req.session.guilds;
|
||||
|
||||
// Vérifie admin + bot présent
|
||||
const guildValid = userGuilds.find(
|
||||
g => g.id === guildId && (BigInt(g.permissions) & 0x8n) === 0x8n
|
||||
);
|
||||
if (!guildValid) return res.status(403).json({ error: "Accès interdit" });
|
||||
|
||||
// Sauvegarde dans un objet serveur côté serveur (ou DB)
|
||||
if (!global.guildConfigs) global.guildConfigs = {};
|
||||
global.guildConfigs[guildId] = { autoMessage };
|
||||
|
||||
res.json({ success: true });
|
||||
});
|
||||
|
||||
|
||||
|
||||
res.json(validGuilds);
|
||||
});
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
const { REST, Routes } = require('discord.js');
|
||||
|
||||
module.exports = async () => {
|
||||
const TOKEN = process.env.BOT_TOKEN;
|
||||
const CLIENT_ID = process.env.CLIENT_ID;
|
||||
|
||||
const commands = [
|
||||
{
|
||||
name: 'ping',
|
||||
description: 'Replies with Pong!',
|
||||
},
|
||||
];
|
||||
|
||||
const rest = new REST({ version: '10' }).setToken(TOKEN);
|
||||
|
||||
try {
|
||||
console.log('Started refreshing application (/) commands.');
|
||||
|
||||
await rest.put(
|
||||
Routes.applicationCommands(CLIENT_ID),
|
||||
{ body: commands }
|
||||
);
|
||||
|
||||
console.log('Successfully reloaded application (/) commands.');
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user