{"id":17864019,"url":"https://github.com/cuducos/airnope","last_synced_at":"2026-02-23T21:02:47.854Z","repository":{"id":251252676,"uuid":"836851911","full_name":"cuducos/airnope","owner":"cuducos","description":"☔ AirNope keeps Telegram groups clean from ”airdrop” spam","archived":false,"fork":false,"pushed_at":"2025-10-24T22:18:21.000Z","size":623,"stargazers_count":22,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-25T00:20:21.876Z","etag":null,"topics":["airdrop","hacktoberfest","spam","telegram","telegram-bot"],"latest_commit_sha":null,"homepage":"https://t.me/airnope_bot","language":"Rust","has_issues":true,"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/cuducos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["cuducos"]}},"created_at":"2024-08-01T17:32:48.000Z","updated_at":"2025-10-24T22:18:24.000Z","dependencies_parsed_at":"2024-10-28T09:14:43.140Z","dependency_job_id":"2d22af7b-7a10-4cc6-a3bb-707295faf5ae","html_url":"https://github.com/cuducos/airnope","commit_stats":null,"previous_names":["cuducos/airnope"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cuducos/airnope","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuducos%2Fairnope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuducos%2Fairnope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuducos%2Fairnope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuducos%2Fairnope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cuducos","download_url":"https://codeload.github.com/cuducos/airnope/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuducos%2Fairnope/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281853551,"owners_count":26573095,"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-10-30T02:00:06.501Z","response_time":61,"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":["airdrop","hacktoberfest","spam","telegram","telegram-bot"],"created_at":"2024-10-28T09:08:12.007Z","updated_at":"2025-10-30T17:47:46.689Z","avatar_url":"https://github.com/cuducos.png","language":"Rust","funding_links":["https://github.com/sponsors/cuducos"],"categories":["Rust"],"sub_categories":[],"readme":"# AirNope [![Tests](https://github.com/cuducos/airnope/actions/workflows/tests.yml/badge.svg)](https://github.com/cuducos/airnope/actions/workflows/tests.yml) [![Docker image](https://github.com/cuducos/airnope/actions/workflows/docker.yaml/badge.svg)](https://github.com/cuducos/airnope/actions/workflows/docker.yaml)\n\nA simple, silent bot that keeps [Telegram](https://telegram.org/) groups free from crypto airdrop spams.\n\n\u003e [!NOTE]\n\u003e AirNope will temporarily remove _Safeguard_ spam because it is becoming as annoying as crypto spam, and it is recognized as a scam.\n\n## What is AirNope?\n\n### What it does\n\nWhen the user posting the message is **not** one of the group admins or the group owner:\n\n * deletes the message that is probably airdrop spam\n * removes from the group the user who posted it\n\n```mermaid\nflowchart TB\n\nMSG[Message] --\u003e RE(Detect words like “airdrop”)\n\nRE--\u003e|Yes| ZSC(Compare to spam labels)\nZSC--\u003e|Looks like spam| S{{Spam}}\nS--\u003e RU[Remove user]\nS--\u003e RM[Remove message]\n\nZSC--\u003e|Does not look like spam| NS\nRE--\u003e|No| NS{{Not spam}}\n\nsubgraph AirNope\n    RE\n    ZSC\n    NS\n    S\nend\n```\n\nIf the user posting the message is the group's owner or an admin, AirNop just reacts with 👀 instead.\n\n#### What it does not do\n\n* does **not** post any message in the group (avoids pollution of the group)\n* does **not** keep any history of messages or users\n\n## How to use AirNope?\n\n1. Add [`@airnope_bot`](https://telegram.me/airnope_bot) to your group\n2. Make [`@airnope_bot`](https://telegram.me/airnope_bot) an admin able to delete messages and remove users\n\n## FAQ\n\n### Is there a privacy policy?\u003c/summary\u003e\n\nAirNope is designed to detect spam messages and, in some cases, log them for debugging purposes. While logging these messages, personally identifiable information (PII) might be inadvertently captured. We understand the importance of privacy and are committed to ensuring that any PII collected is not processed or persisted. Logs are temporary and are deleted periodically during each release cycle or when the bot is restarted.\n\nWe are also considering creating a database of spam messages to further enhance our spam detection capabilities. However, due to our concern about user privacy and the potential risk of PII exposure, this initiative is not currently part of our roadmap. We will continue to prioritize privacy and take all necessary measures to protect user information should this initiative be considered.\n\n### Can I test it to see what messages AirNope would consider spam?\n\nSure!\n\n#### On your Telegram\n\nThe easiest way is to send the message to [`@airnope_bot`](https://t.me/airnope_bot). If the message disappears, it means the bot considered it spam and deleted it; otherwise, it's all good.\n\n#### On your terminal\n\nAlternatively, you can use [Docker](https://docs.docker.com/get-started/) and your terminal to test messages locally. Download the Docker image, start the [REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) and type your message followed by the key press `Enter`/`Return`:\n\n```console\n$ docker pull ghcr.io/cuducos/airnope:main\n$ docker run --rm -it ghcr.io/cuducos/airnope:main airnope repl\n```\n\nOr, if you like Rust and have `cargo` installed, clone this repo and `cargo run -- repl`.\n\n### Can I run my own instance of AirNope?\n\nAbsolutely!\n\n1. Create a Telegram bot to get your bot's handle and your Telegram API token\n2. Deploy the Docker image `ghcr.io/cuducos/airnope:main` to a publicly accessible URL having two environment variables:\n   1. `TELEGRAM_BOT_TOKEN` with your bot's token\n   1. `TELEGRAM_WEBHOOK_URL` with your public URL (for example, `https://my.bot`)\n\n### I think AirNope missed a message that might be spam, can I ask it to check a specific message?\n\nYes, just reply that message with `@AirNope_bot` (no spaces or extra characters).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuducos%2Fairnope","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcuducos%2Fairnope","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuducos%2Fairnope/lists"}