* Added StartReceiving method as ITelegratoBot interface member
* Added missing summaries * Fixed compiler warning and infos * Code cleanup and bugfixes
This commit is contained in:
@@ -35,7 +35,7 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="T:Telegrator.Mediation.HostedUpdateWebhooker">
|
<member name="T:Telegrator.Mediation.HostedUpdateWebhooker">
|
||||||
<summary>
|
<summary>
|
||||||
Service for receiving updates for Hosted telegram bots via Webhooks
|
Service for receiving updates for Hosted telegram bots via Webhooks and queuing them to router
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Telegrator.Mediation.HostedUpdateWebhooker.#ctor(Telegram.Bot.ITelegramBotClient,Telegrator.Core.IUpdateRouter,Microsoft.Extensions.Options.IOptions{Telegrator.Hosting.Web.WebhookerOptions})">
|
<member name="M:Telegrator.Mediation.HostedUpdateWebhooker.#ctor(Telegram.Bot.ITelegramBotClient,Telegrator.Core.IUpdateRouter,Microsoft.Extensions.Options.IOptions{Telegrator.Hosting.Web.WebhookerOptions})">
|
||||||
@@ -95,6 +95,14 @@
|
|||||||
Provides method to configure Telegram Bot WebHost
|
Provides method to configure Telegram Bot WebHost
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Telegrator.WebServicesCollectionExtensions.ConfigureWebhooker(Microsoft.Extensions.DependencyInjection.IServiceCollection,Telegrator.Hosting.Web.WebhookerOptions)">
|
||||||
|
<summary>
|
||||||
|
Adds WebhookerOptions to services
|
||||||
|
</summary>
|
||||||
|
<param name="services"></param>
|
||||||
|
<param name="options"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:Telegrator.WebServicesCollectionExtensions.TryFindWebhooker(System.IServiceProvider,Telegrator.Mediation.HostedUpdateWebhooker@)">
|
<member name="M:Telegrator.WebServicesCollectionExtensions.TryFindWebhooker(System.IServiceProvider,Telegrator.Mediation.HostedUpdateWebhooker@)">
|
||||||
<summary>
|
<summary>
|
||||||
Searchs for <see cref="T:Telegrator.Mediation.HostedUpdateWebhooker"/> hosted service inside hosts services
|
Searchs for <see cref="T:Telegrator.Mediation.HostedUpdateWebhooker"/> hosted service inside hosts services
|
||||||
|
|||||||
@@ -4,6 +4,116 @@
|
|||||||
<name>Telegrator.Hosting.WideBot</name>
|
<name>Telegrator.Hosting.WideBot</name>
|
||||||
</assembly>
|
</assembly>
|
||||||
<members>
|
<members>
|
||||||
|
<member name="T:Telegrator.Mediation.HostedWideBotUpdateReceiver">
|
||||||
|
<summary>
|
||||||
|
Service for receiving updates for Hosted wide telegram bots and queuing them to router
|
||||||
|
</summary>
|
||||||
|
<param name="logger"></param>
|
||||||
|
<param name="botClient"></param>
|
||||||
|
<param name="updateRouter"></param>
|
||||||
|
<param name="options"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Mediation.HostedWideBotUpdateReceiver.#ctor(Microsoft.Extensions.Logging.ILogger{Telegrator.Mediation.HostedWideBotUpdateReceiver},Telegram.Bot.ITelegramBotClient,Telegrator.Core.IUpdateRouter,Microsoft.Extensions.Options.IOptions{Telegram.Bot.Polling.ReceiverOptions})">
|
||||||
|
<summary>
|
||||||
|
Service for receiving updates for Hosted wide telegram bots and queuing them to router
|
||||||
|
</summary>
|
||||||
|
<param name="logger"></param>
|
||||||
|
<param name="botClient"></param>
|
||||||
|
<param name="updateRouter"></param>
|
||||||
|
<param name="options"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Mediation.HostedWideBotUpdateReceiver.ExecuteAsync(System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="T:Telegrator.Mediation.WideUpdateReceiver">
|
||||||
|
<summary>
|
||||||
|
Reactive implementation of <see cref="T:Telegrator.Core.IUpdateReceiver"/> for polling updates from Telegram.
|
||||||
|
Provides custom update receiving logic with error handling and configuration options.
|
||||||
|
</summary>
|
||||||
|
<param name="client">The Telegram bot client for making API requests.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Mediation.WideUpdateReceiver.#ctor(Telegram.Bot.WTelegramBotClient)">
|
||||||
|
<summary>
|
||||||
|
Reactive implementation of <see cref="T:Telegrator.Core.IUpdateReceiver"/> for polling updates from Telegram.
|
||||||
|
Provides custom update receiving logic with error handling and configuration options.
|
||||||
|
</summary>
|
||||||
|
<param name="client">The Telegram bot client for making API requests.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Mediation.WideUpdateReceiver.ReceiveAsync(Telegram.Bot.Polling.IUpdateHandler,System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="T:Telegrator.TelegratorWClient">
|
||||||
|
<summary>
|
||||||
|
Client class for the Telegrator library with Wider functionality, provided by WTelegramBotClient.
|
||||||
|
Extends TelegramBotClient with reactive capabilities for handling updates.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Telegrator.TelegratorWClient.Options">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="P:Telegrator.TelegratorWClient.Handlers">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="P:Telegrator.TelegratorWClient.BotInfo">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="P:Telegrator.TelegratorWClient.UpdateRouter">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.TelegratorWClient.#ctor(Telegram.Bot.WTelegramBotClientOptions,Telegrator.TelegratorOptions,System.Net.Http.HttpClient,System.Threading.CancellationToken)">
|
||||||
|
<summary>
|
||||||
|
Initializes new instance of <see cref="T:Telegrator.TelegratorWClient"/>
|
||||||
|
</summary>
|
||||||
|
<param name="wOptions"></param>
|
||||||
|
<param name="telegratorOptions"></param>
|
||||||
|
<param name="httpClient"></param>
|
||||||
|
<param name="cancellationToken"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.TelegratorWClient.StartReceiving(Telegram.Bot.Polling.ReceiverOptions,System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.TelegratorWClient.StartReceivingAsync(Telegram.Bot.Polling.ReceiverOptions,System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="T:Telegrator.HandlersExtensions">
|
||||||
|
<summary>
|
||||||
|
Provides extensions memebrs for <see cref="T:Telegrator.Core.Handlers.UpdateHandlerBase"/> for easy access to Wider bot functions and update
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlersExtensions.get_WClient``1(Telegrator.Core.Handlers.AbstractUpdateHandler{``0})">
|
||||||
|
<inheritdoc cref="P:Telegrator.HandlersExtensions.<G>$F89AF16C011F73161937A1614DCDDD7A`1.WClient"/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlersExtensions.get_WideUpdate``1(Telegrator.Core.Handlers.AbstractUpdateHandler{``0})">
|
||||||
|
<inheritdoc cref="P:Telegrator.HandlersExtensions.<G>$F89AF16C011F73161937A1614DCDDD7A`1.WideUpdate"/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlersExtensions.get_TLUpdate``1(Telegrator.Core.Handlers.AbstractUpdateHandler{``0})">
|
||||||
|
<inheritdoc cref="P:Telegrator.HandlersExtensions.<G>$F89AF16C011F73161937A1614DCDDD7A`1.TLUpdate"/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlersExtensions.AsWClient(Telegram.Bot.ITelegramBotClient)">
|
||||||
|
<summary>
|
||||||
|
Casts Update to <see cref="T:Telegram.Bot.WTelegramBotClient"/>
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlersExtensions.AsWUpdate(Telegram.Bot.Types.Update)">
|
||||||
|
<summary>
|
||||||
|
Casts Update to <see cref="T:WTelegram.Types.Update"/>
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Telegrator.HandlersExtensions.<G>$F89AF16C011F73161937A1614DCDDD7A`1.WClient">
|
||||||
|
<summary>
|
||||||
|
Casts Update to <see cref="T:Telegram.Bot.WTelegramBotClient"/>
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Telegrator.HandlersExtensions.<G>$F89AF16C011F73161937A1614DCDDD7A`1.WideUpdate">
|
||||||
|
<summary>
|
||||||
|
Casts Update to <see cref="T:WTelegram.Types.Update"/>
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Telegrator.HandlersExtensions.<G>$F89AF16C011F73161937A1614DCDDD7A`1.TLUpdate">
|
||||||
|
<summary>
|
||||||
|
Casts Update to <see cref="T:TL.Update"/>
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:Telegrator.WideHostBuilderExtensions">
|
<member name="T:Telegrator.WideHostBuilderExtensions">
|
||||||
<summary>
|
<summary>
|
||||||
Provides extension methods for <see cref="T:Microsoft.Extensions.Hosting.IHostApplicationBuilder"/> to configure Telegrator.
|
Provides extension methods for <see cref="T:Microsoft.Extensions.Hosting.IHostApplicationBuilder"/> to configure Telegrator.
|
||||||
@@ -30,6 +140,22 @@
|
|||||||
Provides method to configure Telegram Bot WebHost
|
Provides method to configure Telegram Bot WebHost
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Telegrator.WideBotServiceCollectionExtensions.ConfigureWideTelegram(Microsoft.Extensions.DependencyInjection.IServiceCollection,Telegram.Bot.WTelegramBotClientOptions)">
|
||||||
|
<summary>
|
||||||
|
Adds WTelegramBotClientOptions to services
|
||||||
|
</summary>
|
||||||
|
<param name="services"></param>
|
||||||
|
<param name="options"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.WideBotServiceCollectionExtensions.AddMTProtoUpdateReceiver(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Adds WTelegramBotClient
|
||||||
|
</summary>
|
||||||
|
<param name="services"></param>
|
||||||
|
<param name="useHttp"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:Telegrator.WideTelegramBotHostExtensions">
|
<member name="T:Telegrator.WideTelegramBotHostExtensions">
|
||||||
<summary>
|
<summary>
|
||||||
Provides useful methods to adjust Telegram bot Host
|
Provides useful methods to adjust Telegram bot Host
|
||||||
|
|||||||
@@ -97,7 +97,7 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="T:Telegrator.Mediation.HostedUpdateReceiver">
|
<member name="T:Telegrator.Mediation.HostedUpdateReceiver">
|
||||||
<summary>
|
<summary>
|
||||||
Service for receiving updates for Hosted telegram bots
|
Service for receiving updates for Hosted telegram botsand queuing them to router
|
||||||
</summary>
|
</summary>
|
||||||
<param name="botClient"></param>
|
<param name="botClient"></param>
|
||||||
<param name="updateRouter"></param>
|
<param name="updateRouter"></param>
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="M:Telegrator.Mediation.HostedUpdateReceiver.#ctor(Telegram.Bot.ITelegramBotClient,Telegrator.Core.IUpdateRouter,Microsoft.Extensions.Options.IOptions{Telegram.Bot.Polling.ReceiverOptions},Microsoft.Extensions.Logging.ILogger{Telegrator.Mediation.HostedUpdateReceiver})">
|
<member name="M:Telegrator.Mediation.HostedUpdateReceiver.#ctor(Telegram.Bot.ITelegramBotClient,Telegrator.Core.IUpdateRouter,Microsoft.Extensions.Options.IOptions{Telegram.Bot.Polling.ReceiverOptions},Microsoft.Extensions.Logging.ILogger{Telegrator.Mediation.HostedUpdateReceiver})">
|
||||||
<summary>
|
<summary>
|
||||||
Service for receiving updates for Hosted telegram bots
|
Service for receiving updates for Hosted telegram botsand queuing them to router
|
||||||
</summary>
|
</summary>
|
||||||
<param name="botClient"></param>
|
<param name="botClient"></param>
|
||||||
<param name="updateRouter"></param>
|
<param name="updateRouter"></param>
|
||||||
@@ -207,6 +207,22 @@
|
|||||||
Provides method to configure Telegram Bot Host
|
Provides method to configure Telegram Bot Host
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Telegrator.HostServicesCollectionExtensions.ConfigureTelegram(Microsoft.Extensions.DependencyInjection.IServiceCollection,Telegram.Bot.TelegramBotClientOptions)">
|
||||||
|
<summary>
|
||||||
|
Adds TelegramBotClientOptions to services
|
||||||
|
</summary>
|
||||||
|
<param name="services"></param>
|
||||||
|
<param name="options"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HostServicesCollectionExtensions.ConfigureReceiver(Microsoft.Extensions.DependencyInjection.IServiceCollection,Telegram.Bot.Polling.ReceiverOptions)">
|
||||||
|
<summary>
|
||||||
|
Adds ReceiverOptions to services
|
||||||
|
</summary>
|
||||||
|
<param name="services"></param>
|
||||||
|
<param name="options"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:Telegrator.HostServicesCollectionExtensions.AddStateStorage``1(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
|
<member name="M:Telegrator.HostServicesCollectionExtensions.AddStateStorage``1(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
|
||||||
<summary>
|
<summary>
|
||||||
Registers <see cref="T:Telegrator.Core.States.IStateStorage"/> service
|
Registers <see cref="T:Telegrator.Core.States.IStateStorage"/> service
|
||||||
|
|||||||
+23
-7
@@ -5483,6 +5483,14 @@
|
|||||||
Gets the update router for handling incoming updates.
|
Gets the update router for handling incoming updates.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Telegrator.ITelegratorBot.StartReceivingAsync(Telegram.Bot.Polling.ReceiverOptions,System.Threading.CancellationToken)">
|
||||||
|
<summary>
|
||||||
|
Initializes the update router and begins polling for updates asynchronously.
|
||||||
|
</summary>
|
||||||
|
<param name="receiverOptions">Optional receiver options for configuring update polling.</param>
|
||||||
|
<param name="cancellationToken">The cancellation token to stop receiving updates.</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:Telegrator.Logging.ConsoleLogger">
|
<member name="T:Telegrator.Logging.ConsoleLogger">
|
||||||
<summary>
|
<summary>
|
||||||
Console logger implementation that writes to System.Console.
|
Console logger implementation that writes to System.Console.
|
||||||
@@ -6804,13 +6812,8 @@
|
|||||||
<param name="httpClient">Optional HTTP client for making requests.</param>
|
<param name="httpClient">Optional HTTP client for making requests.</param>
|
||||||
<param name="cancellationToken">The cancellation token.</param>
|
<param name="cancellationToken">The cancellation token.</param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Telegrator.TelegratorClient.StartReceiving(Telegram.Bot.Polling.ReceiverOptions,System.Threading.CancellationToken)">
|
<member name="M:Telegrator.TelegratorClient.StartReceivingAsync(Telegram.Bot.Polling.ReceiverOptions,System.Threading.CancellationToken)">
|
||||||
<summary>
|
<inheritdoc/>
|
||||||
Starts receiving updates from Telegram.
|
|
||||||
Initializes the update router and begins polling for updates.
|
|
||||||
</summary>
|
|
||||||
<param name="receiverOptions">Optional receiver options for configuring update polling.</param>
|
|
||||||
<param name="globalCancellationToken">The cancellation token to stop receiving updates.</param>
|
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Telegrator.TelegratorClient.StartReceivingInternal(Telegram.Bot.Polling.ReceiverOptions,System.Threading.CancellationToken)">
|
<member name="M:Telegrator.TelegratorClient.StartReceivingInternal(Telegram.Bot.Polling.ReceiverOptions,System.Threading.CancellationToken)">
|
||||||
<summary>
|
<summary>
|
||||||
@@ -6871,6 +6874,19 @@
|
|||||||
Gets or sets the global cancellation token for all bot operations.
|
Gets or sets the global cancellation token for all bot operations.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:Telegrator.TelegratorBotExtensions">
|
||||||
|
<summary>
|
||||||
|
Provides usefull helper methods for TelegratorBot
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.TelegratorBotExtensions.StartReceiving(Telegrator.ITelegratorBot,Telegram.Bot.Polling.ReceiverOptions,System.Threading.CancellationToken)">
|
||||||
|
<summary>
|
||||||
|
Initializes the update router and begins polling for updates synchronously (Blocking calling thread).
|
||||||
|
</summary>
|
||||||
|
<param name="bot"></param>
|
||||||
|
<param name="receiverOptions">Optional receiver options for configuring update polling.</param>
|
||||||
|
<param name="cancellationToken">The cancellation token to stop receiving updates.</param>
|
||||||
|
</member>
|
||||||
<member name="T:Telegrator.MessageExtensions">
|
<member name="T:Telegrator.MessageExtensions">
|
||||||
<summary>
|
<summary>
|
||||||
Provides usefull helper methods for messages
|
Provides usefull helper methods for messages
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using Telegrator.Hosting.Web;
|
|||||||
namespace Telegrator.Mediation;
|
namespace Telegrator.Mediation;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Service for receiving updates for Hosted telegram bots via Webhooks
|
/// Service for receiving updates for Hosted telegram bots via Webhooks and queuing them to router
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class HostedUpdateWebhooker : IHostedService
|
public class HostedUpdateWebhooker : IHostedService
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -99,8 +99,15 @@ public static class WebHostBuilderExtensions
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static class WebServicesCollectionExtensions
|
public static class WebServicesCollectionExtensions
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Adds WebhookerOptions to services
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="services"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public static IServiceCollection ConfigureWebhooker(this IServiceCollection services, WebhookerOptions options)
|
public static IServiceCollection ConfigureWebhooker(this IServiceCollection services, WebhookerOptions options)
|
||||||
{
|
{
|
||||||
|
services.RemoveAll<IOptions<WebhookerOptions>>();
|
||||||
services.AddSingleton(Options.Create(options));
|
services.AddSingleton(Options.Create(options));
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
@@ -176,6 +183,9 @@ public static class WebTelegramBotHostExtensions
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static IServiceCollection AddTelegramWebhook(this IServiceCollection services)
|
public static IServiceCollection AddTelegramWebhook(this IServiceCollection services)
|
||||||
{
|
{
|
||||||
|
services.RemoveAll<IOptions<HostedUpdateWebhooker>>();
|
||||||
|
services.RemoveAll<ITelegramBotClient>();
|
||||||
|
|
||||||
services.AddHttpClient<ITelegramBotClient>("tgwebhook").RemoveAllLoggers().AddTypedClient(TypedTelegramBotClientFactory);
|
services.AddHttpClient<ITelegramBotClient>("tgwebhook").RemoveAllLoggers().AddTypedClient(TypedTelegramBotClientFactory);
|
||||||
services.AddHostedService<HostedUpdateWebhooker>();
|
services.AddHostedService<HostedUpdateWebhooker>();
|
||||||
return services;
|
return services;
|
||||||
|
|||||||
@@ -6,3 +6,5 @@
|
|||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
|
||||||
[assembly: SuppressMessage("Roslynator", "RCS1037")]
|
[assembly: SuppressMessage("Roslynator", "RCS1037")]
|
||||||
|
[assembly: SuppressMessage("Style", "IDE0090")]
|
||||||
|
[assembly: SuppressMessage("Style", "IDE0270")]
|
||||||
|
|||||||
@@ -1,18 +1,22 @@
|
|||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using System;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Telegram.Bot;
|
using Telegram.Bot;
|
||||||
using Telegram.Bot.Polling;
|
using Telegram.Bot.Polling;
|
||||||
using Telegrator.Core;
|
using Telegrator.Core;
|
||||||
|
|
||||||
namespace Telegrator.Mediation;
|
namespace Telegrator.Mediation;
|
||||||
|
|
||||||
//Hosting.WideBot
|
/// <summary>
|
||||||
|
/// Service for receiving updates for Hosted wide telegram bots and queuing them to router
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="logger"></param>
|
||||||
|
/// <param name="botClient"></param>
|
||||||
|
/// <param name="updateRouter"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
public class HostedWideBotUpdateReceiver(ILogger<HostedWideBotUpdateReceiver> logger, ITelegramBotClient botClient, IUpdateRouter updateRouter, IOptions<ReceiverOptions>? options) : BackgroundService
|
public class HostedWideBotUpdateReceiver(ILogger<HostedWideBotUpdateReceiver> logger, ITelegramBotClient botClient, IUpdateRouter updateRouter, IOptions<ReceiverOptions>? options) : BackgroundService
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
if (botClient is not WTelegramBotClient wideBotClient)
|
if (botClient is not WTelegramBotClient wideBotClient)
|
||||||
|
|||||||
@@ -8,12 +8,19 @@ using WUpdate = WTelegram.Types.Update;
|
|||||||
|
|
||||||
namespace Telegrator.Mediation;
|
namespace Telegrator.Mediation;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reactive implementation of <see cref="IUpdateReceiver"/> for polling updates from Telegram.
|
||||||
|
/// Provides custom update receiving logic with error handling and configuration options.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="client">The Telegram bot client for making API requests.</param>
|
||||||
|
// <param name="options">Optional receiver options for configuring update polling behavior.</param>
|
||||||
public class WideUpdateReceiver(WTelegramBotClient client) : IUpdateReceiver
|
public class WideUpdateReceiver(WTelegramBotClient client) : IUpdateReceiver
|
||||||
{
|
{
|
||||||
private readonly WTelegramBotClient _client = client;
|
private readonly WTelegramBotClient _client = client;
|
||||||
private IUpdateHandler? _updateHandler = null;
|
private IUpdateHandler? _updateHandler = null;
|
||||||
private CancellationToken _cancellation = default;
|
private CancellationToken _cancellation = default;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
public async Task ReceiveAsync(IUpdateHandler updateHandler, CancellationToken cancellationToken = default)
|
public async Task ReceiveAsync(IUpdateHandler updateHandler, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
_updateHandler = updateHandler;
|
_updateHandler = updateHandler;
|
||||||
|
|||||||
@@ -13,18 +13,33 @@ using Telegrator.States;
|
|||||||
|
|
||||||
namespace Telegrator;
|
namespace Telegrator;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Client class for the Telegrator library with Wider functionality, provided by WTelegramBotClient.
|
||||||
|
/// Extends TelegramBotClient with reactive capabilities for handling updates.
|
||||||
|
/// </summary>
|
||||||
public class TelegratorWClient : WTelegramBotClient, ITelegratorBot, ICollectingProvider
|
public class TelegratorWClient : WTelegramBotClient, ITelegratorBot, ICollectingProvider
|
||||||
{
|
{
|
||||||
private IUpdateRouter? _updateRouter = null;
|
private IUpdateRouter? _updateRouter = null;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
public TelegratorOptions Options { get; }
|
public TelegratorOptions Options { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
public IHandlersCollection Handlers { get; }
|
public IHandlersCollection Handlers { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
public ITelegramBotInfo BotInfo { get; }
|
public ITelegramBotInfo BotInfo { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
public IUpdateRouter UpdateRouter => _updateRouter ?? throw new InvalidOperationException("Router's not created yet. Invoke `StartReceiving` to initialize this property.");
|
public IUpdateRouter UpdateRouter => _updateRouter ?? throw new InvalidOperationException("Router's not created yet. Invoke `StartReceiving` to initialize this property.");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes new instance of <see cref="TelegratorWClient"/>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="wOptions"></param>
|
||||||
|
/// <param name="telegratorOptions"></param>
|
||||||
|
/// <param name="httpClient"></param>
|
||||||
|
/// <param name="cancellationToken"></param>
|
||||||
public TelegratorWClient(WTelegramBotClientOptions wOptions, TelegratorOptions? telegratorOptions = null, HttpClient? httpClient = null, CancellationToken cancellationToken = default)
|
public TelegratorWClient(WTelegramBotClientOptions wOptions, TelegratorOptions? telegratorOptions = null, HttpClient? httpClient = null, CancellationToken cancellationToken = default)
|
||||||
: base(wOptions, httpClient, cancellationToken)
|
: base(wOptions, httpClient, cancellationToken)
|
||||||
{
|
{
|
||||||
@@ -33,7 +48,8 @@ public class TelegratorWClient : WTelegramBotClient, ITelegratorBot, ICollecting
|
|||||||
BotInfo = new TelegramBotInfo(GetMe(cancellationToken).Result);
|
BotInfo = new TelegramBotInfo(GetMe(cancellationToken).Result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StartReceiving(CancellationToken cancellationToken = default)
|
/// <inheritdoc/>
|
||||||
|
public void StartReceiving(ReceiverOptions? _, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
if (Options.GlobalCancellationToken == CancellationToken.None)
|
if (Options.GlobalCancellationToken == CancellationToken.None)
|
||||||
Options.GlobalCancellationToken = cancellationToken;
|
Options.GlobalCancellationToken = cancellationToken;
|
||||||
@@ -45,10 +61,27 @@ public class TelegratorWClient : WTelegramBotClient, ITelegratorBot, ICollecting
|
|||||||
_updateRouter = new UpdateRouter(handlerProvider, awaitingProvider, stateStorage, Options, BotInfo);
|
_updateRouter = new UpdateRouter(handlerProvider, awaitingProvider, stateStorage, Options, BotInfo);
|
||||||
TelegratorLogging.LogInformation($"TelegratorW bot starting up - BotId: {BotInfo.User.Id}, Username: {BotInfo.User.Username}");
|
TelegratorLogging.LogInformation($"TelegratorW bot starting up - BotId: {BotInfo.User.Id}, Username: {BotInfo.User.Username}");
|
||||||
|
|
||||||
StartReceivingInternal(Options.GlobalCancellationToken);
|
StartReceivingInternal(Options.GlobalCancellationToken)
|
||||||
|
.ConfigureAwait(false).GetAwaiter().GetResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void StartReceivingInternal(CancellationToken cancellationToken)
|
/// <inheritdoc/>
|
||||||
|
public async Task StartReceivingAsync(ReceiverOptions? receiverOptions = null,CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
if (Options.GlobalCancellationToken == CancellationToken.None)
|
||||||
|
Options.GlobalCancellationToken = cancellationToken;
|
||||||
|
|
||||||
|
HandlersProvider handlerProvider = new HandlersProvider(Handlers, Options);
|
||||||
|
AwaitingProvider awaitingProvider = new AwaitingProvider(Options);
|
||||||
|
DefaultStateStorage stateStorage = new DefaultStateStorage();
|
||||||
|
|
||||||
|
_updateRouter = new UpdateRouter(handlerProvider, awaitingProvider, stateStorage, Options, BotInfo);
|
||||||
|
TelegratorLogging.LogInformation($"TelegratorW bot starting up - BotId: {BotInfo.User.Id}, Username: {BotInfo.User.Username}");
|
||||||
|
|
||||||
|
await StartReceivingInternal(Options.GlobalCancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task StartReceivingInternal(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,15 +13,21 @@ using Telegrator.Hosting;
|
|||||||
using Telegrator.Mediation;
|
using Telegrator.Mediation;
|
||||||
using Telegrator.Providers;
|
using Telegrator.Providers;
|
||||||
|
|
||||||
using TLUpdate = TL.Update;
|
|
||||||
using WUpdate = WTelegram.Types.Update;
|
using WUpdate = WTelegram.Types.Update;
|
||||||
|
using TLUpdate = TL.Update;
|
||||||
|
|
||||||
namespace Telegrator;
|
namespace Telegrator;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Provides extensions memebrs for <see cref="UpdateHandlerBase"/> for easy access to Wider bot functions and update
|
||||||
|
/// </summary>
|
||||||
public static class HandlersExtensions
|
public static class HandlersExtensions
|
||||||
{
|
{
|
||||||
extension<TUpdate>(AbstractUpdateHandler<TUpdate> handler) where TUpdate : class
|
extension<TUpdate>(AbstractUpdateHandler<TUpdate> handler) where TUpdate : class
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Casts Update to <see cref="WTelegramBotClient"/>
|
||||||
|
/// </summary>
|
||||||
public WTelegramBotClient WClient
|
public WTelegramBotClient WClient
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -35,6 +41,9 @@ public static class HandlersExtensions
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Casts Update to <see cref="WUpdate"/>
|
||||||
|
/// </summary>
|
||||||
public WUpdate WideUpdate
|
public WUpdate WideUpdate
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -47,18 +56,27 @@ public static class HandlersExtensions
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Casts Update to <see cref="TLUpdate"/>
|
||||||
|
/// </summary>
|
||||||
public TLUpdate? TLUpdate
|
public TLUpdate? TLUpdate
|
||||||
{
|
{
|
||||||
get => handler.WideUpdate.TLUpdate;
|
get => handler.WideUpdate.TLUpdate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Casts Update to <see cref="WTelegramBotClient"/>
|
||||||
|
/// </summary>
|
||||||
public static WTelegramBotClient AsWClient(this ITelegramBotClient client)
|
public static WTelegramBotClient AsWClient(this ITelegramBotClient client)
|
||||||
{
|
{
|
||||||
return client as WTelegramBotClient
|
return client as WTelegramBotClient
|
||||||
?? throw new InvalidCastException("Client is not assignable to `WTelegram.Bot.WTelegramBotClient`");
|
?? throw new InvalidCastException("Client is not assignable to `WTelegram.Bot.WTelegramBotClient`");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Casts Update to <see cref="WUpdate"/>
|
||||||
|
/// </summary>
|
||||||
public static WUpdate AsWUpdate(this Update update)
|
public static WUpdate AsWUpdate(this Update update)
|
||||||
{
|
{
|
||||||
return update as WUpdate
|
return update as WUpdate
|
||||||
@@ -149,20 +167,45 @@ public static class WideHostBuilderExtensions
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static class WideBotServiceCollectionExtensions
|
public static class WideBotServiceCollectionExtensions
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Adds WTelegramBotClientOptions to services
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="services"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public static IServiceCollection ConfigureWideTelegram(this IServiceCollection services, WTelegramBotClientOptions options)
|
public static IServiceCollection ConfigureWideTelegram(this IServiceCollection services, WTelegramBotClientOptions options)
|
||||||
{
|
{
|
||||||
|
services.RemoveAll<IOptions<WTelegramBotClientOptions>>();
|
||||||
services.AddSingleton(Options.Create(options));
|
services.AddSingleton(Options.Create(options));
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddMTProtoUpdateReceiver(this IServiceCollection services)
|
/// <summary>
|
||||||
|
/// Adds WTelegramBotClient
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="services"></param>
|
||||||
|
/// <param name="useHttp"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static IServiceCollection AddMTProtoUpdateReceiver(this IServiceCollection services, bool useHttp = false)
|
||||||
|
{
|
||||||
|
services.RemoveAll<ITelegramBotClient>();
|
||||||
|
services.RemoveAll<HostedWideBotUpdateReceiver>();
|
||||||
|
|
||||||
|
if (useHttp)
|
||||||
{
|
{
|
||||||
services.AddHttpClient<WTelegramBotClient>("tgmtproto").RemoveAllLoggers().AddTypedClient(TypedTelegramBotClientFactory);
|
services.AddHttpClient<WTelegramBotClient>("tgmtproto").RemoveAllLoggers().AddTypedClient(TypedTelegramBotClientFactory);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
services.AddSingleton(TypedTelegramBotClientFactory);
|
||||||
|
}
|
||||||
|
|
||||||
services.AddSingleton<ITelegramBotClient>(sp => sp.GetRequiredService<WTelegramBotClient>());
|
services.AddSingleton<ITelegramBotClient>(sp => sp.GetRequiredService<WTelegramBotClient>());
|
||||||
services.AddHostedService<HostedWideBotUpdateReceiver>();
|
services.AddHostedService<HostedWideBotUpdateReceiver>();
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
private static WTelegramBotClient TypedTelegramBotClientFactory(HttpClient httpClient, IServiceProvider provider)
|
private static WTelegramBotClient TypedTelegramBotClientFactory(HttpClient httpClient, IServiceProvider provider)
|
||||||
{
|
{
|
||||||
ILogger<WTelegramBotClient> logger = provider.GetRequiredService<ILogger<WTelegramBotClient>>();
|
ILogger<WTelegramBotClient> logger = provider.GetRequiredService<ILogger<WTelegramBotClient>>();
|
||||||
@@ -171,6 +214,16 @@ public static class WideBotServiceCollectionExtensions
|
|||||||
WTelegram.Helpers.Log = (lvl, str) => logger.Log((LogLevel)lvl, str);
|
WTelegram.Helpers.Log = (lvl, str) => logger.Log((LogLevel)lvl, str);
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static WTelegramBotClient TypedTelegramBotClientFactory(IServiceProvider provider)
|
||||||
|
{
|
||||||
|
ILogger<WTelegramBotClient> logger = provider.GetRequiredService<ILogger<WTelegramBotClient>>();
|
||||||
|
WTelegramBotClient client = new WTelegramBotClient(provider.GetRequiredService<IOptions<WTelegramBotClientOptions>>().Value);
|
||||||
|
|
||||||
|
WTelegram.Helpers.Log = (lvl, str) => logger.Log((LogLevel)lvl, str);
|
||||||
|
return client;
|
||||||
|
}
|
||||||
|
#pragma warning restore CA2254
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace Telegrator;
|
|
||||||
|
|
||||||
public class WideReceiverOptions
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -8,7 +8,7 @@ using Telegrator.Core;
|
|||||||
namespace Telegrator.Mediation;
|
namespace Telegrator.Mediation;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Service for receiving updates for Hosted telegram bots
|
/// Service for receiving updates for Hosted telegram botsand queuing them to router
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="botClient"></param>
|
/// <param name="botClient"></param>
|
||||||
/// <param name="updateRouter"></param>
|
/// <param name="updateRouter"></param>
|
||||||
|
|||||||
@@ -129,14 +129,28 @@ public static class HostBuilderExtensions
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static class HostServicesCollectionExtensions
|
public static class HostServicesCollectionExtensions
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Adds TelegramBotClientOptions to services
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="services"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public static IServiceCollection ConfigureTelegram(this IServiceCollection services, TelegramBotClientOptions options)
|
public static IServiceCollection ConfigureTelegram(this IServiceCollection services, TelegramBotClientOptions options)
|
||||||
{
|
{
|
||||||
|
services.RemoveAll<IOptions<TelegramBotClientOptions>>();
|
||||||
services.AddSingleton(Options.Create(options));
|
services.AddSingleton(Options.Create(options));
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds ReceiverOptions to services
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="services"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public static IServiceCollection ConfigureReceiver(this IServiceCollection services, ReceiverOptions options)
|
public static IServiceCollection ConfigureReceiver(this IServiceCollection services, ReceiverOptions options)
|
||||||
{
|
{
|
||||||
|
services.RemoveAll<IOptions<ReceiverOptions>>();
|
||||||
services.AddSingleton(Options.Create(options));
|
services.AddSingleton(Options.Create(options));
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
@@ -176,6 +190,9 @@ public static class HostServicesCollectionExtensions
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static IServiceCollection AddTelegramReceiver(this IServiceCollection services)
|
public static IServiceCollection AddTelegramReceiver(this IServiceCollection services)
|
||||||
{
|
{
|
||||||
|
services.RemoveAll<ITelegramBotClient>();
|
||||||
|
services.RemoveAll<HostedUpdateReceiver>();
|
||||||
|
|
||||||
services.AddHttpClient<ITelegramBotClient>("tgreceiver").RemoveAllLoggers().AddTypedClient(TypedTelegramBotClientFactory);
|
services.AddHttpClient<ITelegramBotClient>("tgreceiver").RemoveAllLoggers().AddTypedClient(TypedTelegramBotClientFactory);
|
||||||
services.AddHostedService<HostedUpdateReceiver>();
|
services.AddHostedService<HostedUpdateReceiver>();
|
||||||
return services;
|
return services;
|
||||||
|
|||||||
@@ -10,3 +10,4 @@ using System.Diagnostics.CodeAnalysis;
|
|||||||
[assembly: SuppressMessage("Style", "IDE0057")]
|
[assembly: SuppressMessage("Style", "IDE0057")]
|
||||||
[assembly: SuppressMessage("Style", "IDE0270")]
|
[assembly: SuppressMessage("Style", "IDE0270")]
|
||||||
[assembly: SuppressMessage("Roslynator", "RCS1037")]
|
[assembly: SuppressMessage("Roslynator", "RCS1037")]
|
||||||
|
[assembly: SuppressMessage("Roslynator", "RCS1227")]
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Telegrator.Core;
|
using Telegram.Bot.Polling;
|
||||||
|
using Telegrator.Core;
|
||||||
|
|
||||||
namespace Telegrator;
|
namespace Telegrator;
|
||||||
|
|
||||||
@@ -12,4 +13,12 @@ public interface ITelegratorBot
|
|||||||
/// Gets the update router for handling incoming updates.
|
/// Gets the update router for handling incoming updates.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IUpdateRouter UpdateRouter { get; }
|
public IUpdateRouter UpdateRouter { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes the update router and begins polling for updates asynchronously.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="receiverOptions">Optional receiver options for configuring update polling.</param>
|
||||||
|
/// <param name="cancellationToken">The cancellation token to stop receiving updates.</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task StartReceivingAsync(ReceiverOptions? receiverOptions = null, CancellationToken cancellationToken = default);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,13 +20,13 @@ public class TelegratorClient : TelegramBotClient, ITelegratorBot, ICollectingPr
|
|||||||
private IUpdateRouter? updateRouter = null;
|
private IUpdateRouter? updateRouter = null;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public TelegratorOptions Options { get; private set; }
|
public TelegratorOptions Options { get; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public IHandlersCollection Handlers { get; private set; }
|
public IHandlersCollection Handlers { get; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public ITelegramBotInfo BotInfo { get; private set; }
|
public ITelegramBotInfo BotInfo { get; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public IUpdateRouter UpdateRouter => updateRouter ?? throw new InvalidOperationException("Router's not created yet. Invoke `StartReceiving` to initialize this property.");
|
public IUpdateRouter UpdateRouter => updateRouter ?? throw new InvalidOperationException("Router's not created yet. Invoke `StartReceiving` to initialize this property.");
|
||||||
@@ -63,26 +63,19 @@ public class TelegratorClient : TelegramBotClient, ITelegratorBot, ICollectingPr
|
|||||||
BotInfo = new TelegramBotInfo(this.GetMe(cancellationToken).Result);
|
BotInfo = new TelegramBotInfo(this.GetMe(cancellationToken).Result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc/>
|
||||||
/// Starts receiving updates from Telegram.
|
public async Task StartReceivingAsync(ReceiverOptions? receiverOptions = null, CancellationToken cancellationToken = default)
|
||||||
/// Initializes the update router and begins polling for updates.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="receiverOptions">Optional receiver options for configuring update polling.</param>
|
|
||||||
/// <param name="globalCancellationToken">The cancellation token to stop receiving updates.</param>
|
|
||||||
public void StartReceiving(ReceiverOptions? receiverOptions = null, CancellationToken globalCancellationToken = default)
|
|
||||||
{
|
{
|
||||||
if (Options.GlobalCancellationToken == CancellationToken.None)
|
if (Options.GlobalCancellationToken == CancellationToken.None)
|
||||||
Options.GlobalCancellationToken = globalCancellationToken;
|
Options.GlobalCancellationToken = cancellationToken;
|
||||||
|
|
||||||
HandlersProvider handlerProvider = new HandlersProvider(Handlers, Options);
|
HandlersProvider handlerProvider = new HandlersProvider(Handlers, Options);
|
||||||
AwaitingProvider awaitingProvider = new AwaitingProvider(Options);
|
AwaitingProvider awaitingProvider = new AwaitingProvider(Options);
|
||||||
DefaultStateStorage stateStorage = new DefaultStateStorage();
|
DefaultStateStorage stateStorage = new DefaultStateStorage();
|
||||||
|
|
||||||
updateRouter = new UpdateRouter(handlerProvider, awaitingProvider, stateStorage, Options, BotInfo);
|
|
||||||
|
|
||||||
// Log startup
|
|
||||||
TelegratorLogging.LogInformation($"Telegrator bot starting up - BotId: {BotInfo.User.Id}, Username: {BotInfo.User.Username}, MaxParallelHandlers: {Options.MaximumParallelWorkingHandlers ?? -1}");
|
TelegratorLogging.LogInformation($"Telegrator bot starting up - BotId: {BotInfo.User.Id}, Username: {BotInfo.User.Username}, MaxParallelHandlers: {Options.MaximumParallelWorkingHandlers ?? -1}");
|
||||||
StartReceivingInternal(receiverOptions, globalCancellationToken);
|
updateRouter = new UpdateRouter(handlerProvider, awaitingProvider, stateStorage, Options, BotInfo);
|
||||||
|
await StartReceivingInternal(receiverOptions, Options.GlobalCancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -91,7 +84,7 @@ public class TelegratorClient : TelegramBotClient, ITelegratorBot, ICollectingPr
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="receiverOptions">Optional receiver options for configuring update polling.</param>
|
/// <param name="receiverOptions">Optional receiver options for configuring update polling.</param>
|
||||||
/// <param name="cancellationToken">The cancellation token to stop receiving updates.</param>
|
/// <param name="cancellationToken">The cancellation token to stop receiving updates.</param>
|
||||||
private async void StartReceivingInternal(ReceiverOptions? receiverOptions, CancellationToken cancellationToken)
|
private async Task StartReceivingInternal(ReceiverOptions? receiverOptions, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using Telegram.Bot.Polling;
|
||||||
using Telegram.Bot.Types;
|
using Telegram.Bot.Types;
|
||||||
using Telegram.Bot.Types.Enums;
|
using Telegram.Bot.Types.Enums;
|
||||||
using Telegram.Bot.Types.Payments;
|
using Telegram.Bot.Types.Payments;
|
||||||
@@ -13,6 +14,24 @@ using Telegrator.States;
|
|||||||
|
|
||||||
namespace Telegrator;
|
namespace Telegrator;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Provides usefull helper methods for TelegratorBot
|
||||||
|
/// </summary>
|
||||||
|
public static class TelegratorBotExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes the update router and begins polling for updates synchronously (Blocking calling thread).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bot"></param>
|
||||||
|
/// <param name="receiverOptions">Optional receiver options for configuring update polling.</param>
|
||||||
|
/// <param name="cancellationToken">The cancellation token to stop receiving updates.</param>
|
||||||
|
public static void StartReceiving(this ITelegratorBot bot, ReceiverOptions? receiverOptions = null, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
bot.StartReceivingAsync(receiverOptions, cancellationToken)
|
||||||
|
.ConfigureAwait(false).GetAwaiter().GetResult();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Provides usefull helper methods for messages
|
/// Provides usefull helper methods for messages
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// This file is used by Code Analysis to maintain SuppressMessage
|
||||||
|
// attributes that are applied to this project.
|
||||||
|
// Project-level suppressions either have no target or are given
|
||||||
|
// a specific target and scoped to a namespace, type, member, etc.
|
||||||
|
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
|
||||||
|
[assembly: SuppressMessage("Roslynator", "RCS1037")]
|
||||||
@@ -32,7 +32,7 @@ internal static class Program
|
|||||||
ApplicationName = "WBot example",
|
ApplicationName = "WBot example",
|
||||||
});
|
});
|
||||||
|
|
||||||
using DbConnection connection = new SqliteConnection(@"Data Source=wtgb.db");
|
using DbConnection connection = new SqliteConnection("Data Source=wtgb.db");
|
||||||
builder.Services.ConfigureWideTelegram(
|
builder.Services.ConfigureWideTelegram(
|
||||||
new WTelegramBotClientOptions(token: "BOT_TOKEN", apiId: 123, apiHash: "API_HASH", dbConnection: connection));
|
new WTelegramBotClientOptions(token: "BOT_TOKEN", apiId: 123, apiHash: "API_HASH", dbConnection: connection));
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
using Telegram.Bot.Types;
|
using Telegram.Bot.Types;
|
||||||
using Telegrator.Handlers;
|
using Telegrator.Handlers;
|
||||||
|
|
||||||
namespace Telegrator.Tests
|
namespace Telegrator.Tests;
|
||||||
{
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Вспомогательный класс для тестирования абстрактного UpdateHandlerBase.
|
/// Вспомогательный класс для тестирования абстрактного UpdateHandlerBase.
|
||||||
///
|
|
||||||
/// ПРИНЦИП: Создание тестовых двойников для абстрактных классов
|
/// ПРИНЦИП: Создание тестовых двойников для абстрактных классов
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[MessageHandler]
|
[MessageHandler]
|
||||||
@@ -20,4 +19,3 @@ namespace Telegrator.Tests
|
|||||||
return Task.FromResult(Result.Ok());
|
return Task.FromResult(Result.Ok());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user