Skip to content
/ vixen Public

Telegram bot for automatically banning spammers in Telegram chats. Can generate captcha, reports and has integration with LLM.

License

Notifications You must be signed in to change notification settings

PlugFox/vixen

Repository files navigation

Telegram Vixen Bot

Checkout Build DockerHub License: MIT

Telegram Vixen Bot is a bot for automatically banning spammers in Telegram chats. Written in Dart that helps prevent spam in Telegram groups by generating and sending CAPTCHA challenges to new users with a virtual keyboard. It automatically deletes initial messages from unverified users and supports multiple blocking modes.

✨ Features

  • CAPTCHA Verification: Requires new users to complete a CAPTCHA before they can send messages.
  • Blocking Modes: Supports different verification and restriction mechanisms.
  • Admin API: Provides an API for managing bot settings and operations.
  • SQLite Storage: Stores persistent data in an SQLite database.
  • Group-Specific Monitoring: Watches only designated groups.
  • Metrics Support: Tracks bot performance and user activity.
  • Flexible Configuration: Configurable via command-line arguments, .env file, or environment variables.
  • Cross-Platform: Runs on Windows, macOS, and Linux, Docker. AMD64 and ARM64 architectures are supported.
  • Combot Anti-Spam: Checks messages with Combot Anti-Spam API.
  • Reports: Sends reports about activity in the chat.
  • Summary: Sends a summary of the chat activity for the last 24 hours.
  • Clown Reactions: Reacts to messages with a clown emoji.
  • Open-Source: Available under the MIT License.

🛡️ Manages the following chats

🚀 Getting Started

The bot supports configuration via command-line arguments, environment variables, or a .env file.

💻 Minimum System Requirements

To run the Telegram Vixen Bot, ensure your system meets the following minimum requirements:

  • Operating System: Windows, macOS, or a recent Linux distribution
  • Processor: x86_64 or ARM64
  • Memory: 128 MB RAM
  • Storage: 100 MB available space
  • Docker: (Optional) For running the bot in a containerized environment

🔧 Install Dependencies

Ensure you have Dart SDK installed. Then, run:

dart pub get
dart run build_runner build --delete-conflicting-outputs

▶ Run the Bot

You can start the bot using command-line arguments:

dart run bin/vixen.dart --token=123:ABC-DEF --chats=123,-456,-789 --secret=1234567890

Or set the configuration using environment variables:

export CONFIG_TOKEN="123:ABC-DEF"
export CONFIG_CHATS="123,-456,-789"
export CONFIG_SECRET="1234567890"
dart run bin/vixen.dart

Alternatively, create a .env file:

echo "token=123:ABC-DEF" > .env
echo "chats=123,-456,-789" >> .env
echo "secret=1234567890" >> .env

Then, start the bot:

dart run bin/vixen.dart

⚙️ Configuration

Argument Environment Description Default
-t --token CONFIG_TOKEN (Required) Telegram bot token
-c --chats CONFIG_CHATS Comma-separated list of chat IDs
-s --secret CONFIG_SECRET Secret admin API key
-d --db CONFIG_DB Path to the SQLite database file data/vixen.db
-a --address CONFIG_ADDRESS Address to bind the server to 0.0.0.0
-p --port CONFIG_PORT Port to bind the server to 8080
-v --verbose CONFIG_VERBOSE Logs: all/debug/info/warn/error warn
--offset CONFIG_OFFSET Offset for Telegram updates -
--cas CONFIG_CAS Check messages with Combot Anti-Spam on
--report-hour CONFIG_REPORT-HOUR The hour to send daily report 17
--openai-key CONFIG_OPENAI-KEY OpenAI API key for summarization
--openai-url CONFIG_OPENAI-URL OpenAI API endpoint
--openai-model CONFIG_OPENAI-MODEL OpenAI model gpt-4o-mini
--clown CONFIG_CLOWN Chance of clown reaction 0

To see all available options, run:

dart run bin/vixen.dart --help

🏗️ Building

🛠️ How to compile

dart pub get
dart run build_runner build --delete-conflicting-outputs
dart compile exe bin/vixen.dart -o vixen.run

🐋 How to Docker

docker build -t vixen:latest .
docker compose up

📝 Contributers

🤝 Funding

If you want to support the development of our library, there are several ways you can do it:

We appreciate any form of support, whether it's a financial donation or just a star on GitHub. It helps us to continue developing and improving our library. Thank you for your support!

📜 License

This project is licensed under The MIT License.