{"id":20763284,"url":"https://github.com/tinspham209/discord-bot","last_synced_at":"2025-04-30T07:50:12.094Z","repository":{"id":42662450,"uuid":"290114486","full_name":"tinspham209/discord-bot","owner":"tinspham209","description":"Discord Moderation \u0026 Music BOT Application","archived":false,"fork":false,"pushed_at":"2023-12-15T11:44:35.000Z","size":98,"stargazers_count":0,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-30T07:50:04.235Z","etag":null,"topics":["discord-bot","discordjs","ffmpeg-static","momentjs","music-bot-discord","nodejs","opusscript","webhooks","ytdl-core"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/tinspham209.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":"2020-08-25T04:41:14.000Z","updated_at":"2020-10-13T17:26:01.000Z","dependencies_parsed_at":"2024-11-17T10:43:44.123Z","dependency_job_id":"04b7a85f-13e5-4023-9e83-580631deb889","html_url":"https://github.com/tinspham209/discord-bot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinspham209%2Fdiscord-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinspham209%2Fdiscord-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinspham209%2Fdiscord-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinspham209%2Fdiscord-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tinspham209","download_url":"https://codeload.github.com/tinspham209/discord-bot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251666227,"owners_count":21624291,"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":["discord-bot","discordjs","ffmpeg-static","momentjs","music-bot-discord","nodejs","opusscript","webhooks","ytdl-core"],"created_at":"2024-11-17T10:43:39.670Z","updated_at":"2025-04-30T07:50:12.065Z","avatar_url":"https://github.com/tinspham209.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mini Project: Discord Moderation \u0026 Music BOT\n\n## Date: 25 - Aug - 2020\n\n### Tech-Stack\n\n- NodeJS v14.7\n- Discord.js v12\n- dotenv : store variable `process.env.variable_name`\n- ytdl-core : Convert youtube link to audio\n- opusscript\n- ffmpeg-static : Need FFMPEG For Any Music Bot To Work\n- moment : time format\n- ms : convert string seconds to number: Input: 100s \u003e `numbers`\n\n### Screenshot\n\n\u003cimg src=\"https://i.imgur.com/vSPWEkd.png\" /\u003e\n\n### Functions\n\n**MODERATION BOT:**\n\n1. Kick : `$kick @[user_name] [reason-reason]`\n\n- \\$kick @Rafen spamming\n\n2. Ban : `$ban @[user_name] [reason-reason]`\n\n- \\$ban @Rafen spamming\n\n3. Soft ban : `$softban @[user_name] [reason-reason]` - default: 1 day\n\n- \\$softban @Rafen spamming\n\n4. Temp ban: `$tempban @[user_name] [reason-reason] [seconds]s`\n\n- \\$tempban @Rafen Breaking-rule 200s\n\n5. Mute : `$mute @[user_name] [reason-reason] [seconds]s`\n\n- \\$mute @Rafen spamming 100s\n\n6. UnMute: `$unmute @[user_name] [reason-reason]`\n\n- \\$unmute @Rafen ccc\n\n7. Reaction to set Role:\n\n- Reaction :watermelon: icon to add `Verified` role\n\n8. Send text in bot-command channel, BOT send announcements to specify channel: `$announce [text]`\n\n- \\$announce Hello everybody\n\n**MUSIC BOT:**\n\n1. Play: `$play [youtube_url]`\n\n- \\$play https://www.youtube.com/watch?v=gwpud7f_nDk\n\n2. Add music to queue: `$play [youtube_url]`\n\n- \\$play https://www.youtube.com/watch?v=gwpud7f_nDk\n\n3. Stop: `$stop`\n4. Skip: `$skip`\n5. Pause: `$pause`\n6. Resume: `$resume`\n7. change Volume : `$volume [1-5]` - default: 5\n\n- \\$volume 3\n\n8. Now Playing: `$nowplaying`\n9. check song queue: `$queue`\n\n### Plan Of Action\n\n- Project Setup\n- Creating Discord Application\n- Adding the Bot to our Discord Server\n- Logging the bot In Discord Server\n- Basic Events\n- Ready Event\n- Message Events\n- Bot Responses\n- Basic Chat Commands\n- Kick Command\n- Ban Command\n- Message Reactions \u0026 Reaction Roles\n- Announce command - Webhooks\n- Play command\n- Stop command\n- Create Queue system\n- Add song to queue\n- Skip command\n- Pause command\n- Resume command\n- change Volume command\n- NowPlaying command\n- check song queue command\n- Refactor\n  - Kick with new logic\n  - Ban with new logic\n- Soft Ban command\n- Mute command\n- UnMute command\n- Temp Ban command\n\n### After this project\n\nNext Steps:\n\n- Music is playing but response too longgggg 😂\n- Add youtube search function\n- Add/Remove Role\n- Create/Delete Role\n- Create/Delete Channel\n- Refactor code by split specify function in specify folder\n\n### Directory Structure\n\n```\n.\n├── package.json\n├── package-lock.json\n├── README.md\n├── .env\n└── src\n    └── bot.js\n```\n\n### Set up\n\n1. Clone repo to your computer:\n\n```\ngit clone https://github.com/tinspham209/discord-bot.git\n```\n\n2. Install dependencies.\n\n```\nnpm install\n```\n\n3. **Adding the Bot to discord server**\n\n- https://discord.com/developers/applications \u003e General Information \u003e `CLIENT_ID`\n- And type URL in your browser: https://discord.com/api/oauth2/authorize?client_id=`CLIENT_ID`\u0026scope=bot\n\n4. **Update variable in `.env`**\n\n```js\n// .env\nDISCORDJS_BOT_TOKEN=\nWEBHOOK_ID=\nWEBHOOK_TOKEN=\nREACTION_MESSAGE_ID=\nROLE_NAME=\nROLE_ID=\nROLE_MUTE_ID=\n```\n\n- `DISCORDJS_BOT_TOKEN`:\n  - https://discord.com/developers/applications ~\u003e BOT \u003e TOKEN\n- Setting Webhooks in specify channel that you want BOT send announcements\n  - Setting text channel \u003e Integrations \u003e New Webhook \u003e Copy Webhook URL\n  - Get `WEBHOOK_ID` \u0026 `WEBHOOK_TOKEN` in URL\n  - https://discordapp.com/api/webhooks/WEBHOOK_ID/WEBHOOK_TOKEN\n- `REACTION_MESSAGE_ID` : ID of comment that you want to set function reaction to set role\n- `ROLE_NAME` = icon that you want user react to set Role - example: `:watermelon:`\n- `ROLE_ID` = ID of roles that you want to set in server setting \u003e roles\n- `ROLE_MUTE_ID` : Role ID that is already mute in server setting \u003e roles\n\n5. If you want to add more reaction roles. You need to update code at `src/bot.js` in function `messageReactionAdd` \u0026`messageReactionRemove`\n\n- Add new variable in `.env`. Example: `ROLE_NAME_2` \u0026 `ROLE_ID_2`\n- Add more case at `switch case` on each functions\n\n6. **Run in Production**\n\n```\nnpm start\n```\n\n7. **Or run in development: nodemon**\n\n```\nnpm run dev\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinspham209%2Fdiscord-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftinspham209%2Fdiscord-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinspham209%2Fdiscord-bot/lists"}