Telegram bot that validates new users that enter supergroup. Validation works like a simple captcha. Bot written in Go (Golang).
The goal of this bot is to be as simple and minimal as possible.
This bot has been tested on several supergroups (2000+ people) for a long time and has shown its effectiveness against spammers.
- Add the bot to your supergroup
- Promote the bot for administrator privileges
- A new user enters your supergroup
- Bot restricts the user's ability to send messages
- Bot shows a welcome message and a captcha button to the user
- If the user doesn't press the button within 30 seconds then the user is banned by the bot
- Option 1 (the easiest one): docker-compose + already built docker container
- Option 2: docker-compose + build your own docker container
- Option 3: systemd
/healthz - check that the bot is working correctly
The bot uses a TOML configuration file and environment variables.
| Variable | Required | Description |
|---|---|---|
TGTOKEN | Yes | Telegram bot token from @BotFather |
CONFIG_PATH | No | Directory path containing config.toml. Defaults to current directory |
Create a config.toml file with the following options:
| Option | Type | Default | Description |
|---|---|---|---|
button_text | string | "I'm not a robot!" | Text displayed on the captcha button |
welcome_message | string | "Hello! This is the spam protection system..." | Message sent to new users |
after_success_message | string | "User passed the validation." | Message shown after successful verification |
after_fail_message | string | "User didn't pass the validation and was banned." | Message shown after failed verification |
success_message_strategy | string | "show" | Action after success: "show" (edit message) or "del" (delete message) |
fail_message_strategy | string | "del" | Action after failure: "show" (edit message) or "del" (delete message) |
welcome_timeout | string | "30" | Seconds user has to press the button |
ban_duration | string | "forever" | Ban duration: "forever" or number of minutes (e.g., "10") |
delete_join_message_on_fail | string | "yes" | Delete system join/leave messages for failed users: "yes" or "no" |
use_socks5_proxy | string | "no" | Enable SOCKS5 proxy: "yes" or "no" |
socks5_address | string | "1.1.1.1" | SOCKS5 proxy IP address |
socks5_port | string | "1080" | SOCKS5 proxy port |
socks5_login | string | "login" | SOCKS5 proxy username |
socks5_password | string | "password" | SOCKS5 proxy password |
button_text = "I'm not a robot!"welcome_message = "Hello! Please press the button within 30 seconds or you will be banned!"after_success_message = "User passed the validation."after_fail_message = "User didn't pass the validation and was banned."success_message_strategy = "show"fail_message_strategy = "del"welcome_timeout = "30"ban_duration = "forever"delete_join_message_on_fail = "no"use_socks5_proxy = "no"With the default configuration:
- New user joins the group
- Bot restricts the user and sends a welcome message with "I'm not a robot!" button
- User has 30 seconds to press the button
- If user passes: Challenge message is edited to show "User passed the validation."
- If user fails: User is banned forever, challenge message is deleted