Bot.Storage.EFCore
1.0.0
dotnet add package Bot.Storage.EFCore --version 1.0.0
NuGet\Install-Package Bot.Storage.EFCore -Version 1.0.0
<PackageReference Include="Bot.Storage.EFCore" Version="1.0.0" />
<PackageVersion Include="Bot.Storage.EFCore" Version="1.0.0" />
<PackageReference Include="Bot.Storage.EFCore" />
paket add Bot.Storage.EFCore --version 1.0.0
#r "nuget: Bot.Storage.EFCore, 1.0.0"
#:package Bot.Storage.EFCore@1.0.0
#addin nuget:?package=Bot.Storage.EFCore&version=1.0.0
#tool nuget:?package=Bot.Storage.EFCore&version=1.0.0
Bot
Минимальный фреймворк для создания Telegram-ботов на .NET.
Быстрый старт
- Установите .NET 8 SDK.
- Клонируйте репозиторий и перейдите в каталог проекта:
git clone <repo-url> cd bot
- Создайте бота через @BotFather и получите токен.
- Запустите пример HelloBot с вашим токеном:
cd Bot.Examples.HelloBot export BOT_TOKEN="<ваш-токен>" dotnet run
- Отправьте
/start
в Telegram — бот ответит «Hello».
Настройки можно менять в appsettings.json
или через переменные окружения.
Шаблоны
Доступен один шаблон: dotnet new bot
.
Основные параметры:
--transport polling|webhook
— способ получения обновлений (по умолчанию polling);--store file|redis|ef
— хранилище состояния (file
по умолчанию);--admin
— включить административное API;--webapp
— добавить точки Mini App;--lang ru|en
— язык исходников и комментариев.
Скрипты быстрого старта
scripts/quickstart.sh
и scripts/quickstart.ps1
проверяют работоспособность шаблона:
устанавливают его, запускают сгенерированный бот и вызывают набор тестовых команд.
Упаковка NuGet-пакетов
Для сборки NuGet-пакетов используйте scripts/pack.sh
на Linux и macOS или scripts/pack.ps1
на Windows.
Скрипт восстанавливает зафиксированные зависимости и собирает пакеты в конфигурации Release
.
Переключение хранилища
Тип хранилища выбирается переменной Storage__Provider
(file
, redis
или ef
).
Прочие параметры задаются в секции Storage
.
Административное API
API включено по умолчанию. Для запросов необходим заголовок X-Admin-Token
,
значение берётся из секции Admin
или переменной Admin__AdminToken
.
Дополнительные переменные окружения
QUEUE__POLICY
— политика переполнения очереди (Wait
илиDrop
);STOP__DRAIN_TIMEOUT_SECONDS
— таймаут ожидания при остановке;OBS__EXPORT__OTLP
— включение OTLP-экспортёра наблюдаемости;OUTBOX__PATH
— каталог для хранения сообщений аутбокса.
Документация
Настройки Mini App
WebApp__PublicUrl
— публичный URL страницы;WebApp__AuthTtlSeconds
— срок жизни JWT в секундах;WebApp__InitDataTtlSeconds
— время жизни параметраinitData
;WebApp__Csp__AllowedOrigins__0
— дополнительный origin для CSP.
Лидерборды на Redis
using Bot.Storage.Redis;
var options = new RedisOptions { Connection = mux, Database = 0, Prefix = "lb" };
var board = new RedisSortedSet<Player>(options);
await board.AddAsync("game", new Player("Alice"), 1200, ct);
await board.AddAsync("game", new Player("Bob"), 1500, ct);
var top = await board.RangeByScoreAsync("game", 0, double.MaxValue, ct);
public sealed record Player(string Name);
Значения сериализуются в JSON и сохраняются с указанным префиксом ключей.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Bot.Abstractions (>= 1.0.0)
- Microsoft.EntityFrameworkCore (>= 8.0.4)
- Microsoft.EntityFrameworkCore.Relational (>= 8.0.4)
- Microsoft.EntityFrameworkCore.Sqlite (>= 8.0.4)
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 8.0.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|