mirror of
https://github.com/arthur-pbty/LazyBot.git
synced 2026-06-03 15:07:29 +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}`);
|
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);
|
client.login(process.env.BOT_TOKEN);
|
||||||
|
|
||||||
module.exports = client;
|
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(() => {
|
.catch(() => {
|
||||||
console.log("Impossible de récupérer le lien du bot.");
|
console.log("Impossible de récupérer le lien du bot.");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -114,6 +114,41 @@ app.get("/api/guilds", (req, res) => {
|
|||||||
res.json({ url });
|
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);
|
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