mirror of
https://github.com/arthur-pbty/LazyBot.git
synced 2026-06-06 22:41:40 +02:00
update Oauth discord & add good bye message
This commit is contained in:
+194
-107
@@ -75,7 +75,7 @@ app.get("/auth/discord/callback", async (req, res) => {
|
||||
req.session.guilds = guilds;
|
||||
|
||||
// Rediriger vers la page HTML
|
||||
res.redirect("/welcome.html");
|
||||
res.redirect("/dashboard");
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
res.send("Erreur lors de la connexion Discord !");
|
||||
@@ -91,6 +91,7 @@ app.get("/api/user", (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
app.get("/api/guilds", (req, res) => {
|
||||
const userGuilds = req.session.guilds; // toutes les guilds de l'utilisateur
|
||||
if (!userGuilds) return res.status(401).json({ error: "Utilisateur non connecté" });
|
||||
@@ -105,115 +106,201 @@ app.get("/api/guilds", (req, res) => {
|
||||
return hasAdmin && botHere;
|
||||
});
|
||||
|
||||
app.get("/invite-bot", (req, res) => {
|
||||
const clientId = process.env.CLIENT_ID;
|
||||
const redirectUri = encodeURIComponent(process.env.REDIRECT_URI);
|
||||
const permissions = 8; // Permissions administrateur
|
||||
const scope = encodeURIComponent("bot guilds applications.commands");
|
||||
|
||||
const url = `https://discord.com/oauth2/authorize?client_id=${clientId}&permissions=${permissions}&scope=${scope}&redirect_uri=${redirectUri}&response_type=code`;
|
||||
|
||||
// Tu peux juste renvoyer le lien
|
||||
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"));
|
||||
});
|
||||
|
||||
// API pour sauvegarder la configuration de bienvenue
|
||||
app.post("/api/bot/save-welcome-config", express.json(), (req, res) => {
|
||||
const { guildId, channelId, welcomeEnabled, welcomeMessage } = req.body;
|
||||
|
||||
if (!req.session.guilds) {
|
||||
return res.status(401).json({ success: false });
|
||||
}
|
||||
|
||||
const isAdmin = req.session.guilds.find(
|
||||
g => g.id === guildId && (BigInt(g.permissions) & 0x8n) === 0x8n
|
||||
);
|
||||
|
||||
if (!isAdmin) {
|
||||
return res.status(403).json({ success: false });
|
||||
}
|
||||
|
||||
db.run(
|
||||
`
|
||||
INSERT INTO welcome_config (guild_id, channel_id, enabled, message)
|
||||
VALUES (?, ?, ?, ?)
|
||||
ON CONFLICT(guild_id)
|
||||
DO UPDATE SET channel_id = ?, enabled = ?, message = ?
|
||||
`,
|
||||
[
|
||||
guildId,
|
||||
channelId,
|
||||
welcomeEnabled ? 1 : 0,
|
||||
welcomeMessage,
|
||||
channelId,
|
||||
welcomeEnabled ? 1 : 0,
|
||||
welcomeMessage
|
||||
],
|
||||
err => {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
return res.status(500).json({ success: false });
|
||||
}
|
||||
res.json({ success: true });
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
app.get("/api/bot/get-welcome-config/:guildId", (req, res) => {
|
||||
const { guildId } = req.params;
|
||||
|
||||
db.get(
|
||||
"SELECT enabled, channel_id, message FROM welcome_config WHERE guild_id = ?",
|
||||
[guildId],
|
||||
(err, row) => {
|
||||
if (err || !row) {
|
||||
return res.json({ enabled: false, channelId: null, message: "" });
|
||||
}
|
||||
res.json({
|
||||
enabled: !!row.enabled,
|
||||
channelId: row.channel_id,
|
||||
message: row.message
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
app.get("/api/bot/get-text-channels/:guildId", (req, res) => {
|
||||
const { guildId } = req.params;
|
||||
const guild = client.guilds.cache.get(guildId);
|
||||
if (!guild) {
|
||||
return res.status(404).json({ error: "Serveur non trouvé" });
|
||||
}
|
||||
|
||||
const channels = guild.channels.cache
|
||||
.filter(channel => channel.isTextBased())
|
||||
.map(channel => ({
|
||||
id: channel.id,
|
||||
name: channel.name
|
||||
}));
|
||||
|
||||
res.json(channels);
|
||||
});
|
||||
|
||||
res.json(validGuilds);
|
||||
});
|
||||
|
||||
|
||||
app.get("/invite-bot", (req, res) => {
|
||||
const permissions = 8; // Permissions administrateur
|
||||
|
||||
const scopes = [
|
||||
"bot",
|
||||
"applications.commands",
|
||||
"identify",
|
||||
"guilds"
|
||||
].join(" ");
|
||||
|
||||
const url =
|
||||
"https://discord.com/oauth2/authorize" +
|
||||
`?client_id=${CLIENT_ID}` +
|
||||
`&redirect_uri=${encodeURIComponent(REDIRECT_URI)}` +
|
||||
"&response_type=code" +
|
||||
`&scope=${encodeURIComponent(scopes)}` +
|
||||
`&permissions=${permissions}`;
|
||||
|
||||
// Tu peux juste renvoyer le lien
|
||||
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("/auth/discord"); // 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"));
|
||||
});
|
||||
|
||||
|
||||
// API pour sauvegarder la configuration de bienvenue
|
||||
app.post("/api/bot/save-welcome-config", express.json(), (req, res) => {
|
||||
const { guildId, channelId, welcomeEnabled, welcomeMessage } = req.body;
|
||||
|
||||
if (!req.session.guilds) {
|
||||
return res.status(401).json({ success: false });
|
||||
}
|
||||
|
||||
const isAdmin = req.session.guilds.find(
|
||||
g => g.id === guildId && (BigInt(g.permissions) & 0x8n) === 0x8n
|
||||
);
|
||||
|
||||
if (!isAdmin) {
|
||||
return res.status(403).json({ success: false });
|
||||
}
|
||||
|
||||
db.run(
|
||||
`
|
||||
INSERT INTO welcome_config (guild_id, channel_id, enabled, message)
|
||||
VALUES (?, ?, ?, ?)
|
||||
ON CONFLICT(guild_id)
|
||||
DO UPDATE SET channel_id = ?, enabled = ?, message = ?
|
||||
`,
|
||||
[
|
||||
guildId,
|
||||
channelId,
|
||||
welcomeEnabled ? 1 : 0,
|
||||
welcomeMessage,
|
||||
channelId,
|
||||
welcomeEnabled ? 1 : 0,
|
||||
welcomeMessage
|
||||
],
|
||||
err => {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
return res.status(500).json({ success: false });
|
||||
}
|
||||
res.json({ success: true });
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
app.get("/api/bot/get-welcome-config/:guildId", (req, res) => {
|
||||
const { guildId } = req.params;
|
||||
|
||||
db.get(
|
||||
"SELECT enabled, channel_id, message FROM welcome_config WHERE guild_id = ?",
|
||||
[guildId],
|
||||
(err, row) => {
|
||||
if (err || !row) {
|
||||
return res.json({ enabled: false, channelId: null, message: "" });
|
||||
}
|
||||
res.json({
|
||||
enabled: !!row.enabled,
|
||||
channelId: row.channel_id,
|
||||
message: row.message
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
app.post("/api/bot/save-goodbye-config", express.json(), (req, res) => {
|
||||
const { guildId, channelId, goodbyeEnabled, goodbyeMessage } = req.body;
|
||||
|
||||
if (!req.session.guilds) {
|
||||
return res.status(401).json({ success: false });
|
||||
}
|
||||
|
||||
const isAdmin = req.session.guilds.find(
|
||||
g => g.id === guildId && (BigInt(g.permissions) & 0x8n) === 0x8n
|
||||
);
|
||||
|
||||
if (!isAdmin) {
|
||||
return res.status(403).json({ success: false });
|
||||
}
|
||||
|
||||
db.run(
|
||||
`
|
||||
INSERT INTO goodbye_config (guild_id, channel_id, enabled, message)
|
||||
VALUES (?, ?, ?, ?)
|
||||
ON CONFLICT(guild_id)
|
||||
DO UPDATE SET channel_id = ?, enabled = ?, message = ?
|
||||
`,
|
||||
[
|
||||
guildId,
|
||||
channelId,
|
||||
goodbyeEnabled ? 1 : 0,
|
||||
goodbyeMessage,
|
||||
channelId,
|
||||
goodbyeEnabled ? 1 : 0,
|
||||
goodbyeMessage
|
||||
],
|
||||
err => {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
return res.status(500).json({ success: false });
|
||||
}
|
||||
res.json({ success: true });
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
app.get("/api/bot/get-goodbye-config/:guildId", (req, res) => {
|
||||
const { guildId } = req.params;
|
||||
|
||||
db.get(
|
||||
"SELECT enabled, channel_id, message FROM goodbye_config WHERE guild_id = ?",
|
||||
[guildId],
|
||||
(err, row) => {
|
||||
if (err || !row) {
|
||||
return res.json({ enabled: false, channelId: null, message: "" });
|
||||
}
|
||||
res.json({
|
||||
enabled: !!row.enabled,
|
||||
channelId: row.channel_id,
|
||||
message: row.message
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
app.get("/api/bot/get-text-channels/:guildId", (req, res) => {
|
||||
const { guildId } = req.params;
|
||||
const guild = client.guilds.cache.get(guildId);
|
||||
if (!guild) {
|
||||
return res.status(404).json({ error: "Serveur non trouvé" });
|
||||
}
|
||||
|
||||
const channels = guild.channels.cache
|
||||
.filter(channel => channel.isTextBased())
|
||||
.map(channel => ({
|
||||
id: channel.id,
|
||||
name: channel.name
|
||||
}));
|
||||
|
||||
res.json(channels);
|
||||
});
|
||||
|
||||
|
||||
app.get("/dashboard", (req, res) => {
|
||||
if (!req.session.user) {
|
||||
return res.redirect("/auth/discord");
|
||||
}
|
||||
|
||||
res.sendFile(path.join(__dirname, "public", "dashboard.html"));
|
||||
});
|
||||
|
||||
|
||||
// --- Lancement du serveur ---
|
||||
app.listen(PORT, () => console.log(`Serveur lancé sur http://localhost:${PORT}`));
|
||||
|
||||
Reference in New Issue
Block a user