using Luna.Channels.Abstractions; using Luna.Channels.Telegram; using Luna.Configuration; using Luna.Configuration.Extensions; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Telegram.Bot; namespace Luna.Channels.Extensions; public static class ServiceCollectionExtensions { extension(IServiceCollection services) { public IServiceCollection AddChannels() { services.AddSingleton(); // Telegram — BotToken is bound from configuration ("Channels:Telegram"), // supplied via the Channels__Telegram__BotToken environment variable. services.AddTelegramOptions(); services.AddSingleton(provider => provider.GetRequiredService>().Value); services.AddSingleton(provider => new TelegramBotClient(provider.GetRequiredService().BotToken)); services.AddHostedService(); return services; } } }