A production-ready automation that creates, schedules, and manages Telegram polls on real Android devices and emulators — complete with options, anonymity, and live result handling. It eliminates repetitive tapping and menu navigation, ensuring consistent poll creation across channels, groups, and supergroups. The outcome: reliable, scalable poll workflows that teams can trigger programmatically or from a dashboard.
Created by Appilot, built to showcase our approach to Automation!
If you are looking for custom Telegram Poll Bot, you've just found your team — Let’s Chat.👆👆
What it does: Automates end-to-end Telegram poll creation and management on Android — composing question text, adding choices, selecting multiple/quiz mode, setting anonymity, posting to the right chat, and collecting results.
Problem it solves: Manual poll creation is slow and error-prone, especially at scale (multiple groups/channels, languages, or accounts). This bot standardizes the process with repeatable, scriptable steps.
Benefit: Faster campaign execution, fewer mistakes, and the ability to run coordinated, multi-device poll drops with logs, retries, and analytics.
- Orchestrates poll publishing to multiple groups/channels with throttling, delays, and configurable posting windows.
- Supports quiz mode with correct answers, explanations, and automated result capture for reporting.
- Handles account/session rotation with proxy support to reduce risk of rate limits.
- Exposes a clean API & CLI for CI/CD, cron jobs, or operator dashboards.
- Built for both emulators (Bluestacks/Nox) and real devices — local or cloud farms.
- Real Devices and Emulators: Works on physical Android phones/tablets and popular emulators (Bluestacks, Nox, Genymotion). Profiles device capabilities and adapts UI flows automatically.
- No-ADB Wireless Automation: ADB-less control path for hardened or USB-restricted environments using Accessibility + input injection over Wi-Fi for stealthy, resilient runs.
- Mimicking Human Behavior: Randomized delays, swipe/tap jitter, typing cadence, and viewport sanity checks to closely emulate real user interaction patterns.
- Multiple Accounts Support: Session manager with secure vault for Telegram accounts; hot-swap identities, isolate cookies/data, and apply per-account limits.
- Multi-Device Integration: Parallel orchestrator to fan out jobs across 5–500+ devices with queueing, backoff, and aggregated logs.
- Exponential Growth for Your Account: Consistent poll cadence, higher engagement, and data-driven scheduling to compound reach across communities.
- Premium Support: Priority onboarding, runbooks, and hands-on help tuning device farms, proxies, and schedules.
| Feature | Description |
|---|---|
| Poll Templates | Define reusable templates (question, choices, anonymity, quiz/regular) to publish at scale with variable substitution. |
| Result Aggregation | Collect votes via Telegram UI readback or Bot API hooks; export CSV/JSON for analysis. |
| Scheduler & CRON | Time-zone aware scheduling, quiet hours, and campaign windows per chat/account. |
| Error Recovery | Auto-detect stuck states, re-open chat, re-type content, or re-post with capped retries. |
| Content Localisation | Load multilingual poll text from YAML/JSON; switch keyboard layouts and IMEs automatically. |
| Access Control | Role-based permissions for operators; audit trails for who published what, where, and when. |
- Input or Trigger — Trigger from the Appilot dashboard or CLI with a selected poll template, target chats, schedule, and per-account rules.
- Core Logic — The orchestrator controls Android via UI Automator and/or ADB to open Telegram, navigate to the chat, create a poll (question, options, anonymity, quiz flags), and prepare the post.
- Output or Action — The bot publishes the poll, captures message IDs and links, and optionally monitors live results for export or downstream processing.
- Other functionalities — Built-in retry logic, screenshot logging, structured run logs, and parallel processing. Fallback flows handle UI shifts, slow networks, or device hiccups.
- Language: Kotlin, Java, Python, JavaScript
- Frameworks: Appium, UI Automator, Espresso, Robot Framework, Cucumber
- Tools: Appilot, Android Debug Bridge (ADB), Appium Inspector, Bluestacks, Nox Player, Scrcpy, Firebase Test Lab, MonkeyRunner, Accessibility
- Infrastructure: Dockerized device farms, Cloud-based emulators, Proxy networks, Parallel Device Execution, Task Queues, Real device farm
telegram-poll-bot/
│
├── src/
│ ├── main.py
│ ├── cli.py
│ ├── automation/
│ │ ├── driver_factory.py
│ │ ├── telegram_flows.py
│ │ ├── poll_creator.py
│ │ ├── result_reader.py
│ │ └── utils/
│ │ ├── logger.py
│ │ ├── proxy_manager.py
│ │ ├── device_registry.py
│ │ └── config_loader.py
│ ├── scheduler/
│ │ ├── cron_worker.py
│ │ └── job_queue.py
│ └── api/
│ ├── server.js
│ └── routes/
│ └── publish.js
│
├── config/
│ ├── settings.yaml
│ ├── accounts.yaml
│ ├── poll_templates/
│ │ ├── sample_quiz.yaml
│ │ └── sample_regular.yaml
│ └── credentials.env
│
├── tests/
│ ├── test_poll_flow.robot
│ └── fixtures/
│ └── demo_chat_ids.json
│
├── logs/
│ └── run-2025-11-03.log
│
├── output/
│ ├── published_polls.csv
│ └── results.json
│
├── docker/
│ ├── Dockerfile
│ └── docker-compose.yaml
│
├── requirements.txt
├── package.json
└── README.md
- Community managers use it to launch synchronized polls across multiple groups, so they can compare engagement and gather feedback instantly.
- Marketing teams use it to A/B test poll questions in different channels, so they can optimize messaging and track responses.
- Ops teams use it to schedule routine satisfaction polls, so they can automate reporting and reduce manual work.
- Educators use it to run quiz-style polls in classes, so they can evaluate understanding in real time.
How do I configure this for multiple accounts?
Add accounts in config/accounts.yaml, map them to target chats, and enable per-account limits. The session manager isolates data per identity and rotates based on your schedule.
Does it support proxy rotation or anti-detection?
Yes. Configure HTTP/SOCKS proxies per device/account via proxy_manager.py. Human-like timing, viewport checks, and randomized input patterns reduce heuristic flags.
Can I schedule polls to run periodically?
Use the scheduler’s CRON syntax or the dashboard to set daily/weekly windows. Time-zone aware timers ensure on-time posts per region.
Can it read results automatically?
It can parse on-screen results post-publish or integrate with Bot API where applicable, exporting CSV/JSON into /output.
What happens if Telegram UI changes?
Fallback selectors, image heuristics, and a re-training profile help adapt. Flows include screenshot capture and retries with capped backoff.
- Execution Speed: Creates and posts a standard 4-option poll in ~6–10 seconds per device (median on mid-range hardware).
- Success Rate: End-to-end publish success ≈95% in steady-state networks with tuned selectors and retries.
- Scalability: Proven coordinator supports 300–1000 concurrent Android instances with queue-based dispatch and shardable logging.
- Resource Efficiency: Light CPU footprint on emulators; adaptive pacing prevents thermal throttling and UI stalls.
- Error Handling: Structured logs, screenshots on failure, capped exponential retries, circuit breaker per chat/account, and Slack/Webhook alerts.
