{"id":15605171,"url":"https://github.com/david-lor/vigobus-telegrambot","last_synced_at":"2025-04-26T15:55:46.877Z","repository":{"id":38962391,"uuid":"105026829","full_name":"David-Lor/VigoBus-TelegramBot","owner":"David-Lor","description":"Bot de Telegram para ver los horarios de los autobuses de Vigo por paradas 🤖🚌🚏","archived":false,"fork":false,"pushed_at":"2024-09-04T00:14:25.000Z","size":474,"stargazers_count":11,"open_issues_count":1,"forks_count":5,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-04-26T10:17:41.708Z","etag":null,"topics":["aiogram","async","asyncio","autobuses","bus","bus-stop","python","python3","python3-7","python36","python37","telebot","telegram","telegram-bot","vigo","vigobus-telegrambot","vitrasa"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/David-Lor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2017-09-27T14:12:56.000Z","updated_at":"2024-09-25T16:06:05.000Z","dependencies_parsed_at":"2024-04-14T19:25:01.101Z","dependency_job_id":"05957783-330d-4cdc-819c-f199f0872a0e","html_url":"https://github.com/David-Lor/VigoBus-TelegramBot","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-Lor%2FVigoBus-TelegramBot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-Lor%2FVigoBus-TelegramBot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-Lor%2FVigoBus-TelegramBot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-Lor%2FVigoBus-TelegramBot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/David-Lor","download_url":"https://codeload.github.com/David-Lor/VigoBus-TelegramBot/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250976111,"owners_count":21516878,"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","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":["aiogram","async","asyncio","autobuses","bus","bus-stop","python","python3","python3-7","python36","python37","telebot","telegram","telegram-bot","vigo","vigobus-telegrambot","vitrasa"],"created_at":"2024-10-03T04:02:53.620Z","updated_at":"2025-04-26T15:55:46.854Z","avatar_url":"https://github.com/David-Lor.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VigoBus-TelegramBot\n\n[![@vigobusbot](https://img.shields.io/badge/Stable%20bot-@vigobusbot-blue?logo=telegram\u0026style=plastic)](https://telegram.me/vigobusbot)\n[![@vigobustestbot](https://img.shields.io/badge/Develop%20bot-@vigobustestbot-blue?logo=telegram\u0026style=plastic)](https://telegram.me/vigobustestbot)\n\nTelegram Bot that serves bus stops and real-time estimated time of arrival for the buses of the city of Vigo.\n\n_Bot de Telegram que permite consultar las paradas y autobuses que se dirigen a las mismas -junto a su tiempo restante de llegada, en tiempo real-, en la red de transporte urbano de la ciudad de Vigo._\n\n## Microservice structure\n\n![VigoBusBot microservice structure](VigoBusTelegramBot_Structure.svg)\n\n- VigoBusTelegramBot: this project, serving as the Telegram Bot backend, and connecting to the following API:\n- VigoBusAPI: REST API to fetch stop \u0026 real-time estimated time of buses arrival\n- Persistence API: REST API to persist data\n- MongoDB: used by both REST API to persist data - and for bot requests logs persistence\n\n## Requirements\n\n- Python \u003e= 3.9\n- [VigoBusAPI](https://github.com/David-Lor/Python_VigoBusAPI)\n- [DataManager (Persistence API)](https://github.com/David-Lor/Telegram-BusBot-DataManager)\n- requirements listed in [requirements.txt](requirements.txt)\n- A Telegram bot created with BotFather\n    - For Inline mode: enable Inline Mode and set Inline Feedback to 100% on Bot Settings\n- A MongoDB database (for both required API - and requests log persistence)\n\n### Deployment\n\n- Docker recommended for deployment using the [Docker Python Git App](https://github.com/David-Lor/Docker-Python-Git-App) image\n- Refer to [docker-compose.yml](tools/deployment/vigobusbot) file to deploy all the required services (deploying as-is requires Docker Compose \u003e= 1.27.4)\n\n## Changelog\n\n- 2.6.0\n  - update deprecated Stop messages with a warning\n  - include calculated arrival time (HH:MM) on buses\n  - avoid logging warnings on 404 HTTP responses\n  - allow loading settings from an arbitrary env file specified by the ENV_FILE env var\n  - upgrade requirements versions\n- 2.5.1\n    - fix error handling for HTTP timeouts\n    - return the request id on error messages (only normal messages, not inline replies)\n    - support for self-hosted Telegram Bot API\n- 2.5.0\n    - allow searching stops by name without command\n    - upgrade requirements versions\n    - refactor deployment docker-compose example\n- 2.4.1\n    - fix wrong characters from API responses due to bad encoding (switch from `json.loads(response.text)` to `response.json()`)\n    - fix/improve request error handling: log exceptions, improve logging\n- 2.4.0\n    - search stop by id through inline mode\n    - limit stop search results to 50 (Telegram Bot API limit for inline query results)\n- 2.3.0\n    - add request logs persistence in MongoDB\n- 2.2.0\n    - search stops by name (command \u0026 inline mode)\n- 2.1.0\n    - send bot commands list to Telegram programmatically\n    - improve logging\n- 2.0.2\n    - delete original message with ForceReply markup after user sends its Feedback message\n- 2.0.1\n    - refactor message generators\n    - refactor HTTP requester functions, merging in one service\n- 2.0.0\n    - refactor Telegram Bot request services/helpers\n- 1.2.1\n    - remove dotenv-settings-handler in favor of pydantic only\n- 1.2.0\n    - add one-way feedback communication system (adding \"admin_userid\" setting)\n    - fix error when renaming stop after forcereply timeout (TTL)\n    - rename Telegram setting \"stop_rename_request_ttl\" to \"force_reply_ttl\"\n- 1.1.1\n    - fix encoding on extracted user data (saved stops) on JSON file\n- 1.1.0\n    - extract user data (saved stops) into JSON file\n    - delete all persisted user data (saved stops)\n    - change Markdown for HTML, to avoid errors when including markdown characters in text (such as underscore)\n- 1.0.0\n    - **(breaking change @ Mongo/Persistence API)** encode/decode saved user stop data into/from Persistence API\n    - fix \"task exception was never retrieved\" warning on aiogram error handler\n    - add support for loading bot token from a secrets file\n    - add request id as part of the logging context\n    - fix stop remove name\n    - remove usage of external pybusent library in favor of self-defined classes\n    - sort user saved stops by stop custom or real name\n    - fix stop rename failing\n- 0.1.6\n    - add logging\n- 0.1.5:\n    - fix stop rename crashing\n    - add error handler for uncatched global, generic exceptions\n    - switch from requests_async to httpx\n    - add retries on HTTP requests\n    - add user request rate limit (amount per time)\n- 0.1.4\n    - button on Stop messages to show More/Less buses\n- 0.1.3\n    - support for setting custom stop names on user saved stops\n- 0.1.2\n    - support for Saved Stops and working command to list all of them\n- 0.1.1\n    - inline keyboard markup with callback support for Refreshing Stop messages\n- 0.1.0\n    - initial async version (basic Get Stop messages)\n\n## Disclaimer\n\nThis project is not endorsed by, directly affiliated with, maintained by, sponsored by or in any way officially related with the company, companies and/or entities responsible for the public transport service of the city of Vigo.\n\n_Este proyecto no cuenta con soporte de, no está afiliado con, mantenido por, patrocinado por ni en cualquier otra manera oficialmente vinculado con la compañía, compañías y/o entidades responsables del sistema de transporte público de la ciudad de Vigo._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavid-lor%2Fvigobus-telegrambot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavid-lor%2Fvigobus-telegrambot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavid-lor%2Fvigobus-telegrambot/lists"}