Тонкий типобезопасный клиент Telegram Bot API для .NET 9. Никакой магии, никакого dynamic, никакого DI-контейнера — только System.Net.Http и System.Text.Json под капотом.
- Методы называются как в официальной документации (
SendMessageAsync,EditMessageTextAsync, …) — учить нечего. - Все ошибки — сетевые, HTTP,
ok=falseот Telegram — сводятся к единомуTelebotExceptionс полемCode. - Файлы отправляются по
file_id, URL или потоком — транспорт сам выбирает form-urlencoded или multipart.
dotnet add package Bucketlab.Telebotusing Telebot;
var bot = new Telegram("BOT_TOKEN");
var offset = 0;
while (true)
{
var updates = await bot.GetUpdatesAsync(
new GetUpdatesRequestParams(Offset: offset, Timeout: 30),
CancellationToken.None);
foreach (var update in updates)
{
offset = (int)update.UpdateId + 1;
if (update.Message?.Text is not { } text) continue;
await bot.SendMessageAsync(
new SendMessageRequestParams(update.Message.Chat.Id, $"Echo: {text}"),
CancellationToken.None);
}
}Всё, что нужно: токен от BotFather, цикл getUpdates с монотонным offset, отправка ответа.
| Метод | Описание |
|---|---|
getMe |
информация о боте, проверка токена |
getUpdates |
long-polling новых событий |
setWebhook |
регистрация webhook-URL |
sendMessage |
отправка текстовых сообщений |
sendPhoto |
отправка фото (file_id / URL / поток) |
editMessageText |
редактирование текста ранее отправленного сообщения |
editMessageReplyMarkup |
замена или снятие инлайн-клавиатуры |
sendPoll |
отправка опросов |
stopPoll |
принудительное закрытие опроса с финальной статистикой |
answerCallbackQuery |
подтверждение приёма нажатия кнопки |
getFile + скачивание |
получение метаданных файла и его содержимого |
Всё, что сложнее эхо-бота, вынесено в docs/examples/:
- Инлайн-клавиатуры и
callback_query - Обычные клавиатуры,
ForceReplyи их удаление - Опросы и
poll_answer-апдейты - Отправка фото
- Скачивание файлов
- Webhook вместо long-polling
- Ответы, цитаты и форматирование
- Кастомный транспорт (self-hosted API, прокси, моки)
- Обработка ошибок
Ближайшие направления развития — по мере запроса, без жёстких сроков:
- Инлайн-режим. Модель
InlineQuery, поле вUpdate,answerInlineQueryс типом-результатомInlineQueryResultArticleдля текстовых подсказок. - Медиа-методы.
sendDocument,sendVideo,sendAudio— по тому же контракту, что уже реализован дляsendPhoto. - Форматирование в тексте.
entitiesвsendMessage/editMessageText(сейчас есть толькоparse_mode). - Бизнес-подключения.
business_connection_idв методах отправки и редактирования — когда появится реальный кейс с бизнес-аккаунтами.
Список не финальный — новые методы добавляются по мере появления реальных потребностей. Хочешь ускорить конкретный пункт — открывай issue с описанием сценария.
MIT © Bucketlab