Skip to content

Repository files navigation

Bucketlab.Telebot

NuGet Downloads License: MIT .NET

Тонкий типобезопасный клиент 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.Telebot

Эхо-бот

using 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/:

Планы

Ближайшие направления развития — по мере запроса, без жёстких сроков:

  • Инлайн-режим. Модель InlineQuery, поле в Update, answerInlineQuery с типом-результатом InlineQueryResultArticle для текстовых подсказок.
  • Медиа-методы. sendDocument, sendVideo, sendAudio — по тому же контракту, что уже реализован для sendPhoto.
  • Форматирование в тексте. entities в sendMessage / editMessageText (сейчас есть только parse_mode).
  • Бизнес-подключения. business_connection_id в методах отправки и редактирования — когда появится реальный кейс с бизнес-аккаунтами.

Список не финальный — новые методы добавляются по мере появления реальных потребностей. Хочешь ускорить конкретный пункт — открывай issue с описанием сценария.

Лицензия

MIT © Bucketlab

About

C# Telegram bot SDK

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages