{"id":37032510,"url":"https://github.com/deploy-f/botf","last_synced_at":"2026-01-14T03:59:10.942Z","repository":{"id":42226076,"uuid":"423600676","full_name":"deploy-f/botf","owner":"deploy-f","description":"🦾Make beautiful and clear telegram bots with the asp.net-like architecture!","archived":false,"fork":false,"pushed_at":"2024-08-15T20:50:40.000Z","size":223,"stargazers_count":51,"open_issues_count":4,"forks_count":9,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-28T05:23:32.441Z","etag":null,"topics":["bot-framework","telegram","telegram-bot","telegram-bot-api"],"latest_commit_sha":null,"homepage":"https://t.me/botf_community","language":"C#","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/deploy-f.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},"funding":{"patreon":"deployf"}},"created_at":"2021-11-01T20:04:45.000Z","updated_at":"2025-06-16T14:45:13.000Z","dependencies_parsed_at":"2024-03-07T22:31:23.020Z","dependency_job_id":null,"html_url":"https://github.com/deploy-f/botf","commit_stats":{"total_commits":70,"total_committers":4,"mean_commits":17.5,"dds":0.09999999999999998,"last_synced_commit":"e25bf788e4246be4ba50a86426e12c2cccd192b7"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/deploy-f/botf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deploy-f%2Fbotf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deploy-f%2Fbotf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deploy-f%2Fbotf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deploy-f%2Fbotf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deploy-f","download_url":"https://codeload.github.com/deploy-f/botf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deploy-f%2Fbotf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"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":["bot-framework","telegram","telegram-bot","telegram-bot-api"],"created_at":"2026-01-14T03:59:10.375Z","updated_at":"2026-01-14T03:59:10.937Z","avatar_url":"https://github.com/deploy-f.png","language":"C#","funding_links":["https://patreon.com/deployf"],"categories":[],"sub_categories":[],"readme":"﻿# BotF\n[![Nuget](https://img.shields.io/nuget/v/Deployf.Botf)](https://www.nuget.org/packages/Deployf.Botf) [![GitHub](https://img.shields.io/github/license/deploy-f/botf)](https://github.com/deploy-f/botf/blob/master/LICENSE) [![CI](https://github.com/deploy-f/botf/actions/workflows/dotnet.yml/badge.svg)](https://github.com/deploy-f/botf/actions/workflows/dotnet.yml) [![Telegram Group](https://img.shields.io/endpoint?url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fbotf_community)](https://t.me/botf_community)  \n\nMake beautiful and clear telegram bots with the asp.net-like architecture!\n\nBotF has next features:\n\n🤘 long pooling and webhook mode without any changes in the code  \n😎 very convinient way to work with commands and reply buttons  \n👆 integrated pagination with buttons  \n🆔 authentication and role-based authorization  \n🔥 statemachine for complicated dialogs with users  \n🕸️ asp.net-like approach to develop bots  \n⚒️ automatic creating of command menu  \n🗓️ integrated DateTime picker  \n📤 auto sending  \n📲 webapp native support  \n🚤 good performance  \n\n## Documentaion\n\n 🔜 Documentation is under developement. We will push it here in the readme file soon. Feel free to ask us your questions in community chat in telegram [![Telegram Group](https://img.shields.io/endpoint?url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fbotf_community)](https://t.me/botf_community)\n\n ▶️ There is a good video on youtube https://www.youtube.com/watch?v=hieLnm9wO6s\n\n## Install\n\n```bash\ndotnet add package Deployf.Botf\n```\n\n## Example\n\nPut next code into `Program.cs` file\n\n```csharp\nusing Deployf.Botf;\n\nclass Program : BotfProgram\n{\n    // It's boilerplate program entrypoint.\n    // We just simplified all usual code into static method StartBot.\n    // But in this case of starting of the bot, you should add a config section under \"bot\" key to appsettings.json\n    public static void Main(string[] args) =\u003e StartBot(args);\n\n    // Action attribute mean that you mark async method `Start`\n    // as handler for user's text in message which equal to '/start' string.\n    // You can name method as you want\n    // And also, second argument of Action's attribute is a description for telegram's menu for this action\n    [Action(\"/start\", \"start the bot\")]\n    public void Start()\n    {\n        // Just sending a reply message to user. Very simple, isn't?\n        Push($\"Send `{nameof(Hello)}` to me, please!\");\n    }\n\n    [Action(nameof(Hello))]\n    public void Hello()\n    {\n        Push(\"Hey! Thank you! That's it.\");\n    }\n\n    // Here we handle all unknown command or just text sent from user\n    [On(Handle.Unknown)]\n    public async Task Unknown()\n    {\n        // Here, we use the so-called \"buffering of sending message\"\n        // It means you dont need to construct all message in the string and send it once\n        // You can use Push to just add the text to result message, or PushL - the same but with new line after the string.\n        PushL(\"You know.. it's very hard to recognize your command!\");\n        PushL(\"Please, write a correct text. Or use /start command\");\n\n        // And finally send buffered message\n        await Send();\n    }\n}\n```\n\nAnd replace content of `appsettings.json` with your bot username and token:\n\n```\n{\n  \"botf\": \"123456778990:YourToken\"\n}\n```\n\nAnd that's it! Veeery easy, isn't?  \nJust run the program :)\n\nOther examples you can find in `/Examples` folder.\n\n## Hosting\n\nAfter you develop your bot, you can deploy it to our hosting: [deploy-f.com](https://deploy-f.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeploy-f%2Fbotf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeploy-f%2Fbotf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeploy-f%2Fbotf/lists"}