{"id":15021665,"url":"https://github.com/qquentinv/thegoodbot","last_synced_at":"2025-10-19T22:55:06.606Z","repository":{"id":253165836,"uuid":"842665169","full_name":"qquentinv/TheGoodBot","owner":"qquentinv","description":"The Good Discord Bot","archived":false,"fork":false,"pushed_at":"2024-10-13T16:56:23.000Z","size":220,"stargazers_count":3,"open_issues_count":5,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-19T06:44:01.236Z","etag":null,"topics":["bot","discord","discord-bot","discord-js"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qquentinv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-14T20:10:50.000Z","updated_at":"2024-10-13T16:56:26.000Z","dependencies_parsed_at":"2024-08-14T22:41:33.870Z","dependency_job_id":"1bf59d25-e359-4529-b33f-3716fadd6c89","html_url":"https://github.com/qquentinv/TheGoodBot","commit_stats":{"total_commits":82,"total_committers":5,"mean_commits":16.4,"dds":"0.35365853658536583","last_synced_commit":"fdcb7af6affd6886b55eff8d74213485a51318b3"},"previous_names":["qquentinv/thegoodbot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qquentinv%2FTheGoodBot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qquentinv%2FTheGoodBot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qquentinv%2FTheGoodBot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qquentinv%2FTheGoodBot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qquentinv","download_url":"https://codeload.github.com/qquentinv/TheGoodBot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238909243,"owners_count":19550836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","discord","discord-bot","discord-js"],"created_at":"2024-09-24T19:56:52.844Z","updated_at":"2025-10-19T22:55:06.505Z","avatar_url":"https://github.com/qquentinv.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bot discord\n\n## Sommaire\n\n- [Description](#description)\n- [Commandes](#commandes)\n- [Pré-requis](#pré-requis)\n  - [Logiciel](#logiciel)\n  - [Dépendances](#dépendances)\n  - [Base de données](#base-de-données)\n- [Configuration](#configuration)\n- [Lancer le projet](#lancer-le-projet)\n- [Réglages](#réglages)\n- [Développement](#développement)\n- [Tests](#tests)\n- [Déploiement](#déploiement)\n- [Ressources](#ressources)\n\n## Description\n\nCe projet a pour but de créer un bot discord qui a les fonctionnalités suivantes:\n\n- Lancer des alertes de stream twitch\n- Lancer des reminders quand les personnes n'ont pas stream depuis un certain temps\n- Crée un word à partir d'un channel grâce à la commande !word\n\n## Commandes\n\n- /help\n- /contributor (list all GH Contributor)\n- /streamers (list all stream we follow)\n- /add (add a stream to follow)\n- /delete (unfollow a stream)\n- /laststream (date of the last stream)\n- /word (generate docx)\n\n## Pré-requis\n\n### Logiciel\n\n- Installer nodejs\n- Installer npm\n\n### Dépendances\n\nPour lancer le projet, il faut installer les dépendances :\n\n\u003e `npm i`\n\n### Base de données\n\nPour mettre en place la base de données, il faut lancer la commande suivant :\n\n\u003e `npm run migrate`\n\nNotre base de données fonctionne avec un système de migration.\nPour chaque changement que vous voulez faire dans notre base de données, il faut créer un fichier `XXXX-description.sql` avec `XXXX` qui correspond au nombre qui vont déterminer l'ordre d'exécution.\n\n## Configuration\n\nPour configurer le bot sur votre serveur discord, il vous faudra dupliquer le fichier `config-template.json` et le renommer en `config.json`.\nEnsuite il vous faudra remplacer les valeurs de chaque variable avec les votres.\n\n## Lancer le projet\n\nIl suffit de lancer la commande suivante avec l'environnement de chargé :\n\n\u003e `npm start`\n\n## Réglages\n\n### Discord\n\nLe bot nécessite des configurations sur la [plateforme de développement de discord](https://discord.com/developers/applications).\nC'est notamment ici que se passe la création de l'application, la modification du nom, de l'image et la génération du token.\n\n### Twitch\n\nPour effectuer des appels API vers Twitch, il faut créer une application via le lien suivant [https://dev.twitch.tv/console/apps](https://dev.twitch.tv/console/apps).\nAprès la création de votre application, récupérez le \"client id\" et générez un secret.\n\n## Développement\n\nPour lancer TheGoodBot, il suffit d'exécuter la commande. Grâce au paramètre `--watch`, le projet se relancera à chaque modification apportée au code.\n\n\u003e `npm run debug`\n\nNote : nous utilisons `node:sqlite` qui est fonctionnalité expérimentale de Node.js et qui peut changer à tout moment.\n\n### Migrer le fichier `config.json`\n\nDepuis la mise en place de la BDD Sqlite, l'utilisation d'un fichier `.json` pour la configuration n'est plus nécessaire. Vous pouvez migrer vers un `.env.local` avec la commande `node .bin/convert-json-config-to-env.js`.\n\n## Tests\n\nDes tests unitaires sur certaines parties du code sont présents dans le dossier `tests` à la racine du projet.\nPour lancer les tests, il suffit d'éxécuter la commmande suivante :\n\n\u003e `npm run test`\n\n## Déploiement\n\nCe bot peut être déployé sur un VPS ou encore un raspberry.\nPour cela, j'utilise le package `pm2`. il permet de lancer des applications node en tant que service unix.\nOn peut le lancer grâce à la commande :\n\n\u003e `pm2 start npm --name \"TheGoodBot\" -- start`\n\nOn peut consulter les différentes applications en cours de lancement grâce à la commande :\n\n\u003e `pm2 status`\n\nOn peut aussi relancer facilement le serveur grâce à la commande :\n\n\u003e `pm2 restart \"TheGoodBot\"`\n\nOn a même accès à un tableau de bord qui contient notamment les statistiques de performance et les logs avec la commande :\n\n\u003e `pm2 dash`\n\nPour obtenir seulement les logs, utiliser :\n\n\u003e `pm2 log`\n\nPour terminer, on peut arrêter le bot grâce à la commande :\n\n\u003e `pm2 stop \"TheGoodBot\"`\n\n## Ressources\n\n- [Discord.js](https://discordjs.guide/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqquentinv%2Fthegoodbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqquentinv%2Fthegoodbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqquentinv%2Fthegoodbot/lists"}