{"id":13483310,"url":"https://github.com/protoncr/tourmaline","last_synced_at":"2026-01-25T15:31:52.254Z","repository":{"id":45545498,"uuid":"121324305","full_name":"protoncr/tourmaline","owner":"protoncr","description":"Simple Telegram bot library for Crystal","archived":false,"fork":false,"pushed_at":"2025-11-09T01:41:37.000Z","size":31503,"stargazers_count":163,"open_issues_count":8,"forks_count":38,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-11-09T03:26:07.710Z","etag":null,"topics":["bot","crystal","middleware","rest-api","stickers","telegraf","telegram","telegram-bot","telegram-bot-api","telegram-bots","telegram-channel","telegram-cli","telegrambot","tourmaline","webhook","webhooks"],"latest_commit_sha":null,"homepage":"https://tourmaline.dev","language":"Crystal","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/protoncr.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"watzon","patreon":"watzon","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2018-02-13T01:26:55.000Z","updated_at":"2025-10-04T22:46:30.000Z","dependencies_parsed_at":"2024-01-05T02:26:37.751Z","dependency_job_id":"da2a433c-1c12-4f95-8be9-31545aac4662","html_url":"https://github.com/protoncr/tourmaline","commit_stats":null,"previous_names":["watzon/tourmaline"],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/protoncr/tourmaline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protoncr%2Ftourmaline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protoncr%2Ftourmaline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protoncr%2Ftourmaline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protoncr%2Ftourmaline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/protoncr","download_url":"https://codeload.github.com/protoncr/tourmaline/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protoncr%2Ftourmaline/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28754823,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T13:59:49.818Z","status":"ssl_error","status_checked_at":"2026-01-25T13:59:33.728Z","response_time":113,"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":["bot","crystal","middleware","rest-api","stickers","telegraf","telegram","telegram-bot","telegram-bot-api","telegram-bots","telegram-channel","telegram-cli","telegrambot","tourmaline","webhook","webhooks"],"created_at":"2024-07-31T17:01:09.944Z","updated_at":"2026-01-25T15:31:52.235Z","avatar_url":"https://github.com/protoncr.png","language":"Crystal","funding_links":["https://github.com/sponsors/watzon","https://patreon.com/watzon"],"categories":["Framework Components"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./img/logo.png\" alt=\"tourmaline logo\"\u003e\n\u003c/div\u003e\n\n# Tourmaline\n\n[![Chat on Telegram](https://patrolavia.github.io/telegram-badge/chat.png)](https://t.me/protoncr)\n\nTelegram Bot API library written in Crystal. Meant to be a simple, easy to use, and fast library for writing Telegram bots.\n\n## Installation\n\nAdd this to your application's `shard.yml`:\n\n```yaml\ndependencies:\n  tourmaline:\n    github: protoncr/tourmaline\n    branch: master\n```\n\n## Usage\n\nAPI documentation is also available [here](https://tourmaline.dev/api_reference/Tourmaline/).\n\nExamples are available in the [examples](https://github.com/protoncr/tourmaline/tree/master/examples) folder.\n\nJust for README purposes though, let's look at the echo bot example:\n\n```crystal\nrequire \"tourmaline\"\n\nclient = Tourmaline::Client.new(ENV[\"BOT_TOKEN\"])\n\necho_handler = Tourmaline::CommandHandler.new(\"echo\") do |ctx|\n  text = ctx.text.to_s\n  ctx.reply(text) unless text.empty?\nend\n\nclient.register(echo_handler)\n\nclient.poll\n```\n\n## Roadmap\n\nThe following features are/will be implemented:\n\n- [x] HTTP/HTTP Proxies\n- [x] Client API\n  - [x] Implementation examples\n  - [x] Handlers for commands, queries, and more\n  - [x] Robust middleware system\n  - [x] Standard API queries\n  - [x] Stickers\n  - [x] Inline mode\n  - [x] Long polling\n  - [x] Webhooks\n  - [x] Payments\n  - [x] Games\n  - [x] Polls\n  - [x] Telegram Passport\n- [ ] Framework Adapters\n  - [ ] Kemal\n  - [ ] Amber\n  - [ ] Lucky\n  - [ ] Athena\n  - [ ] Grip\n\nIf you want a new feature feel free to submit an issue or open a pull request.\n\n## Contributing\n\n1. Fork it ( https://github.com/protoncr/tourmaline/fork )\n2. Create your feature branch (git checkout -b my-new-feature)\n3. Commit your changes (git commit -am 'Add some feature')\n4. Push to the branch (git push origin my-new-feature)\n5. Create a new Pull Request\n\n## Contributors\n\nThanks to all the people that have contributed to this project!\n\n[![Contributors](https://contrib.rocks/image?repo=protoncr/tourmaline)](https://github.com/protoncr/tourmaline/graphs/contributors)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotoncr%2Ftourmaline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprotoncr%2Ftourmaline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotoncr%2Ftourmaline/lists"}