Dependency injection
Начиная с версии библиотеки 0.5.0 появилась возможность задействовать dependency injection.
В данном примере будет показано как создать telegram бота с использование dependency injection в ASP.NET Core.
Пример - https://github.com/prethink/PRTelegramBot/tree/master/AspNetExample
В program.cs вы должны использовать метод AddBotHandlers()
builder.Services.AddBotHandlers();
или
builder.Services.AddTransientBotHandlers();
builder.Services.AddSingletonBotHandlers();
builder.Services.AddScopedBotHandlers();Благодаря этому система найдет все классы в сборке которые помечены атрибутом BotHandler и создаст экземпляры классов, после чего пробросит все требуемые зависимости.
После var app = builder.Build() вы должны инициализировать создание экземпляра класса для telegram ботам и передать в билдер бота зависимость IServiceProvider.
var app = builder.Build();
var serviceProvider = app.Services.GetService<IServiceProvider>();
//Создание и запуск бота
var telegram = new PRBotBuilder("Token")
.SetServiceProvider(serviceProvider)
.Build();Пример - Program.cs
using PRTelegramBot.Configs;
using PRTelegramBot.Core;
using PRTelegramBot.Extensions;
var builder = WebApplication.CreateBuilder(args);
//....Добавьте ваши зависимости
//Инициализация классов для работы ботов с DI
builder.Services.AddBotHandlers();
var app = builder.Build();
var serviceProvider = app.Services.GetService<IServiceProvider>();
var telegram = new PRBotBuilder("Token")
.SetServiceProvider(serviceProvider)
.Build();
await telegram.StartAsync();
app.Run();Создайте класс с названием которое вам требуется и добавьте к нему атрибут BotHandler. Внутри класса укажите зависимости которые хотите пробросить и создайте команды обработчики внутри класса.
Сигнатура команды обработки:
Пример - BotController.cs
Last updated