diff --git a/README.md b/README.md index a1d97f0..7df29c6 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,24 @@ Le bot utilise `winston` pour le logging avec rotation automatique des fichiers Pour personnaliser la configuration des logs, vous pouvez modifier le fichier `logger` dans le code source, en particulier les options `filename`, `maxSize`, `maxFiles`, et `zippedArchive` dans le transport `DailyRotateFile`. +### Désactivation de l’enregistrement des logs avec Winston + +Par défaut, Mr_BOT utilise Winston pour afficher les logs dans la console **et** les enregistrer dans des fichiers avec rotation automatique. +Si vous souhaitez que les logs soient uniquement affichés dans la console (et ne soient plus enregistrés dans des fichiers), il vous suffit de modifier la configuration du logger. + +**Exemple :** + +Dans le fichier `utils/logger.js`, remplacez la section `transports` par : + +```javascript +transports: [ + new winston.transports.Console() +], +``` + +Ainsi, Winston n’utilisera plus le transport de fichiers et n’enregistrera plus les logs sur le disque. +Seuls les logs affichés dans la console seront visibles. + ## API utilisées - [Klipy API](https://docs.klipy.com/getting-started) – Utilisée pour envoyer des GIFs directement dans les canaux Discord. diff --git a/commands/admin/clear.js b/commands/admin/clear.js index 3225af6..3e5fc6c 100644 --- a/commands/admin/clear.js +++ b/commands/admin/clear.js @@ -1,3 +1,4 @@ +import logger from "../../utils/logger.js"; import { PermissionsBitField } from "discord.js"; export const command = { @@ -26,7 +27,7 @@ export const command = { }) .catch(err => message.channel.send(err)); } catch (error) { - console.error(error); + logger.error(error); message.channel.send(`Impossible de supprimer les messages ! Utiliser \`efface_complet\` à la place si vous souhaitez suprrimer tout les messages.\n\`Erreur : ${error.message}\``); } }, diff --git a/commands/admin/delete_complete.js b/commands/admin/delete_complete.js index 8a2fa0e..7d14fe6 100644 --- a/commands/admin/delete_complete.js +++ b/commands/admin/delete_complete.js @@ -1,3 +1,4 @@ +import logger from "../../utils/logger.js"; import { PermissionsBitField } from "discord.js"; export const command = { @@ -16,7 +17,7 @@ export const command = { await clonedChannel.setPosition(originalPosition); }, 15000); } catch (error) { - console.error(error); + logger.error(error); await message.channel.send(`Impossible de faire focntionner cette commande. \`Erreur : ${error.message}\``); } }, diff --git a/commands/admin/ticket-category.js b/commands/admin/ticket-category.js index 3072be9..d754bca 100644 --- a/commands/admin/ticket-category.js +++ b/commands/admin/ticket-category.js @@ -1,3 +1,4 @@ +import logger from "../../utils/logger.js"; import { ActionRowBuilder, ButtonBuilder, ButtonStyle, ChannelType, EmbedBuilder, PermissionsBitField } from "discord.js"; import { Guild } from "../../schema/schema.js"; @@ -16,7 +17,7 @@ export const command = { try { channel = await message.guild.channels.cache.get(args[0]); } catch (error) { - console.error(error); + logger.error(error); } } @@ -36,7 +37,7 @@ export const command = { await message.reply(`La catégorie de cration des ticket est maintenant sur ${channel}.`); } catch (error) { - console.error(error); + logger.error(error); await message.reply(`Impossible de créer la catégorie.`); } }, diff --git a/commands/admin/ticket-install.js b/commands/admin/ticket-install.js index 2537b46..07b2e29 100644 --- a/commands/admin/ticket-install.js +++ b/commands/admin/ticket-install.js @@ -1,3 +1,4 @@ +import logger from "../../utils/logger.js"; import { ActionRowBuilder, ButtonBuilder, ButtonStyle, ChannelType, EmbedBuilder, PermissionsBitField } from "discord.js"; export const command = { @@ -32,7 +33,7 @@ export const command = { await message.reply(`Le message de création de ticket à été mis avec succès dans ${channel}`); } catch (error) { - console.error(error); + logger.error(error); await message.reply(`Impossible de mettre le message de création de ticket dans ${channel}. Merci de vérifier si le bot à les permissions d'envoyer un message et d'intégrer des liens dans ce salon.`); } }, diff --git a/commands/general/bug.js b/commands/general/bug.js index adae6b2..e83e75f 100644 --- a/commands/general/bug.js +++ b/commands/general/bug.js @@ -1,5 +1,6 @@ import { AttachmentBuilder, Colors, EmbedBuilder, PermissionsBitField } from "discord.js"; import config from "../../config.js"; +import logger from "../../utils/logger.js"; const { ownerId } = config; export const command = { @@ -21,7 +22,7 @@ export const command = { try { owner = await message.client.users.fetch(ownerId); } catch (error) { - console.error(error); + logger.error(error); } if (!owner) return; @@ -49,7 +50,7 @@ export const command = { await message.reply("✅ Le rapport de bug à bien été envoyé.") } catch (error) { - console.error(error); + logger.error(error); await message.reply("❌ Impossible d'envoyer le rapport de bug.") } }, diff --git a/commands/general/close-ticket.js b/commands/general/close-ticket.js index d642ee3..789b133 100644 --- a/commands/general/close-ticket.js +++ b/commands/general/close-ticket.js @@ -1,5 +1,6 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import { Ticket } from "../../schema/schema.js"; +import logger from "../../utils/logger.js"; export const command = { name: "fermer", @@ -18,7 +19,7 @@ export const command = { return await message.reply(`Désolé ! Ceci n'est pas votre canal de ticket. Veuillez exécuter cette commande dans votre canal de ticket pour fermer le ticket.`); } - if (t) await t.destroy().catch(e => console.log(e)); + if (t) await t.destroy().catch(e => logger.error(e)); await message.reply(`Fermeture du ticket et supression du salon `) setTimeout(async () => { await message.channel.delete(); diff --git a/commands/general/help-nsfw.js b/commands/general/help-nsfw.js index 716705d..e3851f5 100644 --- a/commands/general/help-nsfw.js +++ b/commands/general/help-nsfw.js @@ -1,5 +1,6 @@ import { Colors, EmbedBuilder, PermissionsBitField, ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js"; import config from "../../config.js"; +import logger from "../../utils/logger.js"; const { prefix } = config; @@ -90,7 +91,7 @@ export const command = { }); } } catch (e) { - console.error(e); + logger.error(e); } }, }; diff --git a/commands/general/help.js b/commands/general/help.js index 59d386e..b16da9e 100644 --- a/commands/general/help.js +++ b/commands/general/help.js @@ -1,5 +1,6 @@ import { Colors, EmbedBuilder, PermissionsBitField, ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js"; import config from "../../config.js"; +import logger from "../../utils/logger.js"; const { prefix } = config; @@ -89,7 +90,7 @@ export const command = { }); } } catch (e) { - console.error(e); + logger.error(e); } }, }; diff --git a/commands/general/idea.js b/commands/general/idea.js index 7fa08c3..0494e63 100644 --- a/commands/general/idea.js +++ b/commands/general/idea.js @@ -1,5 +1,6 @@ import { AttachmentBuilder, Colors, EmbedBuilder, PermissionsBitField } from "discord.js"; import config from "../../config.js"; +import logger from "../../utils/logger.js"; const { ownerId } = config; export const command = { @@ -22,7 +23,7 @@ export const command = { try { owner = await message.client.users.fetch(ownerId); } catch (error) { - console.error(error); + logger.error(error); } if (!owner) return; @@ -50,7 +51,7 @@ export const command = { await message.reply("✅ L'idée à bien été envoyé.") } catch (error) { - console.error(error); + logger.error(error); await message.reply("❌ Impossible d'envoyer l'idée.") } }, diff --git a/commands/general/ping.js b/commands/general/ping.js index 064928f..32adc7b 100644 --- a/commands/general/ping.js +++ b/commands/general/ping.js @@ -1,4 +1,5 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; +import logger from "../../utils/logger.js"; export const command = { name: "ping", @@ -19,7 +20,7 @@ export const command = { embeds: [embed] }); } catch (e) { - console.error(e); + logger.error(e); } }, }; diff --git a/commands/info/avatar.js b/commands/info/avatar.js index c9c0317..41ca467 100644 --- a/commands/info/avatar.js +++ b/commands/info/avatar.js @@ -1,4 +1,5 @@ import { ChannelType, EmbedBuilder, PermissionsBitField } from "discord.js"; +import logger from "../../utils/logger.js"; export const command = { name: "avatar", @@ -23,7 +24,7 @@ export const command = { embeds: [embed], }) } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/info/info-bot.js b/commands/info/info-bot.js index 040d660..815aedf 100644 --- a/commands/info/info-bot.js +++ b/commands/info/info-bot.js @@ -1,5 +1,6 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import config from "../../config.js"; +import logger from "../../utils/logger.js"; const { websiteURL, githubURL, supportServerURL } = config; export const command = { @@ -25,7 +26,7 @@ export const command = { embeds: [embed], }) } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/info/info-serv.js b/commands/info/info-serv.js index aea8ff8..a608116 100644 --- a/commands/info/info-serv.js +++ b/commands/info/info-serv.js @@ -1,4 +1,5 @@ import { ChannelType, EmbedBuilder, PermissionsBitField } from "discord.js"; +import logger from "../../utils/logger.js"; export const command = { name: "info-serv", @@ -57,7 +58,7 @@ export const command = { embeds: [embed], }) } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/info/user.js b/commands/info/user.js index 6e52283..91ae325 100644 --- a/commands/info/user.js +++ b/commands/info/user.js @@ -1,4 +1,5 @@ import { ChannelType, EmbedBuilder, PermissionsBitField } from "discord.js"; +import logger from "../../utils/logger.js"; export const command = { name: "info-utilisateur", @@ -42,7 +43,7 @@ export const command = { embeds: [embed], }) } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/ahegao.js b/commands/nsfw/ahegao.js index b24d4e6..769863e 100644 --- a/commands/nsfw/ahegao.js +++ b/commands/nsfw/ahegao.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "ahegao", @@ -26,7 +27,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/blowjob.js b/commands/nsfw/blowjob.js index c5c52f6..de32b85 100644 --- a/commands/nsfw/blowjob.js +++ b/commands/nsfw/blowjob.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "suce", @@ -30,7 +31,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/blowjob_pic.js b/commands/nsfw/blowjob_pic.js index 9223980..a8842a8 100644 --- a/commands/nsfw/blowjob_pic.js +++ b/commands/nsfw/blowjob_pic.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "suce_img", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/boobs.js b/commands/nsfw/boobs.js index 58dbe68..a7c0c5e 100644 --- a/commands/nsfw/boobs.js +++ b/commands/nsfw/boobs.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "tetons", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/cum.js b/commands/nsfw/cum.js index cd4edfe..1830b66 100644 --- a/commands/nsfw/cum.js +++ b/commands/nsfw/cum.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "cum_gif", @@ -30,7 +31,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/cum_pic.js b/commands/nsfw/cum_pic.js index 08602ad..c5c36ec 100644 --- a/commands/nsfw/cum_pic.js +++ b/commands/nsfw/cum_pic.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "cum_img", @@ -30,7 +31,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/feet.js b/commands/nsfw/feet.js index 669b269..a63259b 100644 --- a/commands/nsfw/feet.js +++ b/commands/nsfw/feet.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "feet_gif", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/feet_human.js b/commands/nsfw/feet_human.js index f43b246..074661b 100644 --- a/commands/nsfw/feet_human.js +++ b/commands/nsfw/feet_human.js @@ -2,6 +2,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import { getRedditToken } from "../../utils/redditTokenRenew.js"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "feet_humain", @@ -60,7 +61,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/feet_pic.js b/commands/nsfw/feet_pic.js index 2cf79c1..ca13fd4 100644 --- a/commands/nsfw/feet_pic.js +++ b/commands/nsfw/feet_pic.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "feet_pic", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/femboy.js b/commands/nsfw/femboy.js index 6f69f93..81be1dd 100644 --- a/commands/nsfw/femboy.js +++ b/commands/nsfw/femboy.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "femboy", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/femdom.js b/commands/nsfw/femdom.js index c3c3ec4..2996cb9 100644 --- a/commands/nsfw/femdom.js +++ b/commands/nsfw/femdom.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "femdom", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/futa.js b/commands/nsfw/futa.js index 699a036..763103e 100644 --- a/commands/nsfw/futa.js +++ b/commands/nsfw/futa.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "futa", @@ -30,7 +31,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/goth.js b/commands/nsfw/goth.js index 61a04fa..47af9ee 100644 --- a/commands/nsfw/goth.js +++ b/commands/nsfw/goth.js @@ -2,6 +2,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import { getRedditToken } from "../../utils/redditTokenRenew.js"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "goth_nsfw", @@ -67,7 +68,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/hentai.js b/commands/nsfw/hentai.js index 72a508c..0232abf 100644 --- a/commands/nsfw/hentai.js +++ b/commands/nsfw/hentai.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "hentai", @@ -26,7 +27,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/kitsune.js b/commands/nsfw/kitsune.js index 39dfec0..f387aa1 100644 --- a/commands/nsfw/kitsune.js +++ b/commands/nsfw/kitsune.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "kitsune", @@ -26,7 +27,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/kuni.js b/commands/nsfw/kuni.js index 987cae4..6e4b1f7 100644 --- a/commands/nsfw/kuni.js +++ b/commands/nsfw/kuni.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "cuni", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/neko.js b/commands/nsfw/neko.js index 57f018f..2fc7a73 100644 --- a/commands/nsfw/neko.js +++ b/commands/nsfw/neko.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "neko_gif", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/neko_pic.js b/commands/nsfw/neko_pic.js index abf8fea..f58e6bb 100644 --- a/commands/nsfw/neko_pic.js +++ b/commands/nsfw/neko_pic.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "neko_img", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/orgasm.js b/commands/nsfw/orgasm.js index c13fcd1..5f43000 100644 --- a/commands/nsfw/orgasm.js +++ b/commands/nsfw/orgasm.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "orgasm", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/pantyhose.js b/commands/nsfw/pantyhose.js index 27a4e3b..ac0c195 100644 --- a/commands/nsfw/pantyhose.js +++ b/commands/nsfw/pantyhose.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "pantyhose", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/petplay.js b/commands/nsfw/petplay.js index 5554422..76cbc62 100644 --- a/commands/nsfw/petplay.js +++ b/commands/nsfw/petplay.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "petplay", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/pussy.js b/commands/nsfw/pussy.js index 4aa6f3c..4ca5943 100644 --- a/commands/nsfw/pussy.js +++ b/commands/nsfw/pussy.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "chatte_gif", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/pussy_pic.js b/commands/nsfw/pussy_pic.js index 235c042..8f6591f 100644 --- a/commands/nsfw/pussy_pic.js +++ b/commands/nsfw/pussy_pic.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "chatte_img", @@ -27,7 +28,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/slime.js b/commands/nsfw/slime.js index 1b16b00..7a4408a 100644 --- a/commands/nsfw/slime.js +++ b/commands/nsfw/slime.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "slime", @@ -26,7 +27,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/tentacle.js b/commands/nsfw/tentacle.js index 7bcd98c..08d87cf 100644 --- a/commands/nsfw/tentacle.js +++ b/commands/nsfw/tentacle.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "tentacle", @@ -26,7 +27,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/yaoi.js b/commands/nsfw/yaoi.js index d128200..2df1eb7 100644 --- a/commands/nsfw/yaoi.js +++ b/commands/nsfw/yaoi.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "yaoi", @@ -29,7 +30,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/nsfw/yuri.js b/commands/nsfw/yuri.js index 20c5711..0c81131 100644 --- a/commands/nsfw/yuri.js +++ b/commands/nsfw/yuri.js @@ -1,6 +1,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "yuri", @@ -26,7 +27,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/others/cat.js b/commands/others/cat.js index 265b989..7a68e9d 100644 --- a/commands/others/cat.js +++ b/commands/others/cat.js @@ -1,5 +1,6 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; +import logger from "../../utils/logger.js"; export const command = { name: "chat", @@ -21,7 +22,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/others/goth_sfw.js b/commands/others/goth_sfw.js index 905aafb..6a9a541 100644 --- a/commands/others/goth_sfw.js +++ b/commands/others/goth_sfw.js @@ -2,6 +2,7 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import { getRedditToken } from "../../utils/redditTokenRenew.js"; import "dotenv/config"; +import logger from "../../utils/logger.js"; export const command = { name: "goth_sfw", @@ -59,7 +60,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/others/panda.js b/commands/others/panda.js index fc7ee2c..ef77806 100644 --- a/commands/others/panda.js +++ b/commands/others/panda.js @@ -1,5 +1,6 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; +import logger from "../../utils/logger.js"; export const command = { name: "panda", @@ -20,7 +21,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/roleplay/blush.js b/commands/roleplay/blush.js index 819421c..d23e1b5 100644 --- a/commands/roleplay/blush.js +++ b/commands/roleplay/blush.js @@ -1,5 +1,6 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; +import logger from "../../utils/logger.js"; export const command = { name: "rougit", @@ -21,7 +22,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/roleplay/calin.js b/commands/roleplay/calin.js index 9e79d09..174f28b 100644 --- a/commands/roleplay/calin.js +++ b/commands/roleplay/calin.js @@ -1,5 +1,6 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; +import logger from "../../utils/logger.js"; export const command = { name: "calin", @@ -23,7 +24,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/roleplay/crying.js b/commands/roleplay/crying.js index c2c6535..9f8b1f9 100644 --- a/commands/roleplay/crying.js +++ b/commands/roleplay/crying.js @@ -1,5 +1,6 @@ import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; +import logger from "../../utils/logger.js"; export const command = { name: "pleure", @@ -23,7 +24,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/roleplay/good_night.js b/commands/roleplay/good_night.js index a28e94d..3faad02 100644 --- a/commands/roleplay/good_night.js +++ b/commands/roleplay/good_night.js @@ -1,3 +1,4 @@ +import logger from "../../utils/logger.js"; import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; import "dotenv/config"; @@ -28,7 +29,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/roleplay/kissing.js b/commands/roleplay/kissing.js index 303421c..75cdd97 100644 --- a/commands/roleplay/kissing.js +++ b/commands/roleplay/kissing.js @@ -1,3 +1,4 @@ +import logger from "../../utils/logger.js"; import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; @@ -24,7 +25,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/roleplay/neko.js b/commands/roleplay/neko.js index 34a344d..eedaa9f 100644 --- a/commands/roleplay/neko.js +++ b/commands/roleplay/neko.js @@ -1,3 +1,4 @@ +import logger from "../../utils/logger.js"; import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; @@ -20,7 +21,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/roleplay/slap.js b/commands/roleplay/slap.js index d53ce4b..56a4f24 100644 --- a/commands/roleplay/slap.js +++ b/commands/roleplay/slap.js @@ -1,3 +1,4 @@ +import logger from "../../utils/logger.js"; import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; @@ -24,7 +25,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/roleplay/tapote.js b/commands/roleplay/tapote.js index e777256..a39b115 100644 --- a/commands/roleplay/tapote.js +++ b/commands/roleplay/tapote.js @@ -1,3 +1,4 @@ +import logger from "../../utils/logger.js"; import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; @@ -23,7 +24,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/commands/roleplay/wave.js b/commands/roleplay/wave.js index b5c6eae..3f96d68 100644 --- a/commands/roleplay/wave.js +++ b/commands/roleplay/wave.js @@ -1,3 +1,4 @@ +import logger from "../../utils/logger.js"; import { EmbedBuilder, PermissionsBitField } from "discord.js"; import fetch from "node-fetch"; @@ -21,7 +22,7 @@ export const command = { embeds: [embed], }); } catch (error) { - console.error(error); + logger.error(error); } }, }; diff --git a/events/client/ready.js b/events/client/ready.js index 9dec66e..137f853 100644 --- a/events/client/ready.js +++ b/events/client/ready.js @@ -2,12 +2,13 @@ import {ActivityType, Events} from "discord.js"; import pkgjson from "../../package.json" with { type: "json" }; import "dotenv/config"; import https from "https"; +import logger from "../../utils/logger.js"; export const event = { name: Events.ClientReady, once: true, async execute(client) { - console.log(`Prêt ? Le bot est connecté en tant que ${client.user.tag} ( ${client.user.id} )`); + logger.info(`Prêt ? Le bot est connecté en tant que ${client.user.tag} ( ${client.user.id} )`); const activitees = [ "m*aide", "m*aide_nsfw", @@ -22,7 +23,7 @@ export const event = { }, 12000); const uptimeKumaUrl = process.env.UPTIME_KUMA_URL; if (!uptimeKumaUrl) { - console.error("URL Uptime Kuma non définie dans le fichier .env"); + logger.error("URL Uptime Kuma non définie dans le fichier .env"); return; } const makePushRequest = () => { @@ -32,10 +33,10 @@ export const event = { data += chunk; }); res.on("end", () => { - //console.log("Réponse de Uptime Kuma:", data); + //logger.info("Réponse de Uptime Kuma:", data); }); }).on("error", (err) => { - console.error("Erreur lors de la requête Uptime Kuma:", err.message); + logger.error("Erreur lors de la requête Uptime Kuma: " + err.message); }); }; makePushRequest(); diff --git a/events/guild/interactionCreate.js b/events/guild/interactionCreate.js index f3cb97a..f09889f 100644 --- a/events/guild/interactionCreate.js +++ b/events/guild/interactionCreate.js @@ -1,5 +1,6 @@ import { Events } from "discord.js"; import handleButton from "../../handler/buttonhandler.js"; +import logger from "../../utils/logger.js"; export const event = { name: Events.InteractionCreate, @@ -8,7 +9,7 @@ export const event = { try { await handleButton(interaction); } catch (error) { - console.error(error); + logger.error(error); } } }, diff --git a/events/guild/messageCreate.js b/events/guild/messageCreate.js index 9740394..7ae73c9 100644 --- a/events/guild/messageCreate.js +++ b/events/guild/messageCreate.js @@ -1,6 +1,5 @@ import { ChannelType, Collection, Events, PermissionsBitField } from "discord.js"; -import winston from "winston"; -import "winston-daily-rotate-file"; +import logger from "../../utils/logger.js"; import { Guild } from "../../schema/schema.js"; import config from "../../config.js"; import PermissionsFR from "../../permissionsFR.js"; @@ -8,24 +7,6 @@ import PermissionsFR from "../../permissionsFR.js"; const { prefix } = config; const cooldowns = new Collection(); -const logger = winston.createLogger({ - level: "info", - format: winston.format.combine( - winston.format.timestamp(), - winston.format.printf(({ timestamp, level, message }) => `${timestamp} [${level.toUpperCase()}]: ${message}`) - ), - transports: [ - new winston.transports.Console(), - new winston.transports.DailyRotateFile({ - filename: "logs/Mr_BOT-%DATE%.log", - datePattern: "DD-MM-YYYY", - maxSize: "20m", - maxFiles: "180d", - zippedArchive: true, - }), - ], -}); - export const event = { name: Events.MessageCreate, once: false, diff --git a/handler/buttonhandler.js b/handler/buttonhandler.js index 42b7d8c..f846f01 100644 --- a/handler/buttonhandler.js +++ b/handler/buttonhandler.js @@ -1,5 +1,6 @@ import { ChannelType, PermissionFlagsBits, ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } from "discord.js"; import { Guild, Ticket } from "../schema/schema.js"; +import logger from "../utils/logger.js"; const handleButton = async (interaction) => { if (!interaction.isButton()) return; @@ -60,7 +61,7 @@ const handleButton = async (interaction) => { }); } catch (error) { - console.error(error); + logger.error(error); } } @@ -137,7 +138,7 @@ const handleButton = async (interaction) => { components: [row], }); } catch (error) { - console.error(error); + logger.error(error); if (!interaction.deferred && !interaction.replied) { await interaction.reply({ content: "Une erreur est survenue lors de la manipulation de ce bouton.", @@ -220,7 +221,7 @@ const handleButton = async (interaction) => { components: [row], }); } catch (error) { - console.error(error); + logger.error(error); if (!interaction.deferred && !interaction.replied) { await interaction.reply({ content: "Une erreur est survenue lors de la manipulation de ce bouton.", diff --git a/index.js b/index.js index 69a74bd..eb37d82 100644 --- a/index.js +++ b/index.js @@ -2,9 +2,10 @@ import "dotenv/config"; import fs from "node:fs"; import path, { dirname } from "node:path"; import { fileURLToPath } from "url"; -const __dirname = dirname(fileURLToPath(import.meta.url)); - import { Client, Collection, GatewayIntentBits } from "discord.js"; +import logger from "./utils/logger.js"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMembers] @@ -23,9 +24,9 @@ for (const folder of commandFolers) { if ("name" in command && "execute" in command) { client.commands.set(command.name, command); - console.log(`✔️ La commande suivante à été chargé : ${command.name}`); + logger.info(`✔️ La commande suivante à été chargé : ${command.name}`); } else { - console.log(`[ATTENTION] La commande "./commands/${folder}/${file}" manque un "name" ou une propriété "execute"`); + logger.info(`[ATTENTION] La commande "./commands/${folder}/${file}" manque un "name" ou une propriété "execute"`); } } } @@ -44,8 +45,15 @@ for (const folder of eventFolers) { client.on(event.name, (...args) => event.execute(...args)); } - console.log(`📣 L'évènement suivant à été chargé : ${event.name}`) + logger.info(`📣 L'évènement suivant à été chargé : ${event.name}`) } } +process.on("uncaughtException", (err) => { + logger.error(`Uncaught Exception: ${err.stack || err}`); +}); +process.on("unhandledRejection", (reason) => { + logger.error(`Unhandled Rejection: ${reason}`); +}); + client.login(process.env.BOT_TOKEN); diff --git a/package.json b/package.json index 6fa5531..408874c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mrbot", - "version": "3.1.5", + "version": "3.2.0", "type": "module", "description": "Mr Bot", "main": "index.js", diff --git a/schema/schema.js b/schema/schema.js index d42c7db..a617052 100644 --- a/schema/schema.js +++ b/schema/schema.js @@ -1,5 +1,6 @@ import { DataTypes, Sequelize } from "sequelize"; import "dotenv/config"; +import logger from "../utils/logger.js"; const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USERNAME, process.env.DB_PASSWORD, { dialect: process.env.DB_DIALECT, @@ -10,9 +11,9 @@ const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USERNAME, pr try { await sequelize.authenticate(); - console.log("Connection à la bdd réussi !"); + logger.info("Connection à la bdd réussi !"); } catch (error) { - console.log("Connection à la base de donné en échec"); + logger.info("Connection à la base de donné en échec"); } const Guild = sequelize.define("Guild", { diff --git a/utils/logger.js b/utils/logger.js new file mode 100644 index 0000000..92fd7f9 --- /dev/null +++ b/utils/logger.js @@ -0,0 +1,22 @@ +import winston from "winston"; +import "winston-daily-rotate-file"; + +const logger = winston.createLogger({ + level: "info", + format: winston.format.combine( + winston.format.timestamp(), + winston.format.printf(({ timestamp, level, message }) => `${timestamp} [${level.toUpperCase()}]: ${message}`) + ), + transports: [ + new winston.transports.Console(), + new winston.transports.DailyRotateFile({ + filename: "logs/Mr_BOT-%DATE%.log", + datePattern: "DD-MM-YYYY", + maxSize: "20m", + maxFiles: "180d", + zippedArchive: true, + }), + ], +}); + +export default logger;