{"id":20942629,"url":"https://github.com/the-programmers-hangout/rafflebot","last_synced_at":"2026-05-16T13:05:00.354Z","repository":{"id":37260313,"uuid":"264740720","full_name":"the-programmers-hangout/RaffleBot","owner":"the-programmers-hangout","description":"[Fork] from https://github.com/Abzylicious/RaffleBot RaffleBot is a discord bot built originally for The Programmer's Hangout that focuses on managing giveaways.","archived":false,"fork":false,"pushed_at":"2022-10-12T21:00:43.000Z","size":183,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-22T16:34:13.451Z","etag":null,"topics":["discord","discord-bot","discordkt","kotlin","the-programmers-hangout","tph"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/the-programmers-hangout.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-17T19:25:14.000Z","updated_at":"2022-09-10T21:02:02.000Z","dependencies_parsed_at":"2023-01-19T10:49:12.118Z","dependency_job_id":null,"html_url":"https://github.com/the-programmers-hangout/RaffleBot","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/the-programmers-hangout/RaffleBot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-programmers-hangout%2FRaffleBot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-programmers-hangout%2FRaffleBot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-programmers-hangout%2FRaffleBot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-programmers-hangout%2FRaffleBot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/the-programmers-hangout","download_url":"https://codeload.github.com/the-programmers-hangout/RaffleBot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-programmers-hangout%2FRaffleBot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33103971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","discord-bot","discordkt","kotlin","the-programmers-hangout","tph"],"created_at":"2024-11-18T23:28:34.485Z","updated_at":"2026-05-16T13:05:00.329Z","avatar_url":"https://github.com/the-programmers-hangout.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Kotlin](https://img.shields.io/badge/Kotlin-1.4.10-blue?logo=kotlin\u0026link=https://kotlinlang.org/)\n![DiscordKt](https://img.shields.io/badge/DiscordKt-0.21.3-blue?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAEvElEQVRYw+2Yy2seVRiHn3Ob756kiWlrq7ZqDSJUsSqoK4srQXHjRnShf4ILl/4FrkVcKLgS1FW3FRR05b1IMVXbNG2SJvny5ct3nZkz5+IitpW2giYOFskLA7M4Z+Y57/m9P857YC92F+Lqy/T0M/F2Atvc/EIAyNs9g3uAuw3974lZMFc9jsJwLj+Dj+72ATxSO8KrB1/nHjOHd5q1rM3Hm+/zc/b9f1vFTV3npbuf49k7ThJ9gisM3ulrz5nBj3zSfY+u39hxFe8IUCA4efgRXjv2PA05iXeaiGHyiRa2L+l87SnsNmRaBE53T3F68CnuH2z7jgHvm5rljRPPMTdxz7VMVeemOPTyYSp3JgCMzlt+fWdA71zEO41zmqV0hY823mPBzpcHeKg1wYcvvEJCDe8V1GpMv3iM5qMzN42NEdpfjFn4YETakXinyQt4e/ktLtvz5Rj1s/cfpVWPmEpO88Emh988cUs4ACFg/8k6j707w+wT23NqVc+Tk0+X54ONisBUcnRiqT9/P157vPd/OT7GiFM5B16SJJWcpJJTM6o8m6lVBCaxSBmIaU5sVXGFxXuB1gYpr/48YnNLlmYgInISTDVDFoZ6mYB3tAw6sUjlQVyXbAyRwlqUUiAEaZoSQ7imcCEiSSXHK89krVoeoNEek1i8V3hxc01577F5QSTcIMhtDUrlSYwrD3CyLrcz6BUBzy3LPsuham7gu57BZjUpr0jqFYE2BdoUmIX5bS+5ack3fDKC+2ENnVhMJadqYnkZbA9ztCkIMiCWziJ7bewjTxFmD17nUX8CXB/gv7pAuDTCJBrvFZ1sUB5gp+9Z35LMTjm0CsjxKuarUxQH7iV/+ElivQFCIEYp6odzhF9WiU5jEo2QnvZajc1RiRo0JtIbw3CkmZkKTLX+yGb7POqzRYqDx1AuIi5dIRSCkGikDPQtLK9VGI8jifHlAQ5zi1YFISjWupLeSLN/2lE1AekDanWe4BVBK7xQZCGy1jV0uooQLcoERn5YogZHGd3UMtXQaKmwXnLpimKiEZmddmgp8TIQRaDT1bTbGlsEjLE4qehmlp4dlQfoY6CfFgxTz76mpllVSKkYZprhkqHViOAl3X5CnguEdhgiQ+9pDwNpIfEyLw/w4sYYj0NIxcYwMBgrZiY0iY5EL+mPFdFHoijQJuKjY3Mo2RpFolBECYuD1fJ8sJ85Pp/f4EpvjFKBAsdyz9IeWKJyaO1QxiGVo59nLG9ljIscpR1bdsB36xdJfVZmkXhSF/lmsc++dsrxuxrsq1VIi8jlTqBZUcQg6I8FtpAorcl9wfzGgKWtETEKBkVa4hZ3Uu6cSjg6U6U7Lvjy1x5376vw0KEGiTQMck8MEoREKMFCZ8C59SHOgZSSy70Ri71u+U3T/omEx4+2mKprQJBIwYOHGhyZrkFULG9Zzi6NGeWeGCVjG/hppcul7t+3mF01TVcnHp2t8tiRFonePuNJISAIfIQYBD4IfmuP+Gmlh/NhR13djvviCCy0M1a6OcfvavLAgfr2IUtEBLDSt3y32GeY766B33XjnrvItxcH/LaeMXewipaCC+2M1Z69va4+tsYFX18o9m639gD/d4B7sdv4Hc8YdmfiizvVAAAAAElFTkSuQmCC\u0026link=https://github.com/JakeJMattson/DiscordKt)\n![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/theprogrammershangout/rafflebot?logo=docker)\n![License](https://img.shields.io/github/license/abzylicious/rafflebot)\n\n# RaffleBot 🎉\nRaffleBot is a discord bot built originally for [The Programmer's Hangout](https://github.com/the-programmers-hangout) that focuses on managing giveaways.\nThis bot might be useful for all kinds of discord servers though.\n\nJoin us at https://discord.gg/programming\n\n![Discord](https://img.shields.io/discord/244230771232079873?color=blue\u0026label=The%20Programmer%27s%20Hangout\u0026logo=discord)\n\n## Required Permissions\n- View Channels\n- Send Messages\n- Read Message History\n- Use External Emojis\n- Add Reactions\n\n## Features\nWhile **RaffleBot 1.0.0** focuses on essential functionality, there are many more features to come in the future. Currently the following features are available:\n\n- [x] Convert an existing message or embed to tracked giveaway\n- [ ] Create new tracked giveaway as message or embed\n- [ ] Create a timed giveaway\n    - [ ] Add a timer to a given giveaway\n    - [ ] Create a new giveaway with a timer\n    - [ ] A giveaway automatically ends after its timer has expired\n    - [ ] Persist timed giveaways (timed giveaways are not affected by bot downtimes \u0026 host machine reboots)\n- [ ] RaffleBot can access any guild channel for its commands\n- [x] Assign a custom emoji to react to per giveaway (the **default** for this is 🎉)\n- [x] Manually end a given giveaway and draw `X` winners (the **default** for this is `1`)\n    - [x] A giveaway does not end if there are no winners available (no one except the bot reacted to a giveaway)\n    - [x] A giveaway does not end if there are not enough participants (you want to draw more winners than there are participants)\n    - [x] A giveaway is automatically removed from the giveaway list after it ends\n- [x] Remove tracked giveaways\n- [x] Remove all tracked giveaways\n- [ ] RaffleBot removes its own reaction from a tracked message after its respective giveaway either ended or is removed from the giveaway list\n- [ ] Clean up the giveaway list (automatically remove all entries of non-available giveaways (eg. the respective message was deleted))\n- [x] A permission system protects RaffleBot to be abused by your members\n- [x] Command invocations are logged (given a configured logging channel)\n- [x] Multi Guild support\n    - [x] A conversation simplifies the initial guild configuration\n    - [x] Each guild can configure its own bot prefix\n    - [x] Each guild can configure its own default reaction for creating giveaways (this may either be a `unicode emote` or a `guild specific emote`)\n    - [x] Each guild can configure its respective logging channel\n    - [x] Each guild can configure RaffleBots permission system to work with different `Staff` and `Admin` roles\n- [x] Dockerize the bot easily via the provided **Dockerfile** and **docker-compose.yml** file\n\n## Commands\nRefer to [commands.md](commands.md) for a general list and explanation of all available commands. To learn about commands during runtime, use the `help` command!\n\n## Getting Started ⚙️\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes.\n\n### Requirements\n- Java\n- Docker\n- Docker-Compose (compatible with docker-compose version 3.8)\n\nGet the Docker version you need [here](https://hub.docker.com/search?q=docker\u0026type=edition\u0026offering=community)!\n\n### Setup\nSince this bot has a **docker-compose.yml** file and is hosted on [DockerHub](https://hub.docker.com/r/theprogrammershangout/rafflebot), all you need to start your own version of RaffleBot locally is to `clone` this repository and set up the **.env** file.\n\nThe **.env** file is used to configure the bot token and owner id, in the following format: \n\n```\nBOT_TOKEN=\u003cinsert-bot-token\u003e\nBOT_OWNER=\u003cinsert-owner-id\u003e\n```\n\n#### For **Linux** and **Mac** run\n```console\n$ cp .env.example .env\n```\n\n#### For **Windows** run\n```powershell\n\u003e Copy-Item .env.example .env\n```\n\nEdit the **.env** file with your favourite editor, filling out the following properties:\n- **BOT_TOKEN** (you can find the bot token under `https://discord.com/developers/applications/bot-id/bot` for an overview of all your bots visit https://discord.com/developers/applications)\n- **BOT_OWNER** ([Where can I find my User/Server/Message ID?](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-))\n\nRun the bot via `docker-compose`\n```console\n$ docker-compose up --build --detach\n```\n\n## Versioning 🏷️\nThis project uses [Semantic Versioning](http://semver.org/) for versioning. For the versions available, see the [tags](https://github.com/Abzylicious/RaffleBot/tags/) on this repository.\n\n## Authors 👤\n* **Alexander Deledda** - *Original Author* - [@Abzylicious](https://github.com/Abzylicious)\n\nSee also the list of [contributors](https://github.com/Abzylicious/RaffleBot/graphs/contributors) who participated in this project.\n\n## Contributing 🤝\nContributions, issues and feature requests are welcome! Feel free to check the [issues page](https://github.com/Abzylicious/RaffleBot/issues).\n\n## Setup development environment 🛠️\nFor development you don't necessarily need **Docker** and **Docker-Compose** but **Java**\n- `clone` this repository\n- Open the project in your favourite Java / Kotlin IDE (JetBrains [IntelliJ IDEA](https://www.jetbrains.com/idea/) is the recommended IDE for Kotlin projects)\n- For running the bot within your IDE you need to add your bot token as `program argument` or `environment variable` (You might have to figure out how to do that in your IDE. **IntelliJ** let's you do that under `Run -\u003e Edit Configurations...`)\n\n## Show your support ⭐️\nGive a ⭐️ if this project helped you!\n\n## License 📝\nCopyright © 2020 [Alexander Deledda](https://github.com/Abzylicious)\u003cbr\u003e\nThis project is [MIT](LICENSE) licensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-programmers-hangout%2Frafflebot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthe-programmers-hangout%2Frafflebot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-programmers-hangout%2Frafflebot/lists"}