{"id":26329301,"url":"https://github.com/plugfox/vixen","last_synced_at":"2025-07-29T14:11:30.191Z","repository":{"id":275978248,"uuid":"927795888","full_name":"PlugFox/vixen","owner":"PlugFox","description":"Telegram bot for automatically banning spammers in Telegram chats. Can generate captcha, reports and has integration with LLM.","archived":false,"fork":false,"pushed_at":"2025-03-22T02:24:49.000Z","size":637,"stargazers_count":18,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-01T16:12:56.583Z","etag":null,"topics":["anti-spam","antispam","bot","dart","telegram","telegram-bot"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/plugfox/vixen","language":"Dart","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/PlugFox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"patreon":"plugfox","custom":["https://www.buymeacoffee.com/plugfox","https://boosty.to/plugfox"]}},"created_at":"2025-02-05T15:01:27.000Z","updated_at":"2025-03-22T02:24:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"eb41f616-da05-43f1-a210-1468115d8651","html_url":"https://github.com/PlugFox/vixen","commit_stats":null,"previous_names":["plugfox/vixen"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/PlugFox/vixen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlugFox%2Fvixen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlugFox%2Fvixen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlugFox%2Fvixen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlugFox%2Fvixen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PlugFox","download_url":"https://codeload.github.com/PlugFox/vixen/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlugFox%2Fvixen/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267701308,"owners_count":24130449,"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","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["anti-spam","antispam","bot","dart","telegram","telegram-bot"],"created_at":"2025-03-15T21:28:05.113Z","updated_at":"2025-07-29T14:11:30.181Z","avatar_url":"https://github.com/PlugFox.png","language":"Dart","readme":"# Telegram Vixen Bot\n\n[![Checkout](https://github.com/PlugFox/vixen/actions/workflows/checkout.yml/badge.svg)](https://github.com/PlugFox/vixen/actions)\n[![Build](https://github.com/PlugFox/vixen/actions/workflows/build.yml/badge.svg)](https://github.com/PlugFox/vixen/actions)\n[![DockerHub](https://img.shields.io/docker/pulls/plugfox/vixen)](https://hub.docker.com/r/plugfox/vixen)\n[![License: MIT](https://img.shields.io/badge/license-MIT-purple.svg)](https://opensource.org/licenses/MIT)\n\n**Telegram Vixen Bot** is a bot for automatically banning spammers in Telegram chats.\nWritten in Dart that helps prevent spam in Telegram groups\nby generating and sending CAPTCHA challenges to new users with a virtual keyboard.\nIt automatically deletes initial messages from unverified users and supports multiple blocking modes.\n\n## ✨ Features\n\n- **CAPTCHA Verification**: Requires new users to complete a CAPTCHA before they can send messages.\n- **Blocking Modes**: Supports different verification and restriction mechanisms.\n- **Admin API**: Provides an API for managing bot settings and operations.\n- **SQLite Storage**: Stores persistent data in an SQLite database.\n- **Group-Specific Monitoring**: Watches only designated groups.\n- **Metrics Support**: Tracks bot performance and user activity.\n- **Flexible Configuration**: Configurable via command-line arguments, `.env` file, or environment variables.\n- **Cross-Platform**: Runs on Windows, macOS, and Linux, Docker. AMD64 and ARM64 architectures are supported.\n- **Combot Anti-Spam**: Checks messages with Combot Anti-Spam API.\n- **Reports**: Sends reports about activity in the chat.\n- **Summary**: Sends a summary of the chat activity for the last 24 hours.\n- **Clown Reactions**: Reacts to messages with a clown emoji.\n- **Open-Source**: Available under the MIT License.\n\n![](.img/captcha_1.webp)\n\n![](.img/report_1.webp)\n\n## 🛡️ Manages the following chats\n\n- [\\[RU\\] Dart \u0026 Flutter](https://t.me/ru_dart)\n- [Dart и Flutter](https://t.me/learn_flutter)\n- [Flutter Architecture](https://t.me/flutter_architecture)\n\n## 🚀 Getting Started\n\nThe bot supports configuration via command-line arguments, environment variables, or a `.env` file.\n\n### 💻 Minimum System Requirements\n\nTo run the Telegram Vixen Bot, ensure your system meets the following minimum requirements:\n\n- **Operating System**: Windows, macOS, or a recent Linux distribution\n- **Processor**: x86_64 or ARM64\n- **Memory**: 128 MB RAM\n- **Storage**: 100 MB available space\n- **Docker**: (Optional) For running the bot in a containerized environment\n\n### 🔧 Install Dependencies\n\nEnsure you have [Dart SDK](https://dart.dev/get-dart) installed. Then, run:\n\n```sh\ndart pub get\ndart run build_runner build --delete-conflicting-outputs\n```\n\n### ▶ Run the Bot\n\nYou can start the bot using command-line arguments:\n\n```sh\ndart run bin/vixen.dart --token=123:ABC-DEF --chats=123,-456,-789 --secret=1234567890\n```\n\nOr set the configuration using environment variables:\n\n```sh\nexport CONFIG_TOKEN=\"123:ABC-DEF\"\nexport CONFIG_CHATS=\"123,-456,-789\"\nexport CONFIG_SECRET=\"1234567890\"\ndart run bin/vixen.dart\n```\n\nAlternatively, create a `.env` file:\n\n```sh\necho \"token=123:ABC-DEF\" \u003e .env\necho \"chats=123,-456,-789\" \u003e\u003e .env\necho \"secret=1234567890\" \u003e\u003e .env\n```\n\nThen, start the bot:\n\n```sh\ndart run bin/vixen.dart\n```\n\n## ⚙️ Configuration\n\n| Argument         | Environment           | Description                               | Default         |\n| ---------------- | --------------------- | ----------------------------------------- | --------------- |\n| `-t` `--token`   | `CONFIG_TOKEN`        | **(Required)** Telegram bot token         | —               |\n| `-c` `--chats`   | `CONFIG_CHATS`        | Comma-separated list of chat IDs          | —               |\n| `-s` `--secret`  | `CONFIG_SECRET`       | Secret admin API key                      | —               |\n| `-d` `--db`      | `CONFIG_DB`           | Path to the SQLite database file          | `data/vixen.db` |\n| `-a` `--address` | `CONFIG_ADDRESS`      | Address to bind the server to             | `0.0.0.0`       |\n| `-p` `--port`    | `CONFIG_PORT`         | Port to bind the server to                | `8080`          |\n| `-v` `--verbose` | `CONFIG_VERBOSE`      | Logs: `all`/`debug`/`info`/`warn`/`error` | `warn`          |\n| `--offset`       | `CONFIG_OFFSET`       | Offset for Telegram updates               | -               |\n| `--cas`          | `CONFIG_CAS`          | Check messages with Combot Anti-Spam      | `on`            |\n| `--report-hour`  | `CONFIG_REPORT-HOUR`  | The hour to send daily report             | `17`            |\n| `--openai-key`   | `CONFIG_OPENAI-KEY`   | OpenAI API key for summarization          | —               |\n| `--openai-url`   | `CONFIG_OPENAI-URL`   | OpenAI API endpoint                       | —               |\n| `--openai-model` | `CONFIG_OPENAI-MODEL` | OpenAI model                              | `gpt-4o-mini`   |\n| `--clown`        | `CONFIG_CLOWN`        | Chance of clown reaction                  | `0`             |\n\nTo see all available options, run:\n\n```sh\ndart run bin/vixen.dart --help\n```\n\n## 🏗️ Building\n\n### 🛠️ How to compile\n\n```sh\ndart pub get\ndart run build_runner build --delete-conflicting-outputs\ndart compile exe bin/vixen.dart -o vixen.run\n```\n\n### 🐋 How to Docker\n\n```sh\ndocker build -t vixen:latest .\ndocker compose up\n```\n\n## 📝 Contributers\n\n- [Mike Matiunin aka Plague Fox](https://plugfox.dev)\n\n## 🤝 Funding\n\nIf you want to support the development of our library, there are several ways you can do it:\n\n- [Buy me a coffee](https://www.buymeacoffee.com/plugfox)\n- [Support on Patreon](https://www.patreon.com/plugfox)\n- [Subscribe through Boosty](https://boosty.to/plugfox)\n\nWe 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!\n\n## 📜 License\n\nThis project is licensed under [The MIT License](https://opensource.org/licenses/MIT).\n","funding_links":["https://patreon.com/plugfox","https://www.buymeacoffee.com/plugfox","https://boosty.to/plugfox","https://www.patreon.com/plugfox"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplugfox%2Fvixen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplugfox%2Fvixen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplugfox%2Fvixen/lists"}