{"id":13486648,"url":"https://github.com/Nukesor/ultimate-poll-bot","last_synced_at":"2025-03-27T21:30:43.842Z","repository":{"id":36228719,"uuid":"188621543","full_name":"Nukesor/ultimate-poll-bot","owner":"Nukesor","description":":bulb: The ultimate vote and poll bot for creating, sharing and evaluating polls inside of Telegram","archived":true,"fork":false,"pushed_at":"2024-01-24T00:12:32.000Z","size":1854,"stargazers_count":138,"open_issues_count":15,"forks_count":79,"subscribers_count":14,"default_branch":"main","last_synced_at":"2024-10-30T21:37:56.147Z","etag":null,"topics":["hacktoberfest","management","poll","pollbot","python3","telegram","telegram-bot","voting","voting-application"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Nukesor.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","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":"2019-05-25T23:31:22.000Z","updated_at":"2024-10-23T06:02:18.000Z","dependencies_parsed_at":"2024-10-30T21:32:12.775Z","dependency_job_id":"6e8ef1b9-8684-4509-b608-92bbf816ce9e","html_url":"https://github.com/Nukesor/ultimate-poll-bot","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nukesor%2Fultimate-poll-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nukesor%2Fultimate-poll-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nukesor%2Fultimate-poll-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nukesor%2Fultimate-poll-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nukesor","download_url":"https://codeload.github.com/Nukesor/ultimate-poll-bot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245927117,"owners_count":20695171,"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":["hacktoberfest","management","poll","pollbot","python3","telegram","telegram-bot","voting","voting-application"],"created_at":"2024-07-31T18:00:49.453Z","updated_at":"2025-03-27T21:30:43.835Z","avatar_url":"https://github.com/Nukesor.png","language":"Python","funding_links":[],"categories":["Python","BOTs"],"sub_categories":["Encuestas"],"readme":"# Ultimate Pollbot ([@ultimate_pollbot](https://t.me/ultimate_pollbot))\n\n[![MIT Licence](https://img.shields.io/badge/license-MIT-success.svg)](https://github.com/Nukesor/pollbot/blob/main/LICENSE.md)\n\n![Alt Text](https://github.com/Nukesor/images/blob/main/pollbot.gif)\n\n## :warning: :warning: :warning:  State of the project :warning: :warning: :warning:\n\nThe project is **no longer actively** maintained!\n\nTwo of the most important dependencies (sqlalchemy and python-telegram-bot) released major version updates that introduced significant changes to their APIs.\n\nI'm no longer feeling comfortable with hosting this and I don't have the time or motivation to update those dependencies. Due to this, the \"official\" pollbot is now offline.\n\nThis project was super useful for many people, in the end there were about ~2 million all-time users on the \"official\" bot instance. All good things have to come to an end though.\n\nIf you started a successful fork of this repository that has been maintained over a longer period of time, feel free to contact me. I'll then point to your fork :).\n\n:warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning: :warning:\n\n## Introduction\n\nDeciding where you and your friends are going for lunch today can be a real hassle...\nOr, for instance, deciding which games should be played at the next LAN-Party.\n\nSince no other telegram poll/vote bot offered the full feature set my friends and I needed, I decided to write the ULTIMATE pollbot. A bot which combines all good features of all existing bots and even stuff beyond that.\n\n## Features\n\nThe Ultimate Pollbot delivers a full set of well-tested and battle proven features.\nIt's capable of handling hundreds of voters for a single poll, while offering a high customizability and a wide range of different poll types to choose from.\n\nHere is a list of the most important features:\n\n### Poll types\n\nThis bot has 6 different vote modi. Each mode is useful for various scenarios. Choose wisely.\n\n- Single vote: User get a single vote to allot\n- Doodle: Users can vote with `yes`, `no` and `maybe` for each option.\n- Block vote: Users can vote without restriction, but only one vote per option.\n- Limited vote: Each user gets X votes for distribution, but only one vote per option.\n- Cumulative vote: Every user gets X votes they can distribute as they like.\n- Unlimited votes (Also called the shopping list): Every user can vote as often as they like, pretty much like a distributed shopping list.\n\n### Anonymity settings\n\nPolls can be configured to be anonymous, with the result that names of users are not visible.\nPolls can be made anonymous subsequently, but as soon as a poll is anonymous it stays that way forever!\n\nFurther it's possible to hide the results of the poll until it gets closed.\nAs soon as such a poll is closed, the results will be visible. **Beware!**: such a poll cannot be reopened.\n\n### Poll Management\n\n- Addition and removal of options\n- Allow other users to add new options\n- Polls can be closed\n- Polls can be reopened unless the poll is configured to hide the results until it has been closed.\n- Polls can be completely deleted, which means that all non-forwarded occurrences of the poll will be removed.\n- Polls can be reseted (Delete all votes). Poll needs to be closed first\n- Polls can be cloned (New poll with same options, but without votes). Poll needs to be closed first\n\n### Misc\n\n- Internationalization\n- Polls sync between groups in real time.\n- Polls can be shared via link. This allows other users to spread the poll to arbitrary groups.\n- A date picker for easier creation of poll options\n- Specify a due date, at which the poll will be automatically closed.\n- Activate notifications in chats to notify users that the poll will close soon.\n\n### Sorting and Appearance\n\n- Results can be displayed in a detailed or summarized manner.\n- The percentage bar in the vote message can be disabled.\n- The bot allows to configure the sorting of the option list and the user list for each option.\n- Users can be sorted by vote date or username. Options can be sorted by highest percentage, name or by the order they've been added.\n\n## Acknowledgements\n\n\u003ca href=\"https://sentry.io\" \u003e\u003cimg align=\"right\" src=\"https://raw.githubusercontent.com/Nukesor/images/main/sentry.svg\" alt=\"Packaging status\"\u003e\u003c/a\u003e\nThanks to Sentry for providing the project with a sponsored plan (which has super generous quotas!).\n\nThanks to [Lokalise](https://lokalise.co) for providing my projects with a free license for open-source development!\n\nThanks to the Turkish translator:\n\n- [cnpltdncsln](https://github.com/cnpltdncsln)\n\nThanks to the Polish translator:\n\n- [tszalbot](https://github.com/tszalbot)\n\nThanks to all Italian translators:\n\n- [FedericoAntoniazzi](https://github.com/FedericoAntoniazzi)\n- [LBindustries](https://github.com/LBindustries) for providing italian translations.\n\nThanks to all Spanish translators:\n\n- [balboag](https://github.com/balboag)\n- [davidgfnet](https://github.com/davidgfnet)\n- Miguel Antunez\n\nThanks to all Brazilian Portuguese translators:\n\n- [gui258](https://github.com/gui258)\n- Leonardo Frazao\n\nThanks to all German translators:\n\n- Thorsten Schlaberg\n- [KnorpelSenf](https://github.com/KnorpelSenf)\n\nThanks to the Catalan translator:\n\n- [davidgfnet](https://github.com/davidgfnet)\n\nThanks to the Czech translator:\n\n- Ignac (IgnacRR)\n\n## Commands\n\n```text\n/start          Start the bot\n/settings       Open the user settings menu\n/create         Create a new poll\n/list           List all active polls and manage them\n/list_closed    List all closed polls and manage them\n/notify         Activate notifications in a external chats\n/help           Display the help\n```\n\n## Installation and Starting\n\nDependencies:\n\n- [Poetry](https://python-poetry.org/) to manage and install dependencies.\n- [Just](https://github.com/casey/just) for convience.\n- Ultimate Pollbot uses Postgres. Make sure the user has write/read rights. You can use [the provided docker-compose\n file](https://github.com/Nukesor/ultimate-poll-bot/blob/main/docker/docker-compose.yml) to set up a local development\n  environment.\n\n1. Clone the repository:\n\n```bash\ngit clone git@github.com:nukesor/ultimate-poll-bot pollbot \u0026\u0026 cd pollbot\n```\n\n1. Execute `just setup` to install all dependencies.\n1. Either start the poll bot once with `just run` or copy the `pollbot.toml` manually to `~/.config/pollbot.toml`\n    and adjust all necessary values.\n    On Windows, the tilde (`~`) will substitute to your home directory, usually at `C:\\Users\\your.name\\.config\\pollbot.toml`.\n1. Run `just initdb` to initialize the database (or recreate it, if necessary) and set the migration stamp to the newest alembic head.\n1. Start the bot by running `just run`.\n\n## Upgrading the Database\n\nThis is how you upgrade:\n\n1. Stop the bot\n1. `git pull`\n1. `poetry run alembic upgrade head` to run migrations on your database\n1. Start the bot\n\n## Botfather Commands\n\n```txt\nstart - Start the bot\nstop - Stop the bot\ndelete_me - Remove me from the bot. Forever\nsettings - Open the user settings menu\ncreate - Create a new poll\ncancel - Cancel poll creation\nlist - List all active polls and manage them\nlist_closed - List all closed polls and manage them\nnotify - Activate notifications in external chats\nhelp - Show the help text\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNukesor%2Fultimate-poll-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNukesor%2Fultimate-poll-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNukesor%2Fultimate-poll-bot/lists"}