{"id":48116452,"url":"https://github.com/astrovm/respondedorbot","last_synced_at":"2026-04-04T16:16:04.841Z","repository":{"id":85542400,"uuid":"45885935","full_name":"astrovm/respondedorbot","owner":"astrovm","description":"Telegram bot AI based on Argentina internet culture","archived":false,"fork":false,"pushed_at":"2026-03-30T18:28:24.000Z","size":1518,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-30T19:28:10.624Z","etag":null,"topics":["ai","argentina","bot","crypto","telegram"],"latest_commit_sha":null,"homepage":"https://t.me/respondedorbot","language":"Python","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/astrovm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2015-11-10T03:52:36.000Z","updated_at":"2026-03-30T18:25:57.000Z","dependencies_parsed_at":"2024-08-09T03:29:06.177Z","dependency_job_id":"a2022139-4b9c-4e84-877f-914b56588c59","html_url":"https://github.com/astrovm/respondedorbot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/astrovm/respondedorbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrovm%2Frespondedorbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrovm%2Frespondedorbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrovm%2Frespondedorbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrovm%2Frespondedorbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/astrovm","download_url":"https://codeload.github.com/astrovm/respondedorbot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrovm%2Frespondedorbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31405699,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ai","argentina","bot","crypto","telegram"],"created_at":"2026-04-04T16:16:02.877Z","updated_at":"2026-04-04T16:16:04.827Z","avatar_url":"https://github.com/astrovm.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# respondedorbot\n\nAn AI-powered Telegram bot that plays the role of \"el gordo\", a politically incorrect Argentine character inspired by the classic \"atendedor de boludos\" and \"viejo inimputable\" memes. He's blunt, unfiltered, and answers everything in a single lowercase phrase using Argentine slang. Think of him as the guy at the ciber who spent too long on Taringa and the deep web.\n\nBeyond the attitude, he actually knows his stuff: crypto, hacking, Linux, gaming, psychiatry, economics, and internet culture from the golden age of forums and Flash games. If the question is real, the answer is real.\n\n**[t.me/respondedorbot](https://t.me/respondedorbot)**\n\n## Features\n\n- **AI chat**: configurable personality powered by Groq, responds to trigger words in groups\n- **Market data**: `/prices`, `/usd`, `/petroleo`, `/devo`, `/powerlaw`, `/rainbow`\n- **BCRA economic data**: `/bcra`, `/variables` (base monetaria, inflation, dollar rates, reserves, etc.)\n- **Media handling**: audio transcription (Whisper) and image description (vision) via `/transcribe`\n- **Web search**: `/buscar` / `/search` using Groq Compound for real-time info\n- **Utilities**: `/random`, `/convertbase`, `/time`, `/gm`, `/gn`\n- **AI credits billing**: Telegram Stars integration (`/topup`, `/balance`, `/transfer`)\n- **Link enrichment**: URLs in messages get fetched metadata injected into AI context\n\n## Quick Start\n\n```bash\npython -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\ncp .env.example .env\n# Edit .env with your keys\npython run_polling.py\n```\n\n## Project Structure\n\n```text\napi/index.py            # Core command handlers and AI logic\napi/bot_ptb.py          # python-telegram-bot polling runtime\nrun_polling.py          # Polling entrypoint\napi/message_handler.py  # Message flow, billing, rate-limit gating\ntests/                  # pytest suite\n```\n\n## Configuration\n\nCopy `.env.example` and fill in the values. Key variables:\n\n| Variable | Description |\n| --- | --- |\n| `BOT_SYSTEM_PROMPT` | Complete AI personality prompt |\n| `BOT_TRIGGER_WORDS` | Comma-separated keywords that trigger responses in groups |\n| `TELEGRAM_TOKEN` | Bot token from @BotFather |\n| `TELEGRAM_USERNAME` | Bot username |\n| `REDIS_HOST` / `REDIS_PORT` / `REDIS_PASSWORD` | Redis cache |\n| `SUPABASE_POSTGRES_URL` | Pooled Supabase Postgres URL (for AI credits) |\n| `COINMARKETCAP_KEY` | CoinMarketCap API key |\n| `GROQ_API_KEY` | Paid Groq API key |\n| `GROQ_FREE_API_KEY` | Optional free-tier Groq key (tried first, falls back to paid) |\n| `GIPHY_API_KEY` | Giphy API key for `/gm` and `/gn` GIFs |\n| `ADMIN_CHAT_ID` | Telegram chat ID for error reports |\n| `FRIENDLY_INSTANCE_NAME` | Instance name for admin reports |\n\n## Container Deployment (Podman)\n\n### Option 1: Quadlets with systemd (Recommended)\n\nQuadlets are Podman-native systemd unit files. Copy the files from `quadlets/` and enable the services:\n\n```bash\nmkdir -p ~/.config/containers/systemd\ncp quadlets/* ~/.config/containers/systemd/\n\n# Put your .env at ~/respondedorbot/.env\nmkdir -p ~/respondedorbot\ncp .env.example ~/respondedorbot/.env\n# Edit ~/respondedorbot/.env with your keys\n\nsystemctl --user daemon-reload\nsystemctl --user enable --now respondedorbot.service\n```\n\nView logs:\n\n```bash\njournalctl --user -fu respondedorbot.service\n```\n\nStop:\n\n```bash\nsystemctl --user stop respondedorbot.service respondedorbot-redis.service\n```\n\nAuto-update images (equivalent to Watchtower):\n\n```bash\nsystemctl --user enable --now podman-auto-update.timer\n```\n\n### Option 2: Podman run (external Redis)\n\nIf you have Redis running elsewhere:\n\n```bash\npodman build -t respondedorbot -f Containerfile .\npodman run --env-file .env respondedorbot\n```\n\nOr use the pre-built image from GitHub Container Registry:\n\n```bash\npodman run --env-file .env ghcr.io/astrovm/respondedorbot:latest\n```\n\n## AI Credits Billing\n\nAI responses cost credits. Users get onboarding credits on first interaction, then recharge with Telegram Stars.\n\n- `/topup` - buy credits with Stars (private chat only)\n- `/balance` - check credits (personal in DM, personal + group in groups)\n- `/transfer \u003camount\u003e` - move credits from personal to group balance\n\nIn groups, personal balance is spent first, then group balance.\n\n## Groq Routing\n\nIf both `GROQ_FREE_API_KEY` and `GROQ_API_KEY` are set, the bot tries the free key first for all Groq calls. On rate limit (429) or local budget exhaustion, it retries with the paid key.\n\n## Tests\n\n```bash\npytest -q\n```\n\n## Architecture\n\nThe bot uses **python-telegram-bot v20+** with polling mode:\n- Automatic offset tracking and duplicate prevention\n- Built-in flood wait handling and error recovery\n- Async handlers with sync code bridging for the existing codebase\n- No webhook required — works behind NAT and firewalls\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrovm%2Frespondedorbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastrovm%2Frespondedorbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrovm%2Frespondedorbot/lists"}