{"id":31771094,"url":"https://github.com/viklover/telegram.bot.extensions.messagebuilder","last_synced_at":"2026-01-20T17:30:00.069Z","repository":{"id":317901220,"uuid":"933670126","full_name":"viklover/Telegram.Bot.Extensions.MessageBuilder","owner":"viklover","description":".NET library for building Telegram Bot messages. Simplifies creating messages with text formatting, media attachments, and splitting of long messages to comply with Telegram's limits","archived":false,"fork":false,"pushed_at":"2025-10-03T19:41:09.000Z","size":167,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-03T19:51:31.934Z","etag":null,"topics":["dotnet","library","telegram"],"latest_commit_sha":null,"homepage":"https://www.nuget.org/packages/Telegram.Bot.Messages/","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/viklover.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":null,"dco":null,"cla":null}},"created_at":"2025-02-16T12:30:59.000Z","updated_at":"2025-10-03T19:41:13.000Z","dependencies_parsed_at":"2025-10-06T10:21:45.454Z","dependency_job_id":null,"html_url":"https://github.com/viklover/Telegram.Bot.Extensions.MessageBuilder","commit_stats":null,"previous_names":["viklover/telegram.bot.extensions.messagebuilder"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/viklover/Telegram.Bot.Extensions.MessageBuilder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viklover%2FTelegram.Bot.Extensions.MessageBuilder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viklover%2FTelegram.Bot.Extensions.MessageBuilder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viklover%2FTelegram.Bot.Extensions.MessageBuilder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viklover%2FTelegram.Bot.Extensions.MessageBuilder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viklover","download_url":"https://codeload.github.com/viklover/Telegram.Bot.Extensions.MessageBuilder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viklover%2FTelegram.Bot.Extensions.MessageBuilder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002574,"owners_count":26083420,"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-10T02:00:06.843Z","response_time":62,"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":["dotnet","library","telegram"],"created_at":"2025-10-10T03:19:18.854Z","updated_at":"2025-10-10T03:19:22.514Z","avatar_url":"https://github.com/viklover.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Telegram Message Builder for .NET\n[![Nuget](https://badge.fury.io/nu/Telegram.Bot.Messages.svg)](https://badge.fury.io/nu/Telegram.Bot.Messages)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/viklover/Telegram.Bot.Messages/blob/master/LICENSE.txt)\n![Linter workflow](https://github.com/viklover/Telegram.Bot.Extensions.MessageBuilder/actions/workflows/linter.yml/badge.svg)\n![Unit tests workflow](https://github.com/viklover/Telegram.Bot.Extensions.MessageBuilder/actions/workflows/unit-tests.yml/badge.svg)\n\nSimple message builder for the [Telegram.Bot .NET client](https://github.com/TelegramBots/Telegram.Bot) that simplifies creating messages with [styled entities](https://core.telegram.org/api/entities) and splitting long messages to comply with Telegram's limits.\n\n\u003cimg src=\"Telegram.Bot.Messages/screenshot.png\" width=\"300\"\u003e\n\n## 🚀 Quick start\nInstallation:\n```csharp\ndotnet add package Telegram.Bot.Messages --version 1.0.4\n```\nExample usage:\n```csharp\nvar builder = new MessageBuilder();\nbuilder.Append(\"Hello\");\nbuilder.AppendBoldLine(\", my dear user!\");\nbuilder.AppendLine();\nbuilder.AppendParagraph(\"🧙 Styled entities\", (MessageBuilder printer) =\u003e {\n    printer.AppendField(\"1\", value =\u003e value.AppendBold(\"Bold text\"));\n    printer.AppendField(\"2\", value =\u003e value.AppendItalic(\"Italic text\"));\n    printer.AppendField(\"3\", value =\u003e value.AppendUnderlined(\"Underlined text\"));\n    printer.AppendField(\"4\", value =\u003e value.AppendStrikethrough(\"Strikethrough text\"));\n    printer.AppendField(\"5\", value =\u003e value.AppendCode(\"Code text\"));\n    printer.AppendField(\"6\", value =\u003e value.Append(\"Preformatted text\").AppendPreformatted(\"Hey\"));\n});\nbuilder.AppendLine(\"C#\");\nbuilder.AppendPreformattedLine(\"var result = 4 + 4;\", \"csharp\");\nbuilder.AppendLine();\nbuilder.AppendLink(\"Click to link!\", new Uri(\"https://google.com\"));\nbuilder.AppendLine();\n\nvar message = builder.Build();\n\n// send message with styled entities\nawait bot.SendMessage(chatId, message.Content, entities: message.Entities);\n\n// for long messages: split by paragraphs (handles text+attachments)\nvar slices = builder.Build(MessageSplitStrategy.Paragraph, MessageContentType.TextWithAttachments);\nforeach (var message in slices) {\n    await bot.SendMessage(chatId, message.Content, entities: message.Entities);\n}\n```\n\n## 📚 Features\n### ✅ Supported entities\n\n| Message entity    | State           |\n|-------------------|-----------------|\n| Bold              | ✅ Supported     |\n| Italic            | ✅ Supported     |\n| Code              | ✅ Supported     |\n| Strike            | ✅ Supported     |\n| Underline         | ✅ Supported     |\n| Preformatted text | ✅ Supported     |\n| Mention user name | ⏳ Not supported |\n| Custom emoji      | ⏳ Not supported |\n\n### 📏 Message Splitting\nEasily split long messages using different strategies\n| Split strategy | Description               |\n|----------------|---------------------------|\n| By word        | Splits at word boundaries |\n| By line        | Splits at line breaks     |\n| By paragraph   | Splits between paragraph  |\n\n\n### ⚠️ Size Limitations\nTelegram enforces different limits based on message type:\n\n| Message Type       | Character Limit  |\n|--------------------|------------------|\n| With attachments   | 1024             |\n| Text-only messages | 4096             |\n\nSpecify `MessageContentType` when splitting:\n```csharp\nvar slices = builder.Build(\n    MessageSplitStrategy.Paragraph, \n    MessageContentType.TextWithAttachments\n);\n```\n\n## 🛠️ API Reference\nCore Methods\n```csharp\nMessageBuilder Append(char symbol)\nMessageBuilder Append(MessageBuilder builder)\nMessageBuilder AppendLine()\nMessageBuilder AppendLine(string text)\n\nMessageBuilder AppendBold(string text, bool nl = false)\nMessageBuilder AppendBoldLine(string text)\n\nMessageBuilder AppendItalic(string text, bool nl = false)\nMessageBuilder AppendItalicLine(string text)\n\nMessageBuilder AppendUnderlined(string text, bool nl = false)\nMessageBuilder AppendUnderlinedLine(string text)\n\nMessageBuilder AppendStrikethrough(string text, bool nl = false)\nMessageBuilder AppendStrikethroughLine(string text)\n\nMessageBuilder AppendPreformatted(string text, string? lang = null, bool nl = false)\nMessageBuilder AppendPreformattedLine(string text, string? lang = null)\n\nMessageBuilder AppendCode(string code, bool nl = false)\nMessageBuilder AppendCodeLine(string code, bool nl = false)\n\nMessageBuilder AppendLink(string label, Uri uri, bool nl = false) \nMessageBuilder AppendLinkLine(string label, Uri uri)\n\nMessageBuilder AppendField(string name, string value, bool nl = true, bool boldTitle = false)\nMessageBuilder AppendField(string name, Action\u003cMessageBuilder\u003e printer, bool nl = true, bool boldTitle = false)\n\nMessageBuilder AppendParagraph(Action\u003cMessageBuilder\u003e printer, bool nl = true)\nMessageBuilder AppendParagraph(string? title, Action\u003cMessageBuilder\u003e printer, bool nl = true, bool boldTitle = false)\n\nMessageBuilder TrimEnd()\n\nMessageSlice Build()\nMessageSlice[] Build(MessageSplitStrategy splitStrategy, MessageContentType contentType)\n```\n\n## 🛠️ Contribution\nWe welcome contributions! Please feel free to:\n* Report bugs 🐛\n* Suggest features 💡\n* Submit pull requests 🔄\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviklover%2Ftelegram.bot.extensions.messagebuilder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviklover%2Ftelegram.bot.extensions.messagebuilder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviklover%2Ftelegram.bot.extensions.messagebuilder/lists"}