diff --git a/Examples/AspNetExample/BotController/BotInlineHandlerWithDependency.cs b/Examples/AspNetExample/BotController/BotInlineHandlerWithDependency.cs index b82d780..e9548d9 100644 --- a/Examples/AspNetExample/BotController/BotInlineHandlerWithDependency.cs +++ b/Examples/AspNetExample/BotController/BotInlineHandlerWithDependency.cs @@ -31,7 +31,7 @@ public BotInlineHandlerWithDependency(ServiceScoped serviceScoped, ServiceTransi public async Task Handle(PRBotBase bot, Update update, CallbackQuery updateType) { - await PRTelegramBot.Helpers.Message.Send(bot.botClient, update, $"{nameof(Handle)} {_logger != null}"); + await PRTelegramBot.Helpers.Message.Send(bot.BotClient, update, $"{nameof(Handle)} {_logger != null}"); return UpdateResult.Handled; } diff --git a/Examples/AspNetWebHookExample/Controllers/BotController.cs b/Examples/AspNetWebHookExample/Controllers/BotController.cs index 63d4f4c..d54b8a0 100644 --- a/Examples/AspNetWebHookExample/Controllers/BotController.cs +++ b/Examples/AspNetWebHookExample/Controllers/BotController.cs @@ -24,7 +24,7 @@ public async Task Post([FromBody] Update update) var secretToken = bot.Options.WebHookOptions.SecretToken; if (string.Equals(secretTokenHeader, secretToken, StringComparison.Ordinal)) { - await bot.Handler.HandleUpdateAsync(bot.botClient, update, bot.Options.CancellationToken.Token); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, bot.Options.CancellationTokenSource.Token); return Ok(); } } diff --git a/Examples/AspNetWebHookExample/Services/BotHostedService.cs b/Examples/AspNetWebHookExample/Services/BotHostedService.cs index a8eb202..5ce8a2c 100644 --- a/Examples/AspNetWebHookExample/Services/BotHostedService.cs +++ b/Examples/AspNetWebHookExample/Services/BotHostedService.cs @@ -29,7 +29,8 @@ private async Task StartBots() if (bot.DataRetrieval == DataRetrievalMethod.WebHook) { - var webHookResult = await((PRBotWebHook)bot).GetWebHookInfo(); + var webHookResult = await((PRBotWebHook)bot) + .GetWebHookInfo(bot.Options.CancellationTokenSource.Token); if (!string.IsNullOrEmpty(webHookResult.LastErrorMessage)) bot.Events.OnErrorLogInvoke(new Exception(webHookResult.LastErrorMessage)); } diff --git a/Examples/ConsoleExample/Checkers/AdminExampleChecher.cs b/Examples/ConsoleExample/Checkers/AdminExampleChecker.cs similarity index 89% rename from Examples/ConsoleExample/Checkers/AdminExampleChecher.cs rename to Examples/ConsoleExample/Checkers/AdminExampleChecker.cs index 9167e00..fd940d4 100644 --- a/Examples/ConsoleExample/Checkers/AdminExampleChecher.cs +++ b/Examples/ConsoleExample/Checkers/AdminExampleChecker.cs @@ -9,7 +9,7 @@ namespace ConsoleExample.Checkers { - internal class AdminExampleChecher : IInternalCheck + internal class AdminExampleChecker : IInternalCheck { public async Task Check(PRBotBase bot, Update update, CommandHandler handler) { @@ -19,7 +19,7 @@ public async Task Check(PRBotBase bot, Update update, Comma { var userIsAdmin = await bot.IsAdmin(update.GetChatId()); if(!userIsAdmin) - await PRTelegramBot.Helpers.Message.Send(bot.botClient, update.GetChatId(), "Вы не админ!"); + await PRTelegramBot.Helpers.Message.Send(bot.BotClient, update.GetChatId(), "Вы не админ!"); return userIsAdmin ? InternalCheckResult.Passed : InternalCheckResult.Custom; } diff --git a/Examples/ConsoleExample/Examples/InlineClassHandlers/InlineDefaultClassHandler.cs b/Examples/ConsoleExample/Examples/InlineClassHandlers/InlineDefaultClassHandler.cs index a3f33d9..a9e659d 100644 --- a/Examples/ConsoleExample/Examples/InlineClassHandlers/InlineDefaultClassHandler.cs +++ b/Examples/ConsoleExample/Examples/InlineClassHandlers/InlineDefaultClassHandler.cs @@ -26,7 +26,7 @@ public async Task Handle(PRBotBase bot, Update update, CallbackQue var command = InlineCallback.GetCommandByCallbackOrNull(updateType.Data); if (command != null) { - await PRTelegramBot.Helpers.Message.Send(bot.botClient, update.GetChatId(), $"{TEST_ADD_MESSAGE} {command.Data.StrData}"); + await PRTelegramBot.Helpers.Message.Send(bot.BotClient, update.GetChatId(), $"{TEST_ADD_MESSAGE} {command.Data.StrData}"); return UpdateResult.Handled; } diff --git a/Examples/ConsoleExample/Services/Initializer.cs b/Examples/ConsoleExample/Services/Initializer.cs index ce891e4..464a0f6 100644 --- a/Examples/ConsoleExample/Services/Initializer.cs +++ b/Examples/ConsoleExample/Services/Initializer.cs @@ -156,7 +156,7 @@ public static Dictionary GetDynamicCommands() public static List GetCommandChekers() { var checkerReplyCommand = new InternalChecker(CommandType.Reply, new ReplyExampleChecker()); - var adminChecker = new InternalChecker(new List() { CommandType.Reply, CommandType.NextStep, CommandType.Inline, CommandType.ReplyDynamic, CommandType.Slash }, new AdminExampleChecher()); + var adminChecker = new InternalChecker(new List() { CommandType.Reply, CommandType.NextStep, CommandType.Inline, CommandType.ReplyDynamic, CommandType.Slash }, new AdminExampleChecker()); return new List() { checkerReplyCommand, adminChecker }; } diff --git a/PRTelegramBot.Tests/EventsTests/EventTests.cs b/PRTelegramBot.Tests/EventsTests/EventTests.cs index 6cb6aa2..9f22822 100644 --- a/PRTelegramBot.Tests/EventsTests/EventTests.cs +++ b/PRTelegramBot.Tests/EventsTests/EventTests.cs @@ -41,7 +41,7 @@ Task EventHandler(StartEventArgs e) } bot.Events.OnUserStartWithArgs += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.OnUserStartWithArgs)} event was not called."); bot.Events.OnUserStartWithArgs -= EventHandler; } @@ -59,7 +59,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.OnMissingCommand += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.OnMissingCommand)} event was not called."); bot.Events.OnMissingCommand -= EventHandler; } @@ -77,7 +77,7 @@ Task EventHandler(PrivilegeEventArgs e) } bot.Events.OnCheckPrivilege += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.OnCheckPrivilege)} event was not called."); bot.Events.OnCheckPrivilege -= EventHandler; } @@ -93,7 +93,7 @@ Task EventHandler(BotEventArgs e) return Task.CompletedTask; } bot.Events.OnWrongTypeMessage += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.OnWrongTypeMessage)} event was not called."); bot.Events.OnWrongTypeMessage -= EventHandler; } @@ -111,7 +111,7 @@ Task EventHandler(BotEventArgs e) return Task.CompletedTask; } bot.Events.OnAccessDenied += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.OnAccessDenied)} event was not called."); bot.Events.OnAccessDenied -= EventHandler; await bot.Options.WhiteListManager.RemoveUser(testUserId); @@ -130,7 +130,7 @@ Task EventHandler(BotEventArgs e) return Task.CompletedTask; } bot.Events.OnAccessDenied += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsFalse(eventCalled, $"The {nameof(bot.Events.OnAccessDenied)} event was not called."); bot.Events.OnAccessDenied -= EventHandler; await bot.Options.WhiteListManager.RemoveUser(userId); diff --git a/PRTelegramBot.Tests/EventsTests/MessageEventsTest.cs b/PRTelegramBot.Tests/EventsTests/MessageEventsTest.cs index a3c3bb1..618556d 100644 --- a/PRTelegramBot.Tests/EventsTests/MessageEventsTest.cs +++ b/PRTelegramBot.Tests/EventsTests/MessageEventsTest.cs @@ -34,7 +34,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnContactHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnContactHandle)} event was not called."); bot.Events.MessageEvents.OnContactHandle -= EventHandler; } @@ -52,7 +52,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnPollHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnPollHandle)} event was not called."); bot.Events.MessageEvents.OnPollHandle -= EventHandler; } @@ -70,7 +70,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnLocationHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnLocationHandle)} event was not called."); bot.Events.MessageEvents.OnLocationHandle -= EventHandler; } @@ -88,7 +88,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnWebAppsHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnWebAppsHandle)} event was not called."); bot.Events.MessageEvents.OnWebAppsHandle -= EventHandler; } @@ -106,7 +106,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnDocumentHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnDocumentHandle)} event was not called."); bot.Events.MessageEvents.OnDocumentHandle -= EventHandler; } @@ -124,7 +124,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnAudioHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnAudioHandle)} event was not called."); bot.Events.MessageEvents.OnAudioHandle -= EventHandler; } @@ -142,7 +142,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnVideoHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnVideoHandle)} event was not called."); bot.Events.MessageEvents.OnVideoHandle -= EventHandler; } @@ -160,7 +160,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnPhotoHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnPhotoHandle)} event was not called."); bot.Events.MessageEvents.OnPhotoHandle -= EventHandler; } @@ -178,7 +178,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnStickerHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnStickerHandle)} event was not called."); bot.Events.MessageEvents.OnStickerHandle -= EventHandler; } @@ -196,7 +196,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnVoiceHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnVoiceHandle)} event was not called."); bot.Events.MessageEvents.OnVoiceHandle -= EventHandler; } @@ -214,7 +214,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnTextHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnTextHandle)} event was not called."); bot.Events.MessageEvents.OnTextHandle -= EventHandler; } @@ -232,7 +232,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnVenueHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnVenueHandle)} event was not called."); bot.Events.MessageEvents.OnVenueHandle -= EventHandler; } @@ -250,7 +250,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnGameHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnGameHandle)} event was not called."); bot.Events.MessageEvents.OnGameHandle -= EventHandler; } @@ -268,7 +268,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnVideoNoteHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnVideoNoteHandle)} event was not called."); bot.Events.MessageEvents.OnVideoNoteHandle -= EventHandler; } @@ -286,7 +286,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnDiceHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnDiceHandle)} event was not called."); bot.Events.MessageEvents.OnDiceHandle -= EventHandler; } @@ -304,7 +304,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnAnimationHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnAnimationHandle)} event was not called."); bot.Events.MessageEvents.OnAnimationHandle -= EventHandler; } @@ -322,7 +322,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnStoryHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnStoryHandle)} event was not called."); bot.Events.MessageEvents.OnStoryHandle -= EventHandler; } @@ -340,7 +340,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnPassportDataHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnPassportDataHandle)} event was not called."); bot.Events.MessageEvents.OnPassportDataHandle -= EventHandler; } @@ -358,7 +358,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnGiveawayCreatedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnGiveawayCreatedHandle)} event was not called."); bot.Events.MessageEvents.OnGiveawayCreatedHandle -= EventHandler; } @@ -376,7 +376,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnChatMemberLeftHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnChatMemberLeftHandle)} event was not called."); bot.Events.MessageEvents.OnChatMemberLeftHandle -= EventHandler; } @@ -394,7 +394,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnChatTitleChangedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnChatTitleChangedHandle)} event was not called."); bot.Events.MessageEvents.OnChatTitleChangedHandle -= EventHandler; } @@ -412,7 +412,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnChatPhotoChangedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnChatPhotoChangedHandle)} event was not called."); bot.Events.MessageEvents.OnChatPhotoChangedHandle -= EventHandler; } @@ -430,7 +430,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnChatPhotoDeletedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnChatPhotoDeletedHandle)} event was not called."); bot.Events.MessageEvents.OnChatPhotoDeletedHandle -= EventHandler; } @@ -448,7 +448,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnGroupCreatedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnGroupCreatedHandle)} event was not called."); bot.Events.MessageEvents.OnGroupCreatedHandle -= EventHandler; } @@ -466,7 +466,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnSupergroupCreatedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnSupergroupCreatedHandle)} event was not called."); bot.Events.MessageEvents.OnSupergroupCreatedHandle -= EventHandler; } @@ -484,7 +484,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnChannelCreatedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnChannelCreatedHandle)} event was not called."); bot.Events.MessageEvents.OnChannelCreatedHandle -= EventHandler; } @@ -502,7 +502,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnMessageAutoDeleteTimerChangedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnMessageAutoDeleteTimerChangedHandle)} event was not called."); bot.Events.MessageEvents.OnMessageAutoDeleteTimerChangedHandle -= EventHandler; } @@ -520,7 +520,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnMigratedFromGroupHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnMigratedFromGroupHandle)} event was not called."); bot.Events.MessageEvents.OnMigratedFromGroupHandle -= EventHandler; } @@ -538,7 +538,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnMigratedToSupergroupHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnMigratedToSupergroupHandle)} event was not called."); bot.Events.MessageEvents.OnMigratedToSupergroupHandle -= EventHandler; } @@ -556,7 +556,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnMessagePinnedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnMessagePinnedHandle)} event was not called."); bot.Events.MessageEvents.OnMessagePinnedHandle -= EventHandler; } @@ -574,7 +574,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnWebsiteConnectedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnWebsiteConnectedHandle)} event was not called."); bot.Events.MessageEvents.OnWebsiteConnectedHandle -= EventHandler; } @@ -592,7 +592,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnInvoiceHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnInvoiceHandle)} event was not called."); bot.Events.MessageEvents.OnInvoiceHandle -= EventHandler; } @@ -610,7 +610,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnSuccessfulPaymentHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnSuccessfulPaymentHandle)} event was not called."); bot.Events.MessageEvents.OnSuccessfulPaymentHandle -= EventHandler; } @@ -628,7 +628,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnUserSharedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnUserSharedHandle)} event was not called."); bot.Events.MessageEvents.OnUserSharedHandle -= EventHandler; } @@ -646,7 +646,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnChatSharedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnChatSharedHandle)} event was not called."); bot.Events.MessageEvents.OnChatSharedHandle -= EventHandler; } @@ -664,7 +664,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnWriteAccessAllowedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnWriteAccessAllowedHandle)} event was not called."); bot.Events.MessageEvents.OnWriteAccessAllowedHandle -= EventHandler; } @@ -682,7 +682,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnPassportDataHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnPassportDataHandle)} event was not called."); bot.Events.MessageEvents.OnPassportDataHandle -= EventHandler; } @@ -700,7 +700,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnProximityAlertTriggeredHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnProximityAlertTriggeredHandle)} event was not called."); bot.Events.MessageEvents.OnProximityAlertTriggeredHandle -= EventHandler; } @@ -718,7 +718,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnBoostAddedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnBoostAddedHandle)} event was not called."); bot.Events.MessageEvents.OnBoostAddedHandle -= EventHandler; } @@ -736,7 +736,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnChatBackgroundSetHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnChatBackgroundSetHandle)} event was not called."); bot.Events.MessageEvents.OnChatBackgroundSetHandle -= EventHandler; } @@ -754,7 +754,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnForumTopicCreatedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnForumTopicCreatedHandle)} event was not called."); bot.Events.MessageEvents.OnForumTopicCreatedHandle -= EventHandler; } @@ -772,7 +772,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnForumTopicEditedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnForumTopicEditedHandle)} event was not called."); bot.Events.MessageEvents.OnForumTopicEditedHandle -= EventHandler; } @@ -790,7 +790,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnForumTopicClosedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnForumTopicClosedHandle)} event was not called."); bot.Events.MessageEvents.OnForumTopicClosedHandle -= EventHandler; } @@ -808,7 +808,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnForumTopicReopenedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnForumTopicReopenedHandle)} event was not called."); bot.Events.MessageEvents.OnForumTopicReopenedHandle -= EventHandler; } @@ -826,7 +826,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnGeneralForumTopicHiddenHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnGeneralForumTopicHiddenHandle)} event was not called."); bot.Events.MessageEvents.OnGeneralForumTopicHiddenHandle -= EventHandler; } @@ -844,7 +844,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnGeneralForumTopicUnhiddenHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnGeneralForumTopicUnhiddenHandle)} event was not called."); bot.Events.MessageEvents.OnGeneralForumTopicUnhiddenHandle -= EventHandler; } @@ -862,7 +862,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnGiveawayHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnGiveawayHandle)} event was not called."); bot.Events.MessageEvents.OnGiveawayHandle -= EventHandler; } @@ -881,7 +881,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnGiveawayWinnersHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnGiveawayWinnersHandle)} event was not called."); bot.Events.MessageEvents.OnGiveawayWinnersHandle -= EventHandler; } @@ -899,7 +899,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnGiveawayCompletedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnGiveawayCompletedHandle)} event was not called."); bot.Events.MessageEvents.OnGiveawayCompletedHandle -= EventHandler; } @@ -917,7 +917,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnVideoChatScheduledHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnVideoChatScheduledHandle)} event was not called."); bot.Events.MessageEvents.OnVideoChatScheduledHandle -= EventHandler; } @@ -935,7 +935,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnVideoChatStartedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnVideoChatStartedHandle)} event was not called."); bot.Events.MessageEvents.OnVideoChatStartedHandle -= EventHandler; } @@ -953,7 +953,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnVideoChatEndedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnVideoChatEndedHandle)} event was not called."); bot.Events.MessageEvents.OnVideoChatEndedHandle -= EventHandler; } @@ -971,7 +971,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.MessageEvents.OnVideoChatParticipantsInvitedHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.MessageEvents.OnVideoChatParticipantsInvitedHandle)} event was not called."); bot.Events.MessageEvents.OnVideoChatParticipantsInvitedHandle -= EventHandler; } diff --git a/PRTelegramBot.Tests/EventsTests/UpdateEventsTests.cs b/PRTelegramBot.Tests/EventsTests/UpdateEventsTests.cs index b755913..44bdee7 100644 --- a/PRTelegramBot.Tests/EventsTests/UpdateEventsTests.cs +++ b/PRTelegramBot.Tests/EventsTests/UpdateEventsTests.cs @@ -35,7 +35,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnEditedMessageHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnEditedMessageHandle)} event was not called."); bot.Events.UpdateEvents.OnEditedMessageHandle -= EventHandler; } @@ -53,7 +53,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnChannelPostHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnChannelPostHandle)} event was not called."); bot.Events.UpdateEvents.OnChannelPostHandle -= EventHandler; } @@ -71,7 +71,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnEditedChannelPostHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnEditedChannelPostHandle)} event was not called."); bot.Events.UpdateEvents.OnEditedChannelPostHandle -= EventHandler; } @@ -89,7 +89,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnBusinessConnectionHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnBusinessConnectionHandle)} event was not called."); bot.Events.UpdateEvents.OnBusinessConnectionHandle -= EventHandler; } @@ -107,7 +107,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnEditedBusinessMessageHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnEditedBusinessMessageHandle)} event was not called."); bot.Events.UpdateEvents.OnEditedBusinessMessageHandle -= EventHandler; } @@ -125,7 +125,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnDeletedBusinessMessagesHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnDeletedBusinessMessagesHandle)} event was not called."); bot.Events.UpdateEvents.OnDeletedBusinessMessagesHandle -= EventHandler; } @@ -143,7 +143,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnMessageReactionHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnMessageReactionHandle)} event was not called."); bot.Events.UpdateEvents.OnMessageReactionHandle -= EventHandler; } @@ -161,7 +161,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnMessageReactionCountHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnMessageReactionCountHandle)} event was not called."); bot.Events.UpdateEvents.OnMessageReactionCountHandle -= EventHandler; } @@ -179,7 +179,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnInlineQueryHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnInlineQueryHandle)} event was not called."); bot.Events.UpdateEvents.OnInlineQueryHandle -= EventHandler; } @@ -197,7 +197,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnChosenInlineResultHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnChosenInlineResultHandle)} event was not called."); bot.Events.UpdateEvents.OnChosenInlineResultHandle -= EventHandler; } @@ -215,7 +215,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnShippingQueryHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnShippingQueryHandle)} event was not called."); bot.Events.UpdateEvents.OnShippingQueryHandle -= EventHandler; } @@ -233,7 +233,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnPreCheckoutQueryHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnPreCheckoutQueryHandle)} event was not called."); bot.Events.UpdateEvents.OnPreCheckoutQueryHandle -= EventHandler; } @@ -251,7 +251,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnPollHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnPollHandle)} event was not called."); bot.Events.UpdateEvents.OnPollHandle -= EventHandler; } @@ -269,7 +269,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnPollAnswerHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnPollAnswerHandle)} event was not called."); bot.Events.UpdateEvents.OnPollAnswerHandle -= EventHandler; } @@ -287,7 +287,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnMyChatMemberHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnMyChatMemberHandle)} event was not called."); bot.Events.UpdateEvents.OnMyChatMemberHandle -= EventHandler; } @@ -305,7 +305,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnChatMemberHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnChatMemberHandle)} event was not called."); bot.Events.UpdateEvents.OnChatMemberHandle -= EventHandler; } @@ -323,7 +323,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnChatJoinRequestHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnChatJoinRequestHandle)} event was not called."); bot.Events.UpdateEvents.OnChatJoinRequestHandle -= EventHandler; } @@ -341,7 +341,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnChatBoostHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnChatBoostHandle)} event was not called."); bot.Events.UpdateEvents.OnChatBoostHandle -= EventHandler; } @@ -359,7 +359,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnRemovedChatBoostHandle += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnRemovedChatBoostHandle)} event was not called."); bot.Events.UpdateEvents.OnRemovedChatBoostHandle -= EventHandler; } @@ -377,7 +377,7 @@ Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnPostUpdate += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnPostUpdate)} event was not called."); bot.Events.UpdateEvents.OnPostUpdate -= EventHandler; } @@ -395,7 +395,7 @@ async Task EventHandler(BotEventArgs e) } bot.Events.UpdateEvents.OnPreUpdate += EventHandler; - await bot.Handler.HandleUpdateAsync(bot.botClient, update, new CancellationToken()); + await bot.Handler.HandleUpdateAsync(bot.BotClient, update, new CancellationToken()); Assert.IsTrue(eventCalled, $"The {nameof(bot.Events.UpdateEvents.OnPreUpdate)} event was not called."); bot.Events.UpdateEvents.OnPreUpdate -= EventHandler; } diff --git a/PRTelegramBot/Actions/InlineCalendar.cs b/PRTelegramBot/Actions/InlineCalendar.cs index c77f850..c498938 100644 --- a/PRTelegramBot/Actions/InlineCalendar.cs +++ b/PRTelegramBot/Actions/InlineCalendar.cs @@ -132,7 +132,7 @@ public static async Task PickDate(ITelegramBotClient botClient, Update update) command.Data.ActionWithLastMessage = (int)ActionWithLastMessage.Delete; var callBackHandler = new InlineCallback("", EnumHeaders.Instance.Get(command.Data.HeaderCallbackCommand), command.Data); update.CallbackQuery.Data = callBackHandler.GetContent() as string; - await botClient.GetBotDataOrNull().Handler.HandleUpdateAsync(botClient, update, bot.Options.CancellationToken.Token); + await botClient.GetBotDataOrNull().Handler.HandleUpdateAsync(botClient, update, bot.Options.CancellationTokenSource.Token); } } catch (Exception ex) diff --git a/PRTelegramBot/Configs/TelegramOptions.cs b/PRTelegramBot/Configs/TelegramOptions.cs index 7cf10e2..07196f9 100644 --- a/PRTelegramBot/Configs/TelegramOptions.cs +++ b/PRTelegramBot/Configs/TelegramOptions.cs @@ -22,7 +22,7 @@ public class TelegramOptions /// /// Токен telegram бота. /// - public string Token { get; set; } + public string Token { get; set; } = null!; /// /// Перед запуском очищает список обновлений, которые накопились когда бот не работал. @@ -30,7 +30,7 @@ public class TelegramOptions public bool ClearUpdatesOnStart { get; set; } /// - /// Уникальных идентификатор для бота, используется, чтобы в одном приложение запускать несколько ботов. + /// Уникальный идентификатор для бота, используется, чтобы в одном приложение запускать несколько ботов. /// public long BotId { get; set; } @@ -45,9 +45,9 @@ public class TelegramOptions public Dictionary ConfigPaths { get; set; } = new(); /// - /// Токен отмены. + /// Источник токена отмены. /// - public CancellationTokenSource CancellationToken { get; set; } = new CancellationTokenSource(); + public CancellationTokenSource CancellationTokenSource { get; set; } = new(); /// /// Настройки telegram бота. @@ -57,12 +57,12 @@ public class TelegramOptions /// /// Сервис провайдер. /// - public IServiceProvider ServiceProvider { get; set; } + public IServiceProvider? ServiceProvider { get; set; } /// /// Обработчик обновлений Telegram. /// - public IPRUpdateHandler UpdateHandler { get; set; } + public IPRUpdateHandler? UpdateHandler { get; set; } /// /// Менеджер управления администраторами. @@ -77,12 +77,12 @@ public class TelegramOptions /// /// Промежуточные обработчики перед update. /// - public List Middlewares { get; set; } = new(); + public List Middlewares { get; set; } = []; /// /// Дополнительные проверки перед обработкой команд. /// - public List CommandCheckers { get; set; } = new(); + public List CommandCheckers { get; set; } = []; /// /// Таймаут для получения update в режиме polling. @@ -90,29 +90,30 @@ public class TelegramOptions public int? Timeout { get; set; } /// - /// Обработчики callbackquery (inline) команд. + /// Обработчики callbackQuery (inline) команд. /// - public List CallbackQueryHandlers { get; set; } = new(); + public List CallbackQueryHandlers { get; set; } = []; /// /// Обработчики для message. /// - public List MessageHandlers { get; set; } = new(); - - /// - /// Параметры для webhook. - /// - public WebHookOptions WebHookOptions = new WebHookOptions(); + public List MessageHandlers { get; set; } = []; /// /// Параметр предотвращает спам об ошибке, если пропала сеть. По умолчанию значение 1 минута, можно поменять. /// public int AntiSpamErrorMinute { get; set; } = 1; + + // TODO: очень странно, объявлены как поля, поставил readonly. + /// + /// Параметры для webhook. + /// + public readonly WebHookOptions WebHookOptions = new(); /// /// Параметры команд. /// - public CommandOptions CommandOptions = new CommandOptions(); + public readonly CommandOptions CommandOptions = new(); #endregion } diff --git a/PRTelegramBot/Core/BotCollection.cs b/PRTelegramBot/Core/BotCollection.cs index c38f52d..dd2637e 100644 --- a/PRTelegramBot/Core/BotCollection.cs +++ b/PRTelegramBot/Core/BotCollection.cs @@ -10,30 +10,22 @@ public sealed class BotCollection /// /// Экземпляр класса. /// - private static BotCollection instance; + private static BotCollection? _instance; /// /// Коллекция ботов. /// - private Dictionary BotList = new Dictionary(); + private Dictionary _botList = new(); /// /// Количество ботов. /// - public long BotCount => BotList.Count; + public long BotCount => _botList.Count; /// /// Singleton экземпляр. /// - public static BotCollection Instance - { - get - { - if (instance == null) - instance = new BotCollection(); - return instance; - } - } + public static BotCollection Instance => _instance ??= new BotCollection(); #endregion @@ -44,35 +36,35 @@ public static BotCollection Instance /// /// Идентификатор бота. public static long GetNextId() - => Instance.BotList.LastOrDefault().Key + 1; + => Instance._botList.LastOrDefault().Key + 1; /// /// Добавить бота в коллекцию. /// /// Бот. public void AddBot(PRBotBase bot) - => BotList.Add(bot.BotId, bot); + => _botList.Add(bot.BotId, bot); /// /// Удалить бота из коллекции. /// /// Бот. public void RemoveBot(PRBotBase bot) - => BotList.Remove(bot.BotId); + => _botList.Remove(bot.BotId); /// /// Очистить всех ботов. /// public void ClearBots() - => BotList.Clear(); + => _botList.Clear(); /// /// Получить бота по telegram id. /// /// Идентификатор telegram. /// Экземпляр класса бота или null. - public PRBotBase GetBotByTelegramIdOrNull(long? telegramId) - => BotList.Values.SingleOrDefault(x => x.TelegramId == telegramId); + public PRBotBase? GetBotByTelegramIdOrNull(long? telegramId) + => _botList.Values.SingleOrDefault(x => x.TelegramId == telegramId); /// /// Получить экземпляр бота. @@ -80,22 +72,22 @@ public PRBotBase GetBotByTelegramIdOrNull(long? telegramId) /// Идентификатор бота. /// Экземпляр класса бота или null. public PRBotBase GetBotOrNull(long botId) - => BotList.Values.SingleOrDefault(x => x.BotId == botId); + => _botList.Values.SingleOrDefault(x => x.BotId == botId); /// /// Получить экземпляр бота. /// /// Выражение для фильтрации. /// Экземпляр класса бота или null. - public PRBotBase GetBotOrNull(Func predicate) - => BotList.Values.SingleOrDefault(predicate); + public PRBotBase? GetBotOrNull(Func predicate) + => _botList.Values.SingleOrDefault(predicate); /// /// Получить всех ботов. /// /// Коллекция ботов. public List GetBots() - => BotList.Select(x => x.Value).ToList(); + => _botList.Select(x => x.Value).ToList(); /// /// Получить всех ботов. @@ -103,15 +95,15 @@ public List GetBots() /// Выражение для фильтрации. /// Коллекция ботов. public List GetBots(Func predicate) - => BotList.Values.Where(predicate).ToList(); + => _botList.Values.Where(predicate).ToList(); /// /// Получить экземпляр бота. /// /// Название/логин бота. /// Экземпляр класса бота или null. - public PRBotBase GetBotOrNull(string botName) - => BotList.Values.SingleOrDefault(x => x.BotName.Contains(botName, StringComparison.OrdinalIgnoreCase)); + public PRBotBase? GetBotOrNull(string botName) + => _botList.Values.SingleOrDefault(x => x.BotName.Contains(botName, StringComparison.OrdinalIgnoreCase)); #endregion diff --git a/PRTelegramBot/Core/Executors/ExecutorCommandBase.cs b/PRTelegramBot/Core/Executors/ExecutorCommandBase.cs index 9c7a51c..5c60017 100644 --- a/PRTelegramBot/Core/Executors/ExecutorCommandBase.cs +++ b/PRTelegramBot/Core/Executors/ExecutorCommandBase.cs @@ -55,7 +55,7 @@ public virtual async Task ExecuteMethod(PRBotBase bot, Update upd if (result != InternalCheckResult.Passed) return CommandResult.InternalCheck; - await handler.ExecuteCommand(bot.botClient, update); + await handler.ExecuteCommand(bot.BotClient, update); return CommandResult.Executed; } diff --git a/PRTelegramBot/Core/Handler.cs b/PRTelegramBot/Core/Handler.cs index cc5ca32..bdb61f6 100644 --- a/PRTelegramBot/Core/Handler.cs +++ b/PRTelegramBot/Core/Handler.cs @@ -18,17 +18,7 @@ namespace PRTelegramBot.Core public sealed class Handler : IPRUpdateHandler { #region Поля и свойства - - /// - /// Диспетчер для обработки update типа message. - /// - internal MessageUpdateDispatcher MessageDispatcher { get; private set; } - - /// - /// Диспетчер для обработки update типа callbackQuery. - /// - internal CallBackQueryUpdateDispatcher CallBackQueryDispatcher { get; private set; } - + /// /// Хранилище callbackQuery команд. /// @@ -49,20 +39,31 @@ public sealed class Handler : IPRUpdateHandler /// public SlashCommandStore SlashCommandsStore { get; private set; } + /// + /// Диспетчер для обработки update типа message. + /// + internal MessageUpdateDispatcher MessageDispatcher { get; private set; } + + /// + /// Диспетчер для обработки update типа callbackQuery. + /// + internal CallBackQueryUpdateDispatcher CallBackQueryDispatcher { get; private set; } + /// /// Ограничитель спама логов. /// - private DateTime LastErrorPollingDate; + private DateTime _lastErrorPollingDate; /// /// Бот. /// - private PRBotBase bot; + private readonly PRBotBase _bot; #endregion #region IPRUpdateHandler + /// public MiddlewareBase Middleware { get; } /// @@ -78,20 +79,21 @@ public async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, if (update == null) return; - //Связь update вместе ITelegramBotClient - update.AddTelegramClient(bot); - - _ = Middleware.InvokeOnPreUpdateAsync(botClient, update, async () => + // Связь update вместе ITelegramBotClient. + update.AddTelegramClient(_bot); + + _ = Middleware.InvokeOnPreUpdateAsync(botClient, update, async () => { - await UpdateAsync(update); + await UpdateAsync(update, cancellationToken); }); } catch (Exception ex) { - bot.Events.OnErrorLogInvoke(ex, update); + _bot.Events.OnErrorLogInvoke(ex, update); } } + /// public void HotReload() { CallbackQueryCommandsStore.ClearCommands(); @@ -112,16 +114,18 @@ public void HotReload() /// Исключение. /// Исходник ошибки /// Токен отмены. - public async Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, HandleErrorSource source, CancellationToken cancellationToken) + public Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, HandleErrorSource source, CancellationToken cancellationToken) { - if(source == HandleErrorSource.PollingError && exception.Message.Contains("Exception during making request")) + if (source == HandleErrorSource.PollingError && exception.Message.Contains("Exception during making request")) { - if(DateTime.Now < LastErrorPollingDate) - return; + if (DateTime.Now < _lastErrorPollingDate) + return Task.CompletedTask; - LastErrorPollingDate = DateTime.Now.AddMinutes(bot.Options.AntiSpamErrorMinute); + _lastErrorPollingDate = DateTime.Now.AddMinutes(_bot.Options.AntiSpamErrorMinute); } - this.bot.Events.OnErrorLogInvoke(exception); + _bot.Events.OnErrorLogInvoke(exception); + + return Task.CompletedTask; } #endregion @@ -132,15 +136,15 @@ public async Task HandleErrorAsync(ITelegramBotClient botClient, Exception excep /// Обработка обновлений. /// /// Update. - public async Task UpdateAsync(Update update) + public async Task UpdateAsync(Update update, CancellationToken cancellationToken) // TODO: разобраться с CancellationToken. { - var whiteListManager = bot.Options.WhiteListManager; + var whiteListManager = _bot.Options.WhiteListManager; - if (bot.Events.UpdateEvents.HasEventOnPreUpdate()) + if (_bot.Events.UpdateEvents.HasEventOnPreUpdate()) { - var resultUpdate = await bot.Events.UpdateEvents.OnPreInvoke(new BotEventArgs(bot, update)); + var resultUpdate = await _bot.Events.UpdateEvents.OnPreInvoke(new BotEventArgs(_bot, update)); - if (resultUpdate == UpdateResult.Stop || resultUpdate == UpdateResult.Handled) + if (resultUpdate is UpdateResult.Stop or UpdateResult.Handled) return; } @@ -149,7 +153,7 @@ public async Task UpdateAsync(Update update) var hasUserInWhiteList = await whiteListManager.HasUser(update.GetChatId()); if (!hasUserInWhiteList) { - bot.Events.OnAccessDeniedInvoke(new BotEventArgs(bot, update)); + _bot.Events.OnAccessDeniedInvoke(new BotEventArgs(_bot, update)); return; } } @@ -161,66 +165,66 @@ public async Task UpdateAsync(Update update) _ = MessageDispatcher.Dispatch(update); if (update.Type == UpdateType.ChannelPost) - bot.Events.UpdateEvents.OnChannelPostHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnChannelPostHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.ChatJoinRequest) - bot.Events.UpdateEvents.OnChatJoinRequestHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnChatJoinRequestHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.ChatMember) - bot.Events.UpdateEvents.OnChatMemberHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnChatMemberHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.ChosenInlineResult) - bot.Events.UpdateEvents.OnChosenInlineResultHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnChosenInlineResultHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.ChatBoost) - bot.Events.UpdateEvents.OnChatBoostHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnChatBoostHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.EditedChannelPost) - bot.Events.UpdateEvents.OnEditedChannelPostHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnEditedChannelPostHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.EditedMessage) - bot.Events.UpdateEvents.OnEditedMessageHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnEditedMessageHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.BusinessConnection) - bot.Events.UpdateEvents.OnBusinessConnectionHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnBusinessConnectionHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.EditedBusinessMessage) - bot.Events.UpdateEvents.OnEditedBusinessHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnEditedBusinessHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.DeletedBusinessMessages) - bot.Events.UpdateEvents.OnDeletedBusinessConnectionHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnDeletedBusinessConnectionHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.MessageReaction) - bot.Events.UpdateEvents.OnMessageReactionHandleHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnMessageReactionHandleHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.MessageReactionCount) - bot.Events.UpdateEvents.OnMessageReactionCountHandleHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnMessageReactionCountHandleHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.InlineQuery) - bot.Events.UpdateEvents.OnInlineQueryHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnInlineQueryHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.MyChatMember) - bot.Events.UpdateEvents.OnMyChatMemberHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnMyChatMemberHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.Poll) - bot.Events.UpdateEvents.OnPollHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnPollHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.PollAnswer) - bot.Events.UpdateEvents.OnPollAnswerHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnPollAnswerHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.PreCheckoutQuery) - bot.Events.UpdateEvents.OnPreCheckoutQueryHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnPreCheckoutQueryHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.RemovedChatBoost) - bot.Events.UpdateEvents.OnRemovedChatBoostHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnRemovedChatBoostHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.ShippingQuery) - bot.Events.UpdateEvents.OnShippingQueryHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnShippingQueryHandler(new BotEventArgs(_bot, update)); if (update.Type == UpdateType.Unknown) - bot.Events.UpdateEvents.OnUnknownHandler(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnUnknownHandler(new BotEventArgs(_bot, update)); - bot.Events.UpdateEvents.OnPostInvoke(new BotEventArgs(bot, update)); + _bot.Events.UpdateEvents.OnPostInvoke(new BotEventArgs(_bot, update)); } #endregion @@ -233,7 +237,7 @@ public async Task UpdateAsync(Update update) /// Бот. public Handler(PRBotBase bot) { - this.bot = bot; + _bot = bot; Middleware = new MiddlewareBuilder().Build(bot.Options.Middlewares); CallbackQueryCommandsStore = new CallbackQueryCommandStore(bot); @@ -241,8 +245,8 @@ public Handler(PRBotBase bot) ReplyDynamicCommandsStore = new ReplyDynamicCommandStore(bot); SlashCommandsStore = new SlashCommandStore(bot); - MessageDispatcher = new MessageUpdateDispatcher(this.bot); - CallBackQueryDispatcher = new CallBackQueryUpdateDispatcher(this.bot); + MessageDispatcher = new MessageUpdateDispatcher(bot); + CallBackQueryDispatcher = new CallBackQueryUpdateDispatcher(bot); HotReload(); } diff --git a/PRTelegramBot/Core/PRBot.cs b/PRTelegramBot/Core/PRBot.cs index 25d350c..6cc8d33 100644 --- a/PRTelegramBot/Core/PRBot.cs +++ b/PRTelegramBot/Core/PRBot.cs @@ -11,48 +11,45 @@ public sealed class PRBot : PRBotBase { #region Базовый класс - public override DataRetrievalMethod DataRetrieval - { - get - { - return DataRetrievalMethod.Classic; - } - } + /// + public override DataRetrievalMethod DataRetrieval => DataRetrievalMethod.Classic; - public override async Task Start() + /// + public override async Task Start(CancellationToken cancellationToken = default) { try { - await base.Start(); + await base.Start(Options.CancellationTokenSource.Token); if (Options.ClearUpdatesOnStart) - await ClearUpdates(); + await ClearUpdatesAsync(Options.CancellationTokenSource.Token); - botClient.StartReceiving(Handler, Options.ReceiverOptions); + BotClient.StartReceiving(Handler, Options.ReceiverOptions, Options.CancellationTokenSource.Token); - var client = await botClient.GetMe(); + var client = await BotClient.GetMe(Options.CancellationTokenSource.Token); BotName = client?.Username; - this.Events.OnCommonLogInvoke($"Bot {BotName} is running.", "Initialization", ConsoleColor.Yellow); + Events.OnCommonLogInvoke($"Bot {BotName} is running.", "Initialization", ConsoleColor.Yellow); IsWork = true; } catch (Exception ex) { IsWork = false; - this.Events.OnErrorLogInvoke(ex); + Events.OnErrorLogInvoke(ex); } } - public override async Task Stop() + /// + public override async Task Stop(CancellationToken cancellationToken = default) { try { - Options.CancellationToken.Cancel(); + Options.CancellationTokenSource.Cancel(); - await Task.Delay(3000); + await Task.Delay(3000, CancellationToken.None); IsWork = false; } catch (Exception ex) { - this.Events.OnErrorLogInvoke(ex); + Events.OnErrorLogInvoke(ex); } } diff --git a/PRTelegramBot/Core/PRBotBase.cs b/PRTelegramBot/Core/PRBotBase.cs index c39cf96..cdf5f36 100644 --- a/PRTelegramBot/Core/PRBotBase.cs +++ b/PRTelegramBot/Core/PRBotBase.cs @@ -20,12 +20,12 @@ public abstract class PRBotBase /// /// Клиент для telegram бота. /// - public ITelegramBotClient botClient { get; protected set; } + public ITelegramBotClient BotClient { get; protected set; } /// /// Идентификатор бота в telegram. /// - public long? TelegramId { get { return botClient.BotId; } } + public long? TelegramId => BotClient.BotId; /// /// Обработчик для telegram бота @@ -85,7 +85,7 @@ public bool ReloadHandlers() } catch(Exception ex) { - this.Events.OnErrorLogInvoke(ex); + Events.OnErrorLogInvoke(ex); return false; } } @@ -98,7 +98,7 @@ private bool InitHandlers() { try { - if(Handler is null) + if (Handler is null) { Handler = Options.UpdateHandler ?? new Handler(this); if(Handler is Handler baseHandler) @@ -111,7 +111,7 @@ private bool InitHandlers() Options.CallbackQueryHandlers.Add(new InlineCommandHandler()); } } - if(Register is null) + if (Register is null) { Register = Options.CommandOptions.RegisterCommand ?? new RegisterCommand(); Register.Init(this); @@ -121,7 +121,7 @@ private bool InitHandlers() } catch (Exception ex) { - this.Events.OnErrorLogInvoke(ex); + Events.OnErrorLogInvoke(ex); return false; } } @@ -129,59 +129,60 @@ private bool InitHandlers() /// /// Очистка очереди команд перед запуском. /// - protected async Task ClearUpdates() + protected async Task ClearUpdatesAsync(CancellationToken cancellationToken = default) { try { - var update = await botClient.GetUpdates(); + var update = await BotClient.GetUpdates(cancellationToken: cancellationToken); foreach (var item in update) { var offset = item.Id + 1; - await botClient.GetUpdates(offset); + await BotClient.GetUpdates(offset, cancellationToken: cancellationToken); } } catch (Exception ex) { - this.Events.OnErrorLogInvoke(ex); + Events.OnErrorLogInvoke(ex); } } /// /// Запустить бота. /// - public virtual async Task Start() + public virtual Task Start(CancellationToken cancellationToken = default) // TODO: добавить постфикс Async. { InitHandlers(); + return Task.CompletedTask; } /// /// Остановка бота. /// - public abstract Task Stop(); + public abstract Task Stop(CancellationToken cancellationToken = default); // TODO: добавить постфикс Async. #endregion #region Конструкторы - protected PRBotBase(Action optionsBuilder, TelegramOptions options) + protected PRBotBase(Action? optionsBuilder, TelegramOptions? options) : base() { Options = new TelegramOptions(); if (optionsBuilder != null) optionsBuilder.Invoke(Options); else - Options = options; + Options = options ?? throw new ArgumentNullException($"The arguments to the designer are incorrectly transferred, both arguments ({nameof(options)} and {nameof(optionsBuilder)}) cannot be null."); if (string.IsNullOrEmpty(Options.Token)) - throw new Exception("Bot token is empty"); + throw new ArgumentException("Bot token is empty"); if (Options.BotId < 0) - throw new Exception("Bot ID cannot be less than zero"); + throw new ArgumentException("Bot ID cannot be less than zero"); BotCollection.Instance.AddBot(this); - botClient = Options.Client ?? new TelegramBotClient(Options.Token); + BotClient = Options.Client ?? new TelegramBotClient(Options.Token); Events = new TEvents(this); InlineClassRegistrar.Register(this); InitHandlers(); diff --git a/PRTelegramBot/Core/PRBotBuilder.cs b/PRTelegramBot/Core/PRBotBuilder.cs index 0b58450..f8aaf11 100644 --- a/PRTelegramBot/Core/PRBotBuilder.cs +++ b/PRTelegramBot/Core/PRBotBuilder.cs @@ -18,11 +18,11 @@ public sealed class PRBotBuilder { #region Поля и свойства - private TelegramOptions options; - private PRBotFactoryBase factory; - private List admins = new List(); - private List whitelist = new List(); - private WhiteListSettings whiteListSettings = WhiteListSettings.OnPreUpdate; + private TelegramOptions _options; + private PRBotFactoryBase _factory; + private List _admins = []; + private List _whiteList = []; + private WhiteListSettings _whiteListSettings = WhiteListSettings.OnPreUpdate; #endregion @@ -34,10 +34,10 @@ public sealed class PRBotBuilder /// Экземпляр класса PRBot. public PRBotBase Build() { - options.AdminManager.AddUsers(admins.ToArray()); - options.WhiteListManager.AddUsers(whitelist.ToArray()); - options.WhiteListManager.SetSettings(whiteListSettings); - return factory.CreateBot(options); + _options.AdminManager.AddUsers(_admins.ToArray()); + _options.WhiteListManager.AddUsers(_whiteList.ToArray()); + _options.WhiteListManager.SetSettings(_whiteListSettings); + return _factory.CreateBot(_options); } /// @@ -46,9 +46,9 @@ public PRBotBase Build() /// Токен. public void ClearOptions(string token) { - admins.Clear(); - whitelist.Clear(); - options = new TelegramOptions(); + _admins.Clear(); + _whiteList.Clear(); + _options = new TelegramOptions(); SetToken(token); } @@ -58,7 +58,7 @@ public void ClearOptions(string token) /// Клиент телеграм бота. public void ClearOptions(TelegramBotClient client) { - options = new TelegramOptions(); + _options = new TelegramOptions(); SetTelegramClient(client); } @@ -69,7 +69,7 @@ public void ClearOptions(TelegramBotClient client) /// Builder. public PRBotBuilder SetUpdateHandler(IPRUpdateHandler updateHandler) { - options.UpdateHandler = updateHandler; + _options.UpdateHandler = updateHandler; return this; } @@ -80,7 +80,7 @@ public PRBotBuilder SetUpdateHandler(IPRUpdateHandler updateHandler) /// Builder. public PRBotBuilder SetAdminManager(IUserManager adminManager) { - options.AdminManager = adminManager; + _options.AdminManager = adminManager; return this; } @@ -91,7 +91,7 @@ public PRBotBuilder SetAdminManager(IUserManager adminManager) /// Builder. public PRBotBuilder SetWhiteListManager(IWhiteListManager whiteListManager) { - options.WhiteListManager = whiteListManager; + _options.WhiteListManager = whiteListManager; return this; } @@ -102,7 +102,7 @@ public PRBotBuilder SetWhiteListManager(IWhiteListManager whiteListManager) /// Builder. public PRBotBuilder SetWhiteListSettings(WhiteListSettings settings) { - whiteListSettings = settings; + _whiteListSettings = settings; return this; } @@ -113,7 +113,7 @@ public PRBotBuilder SetWhiteListSettings(WhiteListSettings settings) /// Builder. public PRBotBuilder AddMiddlewares(MiddlewareBase middleware) { - options.Middlewares.Add(middleware); + _options.Middlewares.Add(middleware); return this; } @@ -124,7 +124,7 @@ public PRBotBuilder AddMiddlewares(MiddlewareBase middleware) /// Builder. public PRBotBuilder AddMiddlewares(params MiddlewareBase[] middlewares) { - options.Middlewares.AddRange(middlewares); + _options.Middlewares.AddRange(middlewares); return this; } @@ -135,7 +135,7 @@ public PRBotBuilder AddMiddlewares(params MiddlewareBase[] middlewares) /// Builder. public PRBotBuilder AddCommandChecker(InternalChecker checker) { - options.CommandCheckers.Add(checker); + _options.CommandCheckers.Add(checker); return this; } @@ -146,7 +146,7 @@ public PRBotBuilder AddCommandChecker(InternalChecker checker) /// Builder. public PRBotBuilder AddCommandChecker(List checkers) { - options.CommandCheckers.AddRange(checkers); + _options.CommandCheckers.AddRange(checkers); return this; } @@ -157,7 +157,7 @@ public PRBotBuilder AddCommandChecker(List checkers) /// Builder. public PRBotBuilder SetRegisterCommand(IRegisterCommand registerCommand) { - options.CommandOptions.RegisterCommand = registerCommand; + _options.CommandOptions.RegisterCommand = registerCommand; return this; } @@ -168,7 +168,7 @@ public PRBotBuilder SetRegisterCommand(IRegisterCommand registerCommand) /// Builder. public PRBotBuilder SetToken(string token) { - options.Token = token; + _options.Token = token; return this; } @@ -179,7 +179,7 @@ public PRBotBuilder SetToken(string token) /// Builder. public PRBotBuilder SetBotId(long botId) { - options.BotId = botId; + _options.BotId = botId; return this; } @@ -190,7 +190,7 @@ public PRBotBuilder SetBotId(long botId) /// Builder. public PRBotBuilder SetClearUpdatesOnStart(bool flag) { - options.ClearUpdatesOnStart = flag; + _options.ClearUpdatesOnStart = flag; return this; } @@ -202,7 +202,7 @@ public PRBotBuilder SetClearUpdatesOnStart(bool flag) /// Builder. public PRBotBuilder AddReplyDynamicCommand(string key, string value) { - options.ReplyDynamicCommands.Add(key, value); + _options.ReplyDynamicCommands.Add(key, value); return this; } @@ -214,7 +214,7 @@ public PRBotBuilder AddReplyDynamicCommand(string key, string value) public PRBotBuilder AddReplyDynamicCommands(Dictionary dynamicCommands) { foreach (var command in dynamicCommands) - options.ReplyDynamicCommands.Add(command.Key, command.Value); + _options.ReplyDynamicCommands.Add(command.Key, command.Value); return this; } @@ -225,7 +225,7 @@ public PRBotBuilder AddReplyDynamicCommands(Dictionary dynamicCo /// Builder. public PRBotBuilder AddAdmin(params long[] telegramId) { - admins.AddRange(telegramId); + _admins.AddRange(telegramId); return this; } @@ -236,7 +236,7 @@ public PRBotBuilder AddAdmin(params long[] telegramId) /// Builder. public PRBotBuilder AddAdmins(List telegramIds) { - admins.AddRange(telegramIds.ToArray()); + _admins.AddRange(telegramIds.ToArray()); return this; } @@ -247,7 +247,7 @@ public PRBotBuilder AddAdmins(List telegramIds) /// Builder. public PRBotBuilder AddUserWhiteList(params long[] telegramId) { - whitelist.AddRange(telegramId); + _whiteList.AddRange(telegramId); return this; } @@ -258,7 +258,7 @@ public PRBotBuilder AddUserWhiteList(params long[] telegramId) /// Builder. public PRBotBuilder AddUsersWhiteList(List telegramIds) { - whitelist.AddRange(telegramIds.ToArray()); + _whiteList.AddRange(telegramIds.ToArray()); return this; } @@ -270,7 +270,7 @@ public PRBotBuilder AddUsersWhiteList(List telegramIds) /// Builder. public PRBotBuilder AddConfigPath(string key, string path) { - options.ConfigPaths.Add(key, path); + _options.ConfigPaths.Add(key, path); return this; } @@ -282,7 +282,7 @@ public PRBotBuilder AddConfigPath(string key, string path) public PRBotBuilder AddConfigPaths(Dictionary configPaths) { foreach (var configPath in configPaths) - options.ConfigPaths.Add(configPath.Key, configPath.Value); + _options.ConfigPaths.Add(configPath.Key, configPath.Value); return this; } @@ -293,18 +293,18 @@ public PRBotBuilder AddConfigPaths(Dictionary configPaths) /// Builder. public PRBotBuilder SetServiceProvider(IServiceProvider serviceProvider) { - this.options.ServiceProvider = serviceProvider; + _options.ServiceProvider = serviceProvider; return this; } /// /// Добавить параметры приемника. /// - /// параметры приемника. + /// Параметры приемника. /// Builder. - public PRBotBuilder AddRecevingOptions(ReceiverOptions recevierOptions) + public PRBotBuilder AddRecevingOptions(ReceiverOptions recevierOptions) // TODO: исправить опечатку в названии на AddReceivingOptions. { - this.options.ReceiverOptions = recevierOptions; + _options.ReceiverOptions = recevierOptions; return this; } @@ -315,7 +315,7 @@ public PRBotBuilder AddRecevingOptions(ReceiverOptions recevierOptions) /// Builder. public PRBotBuilder UseFactory(PRBotFactoryBase factory) { - this.factory = factory; + _factory = factory; return this; } @@ -326,7 +326,7 @@ public PRBotBuilder UseFactory(PRBotFactoryBase factory) /// Builder. public PRBotBuilder SetUrlWebHook(string url) { - this.options.WebHookOptions.Url = url; + _options.WebHookOptions.Url = url; return this; } @@ -337,18 +337,18 @@ public PRBotBuilder SetUrlWebHook(string url) /// Builder. public PRBotBuilder SetSecretTokenWebHook(string secretToken) { - this.options.WebHookOptions.SecretToken = secretToken; + _options.WebHookOptions.SecretToken = secretToken; return this; } /// /// Установить IP-адрес для вебхука. /// - /// IP-адрес. + /// IP-адрес. /// Builder. - public PRBotBuilder SetIpAddresWebHook(string ipAddres) + public PRBotBuilder SetIpAddresWebHook(string ipAddress) // TODO: исправить опечатку в названии на SetIpAddressWebHook. { - this.options.WebHookOptions.IpAddress = ipAddres; + _options.WebHookOptions.IpAddress = ipAddress; return this; } @@ -359,7 +359,7 @@ public PRBotBuilder SetIpAddresWebHook(string ipAddres) /// Builder. public PRBotBuilder SetDropPendingUpdates(bool flag) { - this.options.WebHookOptions.DropPendingUpdates = flag; + _options.WebHookOptions.DropPendingUpdates = flag; return this; } @@ -370,7 +370,7 @@ public PRBotBuilder SetDropPendingUpdates(bool flag) /// Builder. public PRBotBuilder SetMaxConnectionsWebHook(int maxConnections) { - this.options.WebHookOptions.MaxConnections = maxConnections; + _options.WebHookOptions.MaxConnections = maxConnections; return this; } @@ -381,7 +381,7 @@ public PRBotBuilder SetMaxConnectionsWebHook(int maxConnections) /// Builder. public PRBotBuilder SetTelegramClient(TelegramBotClient client) { - this.options.Client = client; + _options.Client = client; return this; } @@ -392,51 +392,51 @@ public PRBotBuilder SetTelegramClient(TelegramBotClient client) /// Builder. public PRBotBuilder SetCertificateWebHook(InputFileStream certificate) { - this.options.WebHookOptions.Certificate = certificate; + _options.WebHookOptions.Certificate = certificate; return this; } /// - /// Добавить новый обработчик команд для callbackQuery (inline). + /// Добавить новы(й/е) обработчик(и) команд для callbackQuery (inline). /// - /// Обработчик. + /// Обработчики для callbackQuery команд. /// Builder. public PRBotBuilder AddCallbackQueryCommandHandlers(params ICallbackQueryCommandHandler[] handlers) { - this.options.CallbackQueryHandlers.AddRange(handlers); + _options.CallbackQueryHandlers.AddRange(handlers); return this; } /// /// Добавить новые обработчики команд для callbackQuery (inline). /// - /// Обработчик. + /// Обработчики для callbackQuery команд. /// Builder. public PRBotBuilder AddCallbackQueryCommandHandlers(List handlers) { - this.options.CallbackQueryHandlers.AddRange(handlers); + _options.CallbackQueryHandlers.AddRange(handlers); return this; } /// - /// Добавить новый обработчик команд для message. + /// Добавить новы(й/е) обработчик(и) команд для message. /// - /// Обработчик. + /// Обработчик(и) для message команд. /// Builder. public PRBotBuilder AddMessageCommandHandlers(params IMessageCommandHandler[] handlers) { - this.options.MessageHandlers.AddRange(handlers); + _options.MessageHandlers.AddRange(handlers); return this; } /// /// Добавить новые обработчики команд для message. /// - /// Обработчик. + /// Обработчики для message команд. /// Builder. public PRBotBuilder AddMessageCommandHandlers(List handlers) { - this.options.MessageHandlers.AddRange(handlers); + _options.MessageHandlers.AddRange(handlers); return this; } @@ -447,7 +447,7 @@ public PRBotBuilder AddMessageCommandHandlers(List handl /// Builder. public PRBotBuilder SetAntiSpamErrorMinute(int minute) { - this.options.AntiSpamErrorMinute = minute; + _options.AntiSpamErrorMinute = minute; return this; } @@ -460,9 +460,9 @@ public PRBotBuilder SetAntiSpamErrorMinute(int minute) public PRBotBuilder AddInlineClassHandler(Enum @enum, Type type) { if (type.IsAssignableTo(typeof(ICallbackQueryCommandHandler))) - this.options.CommandOptions.InlineClassHandlers.Add(@enum, type); + _options.CommandOptions.InlineClassHandlers.Add(@enum, type); else - throw new Exception($"{type} must implement the {typeof(ICallbackQueryCommandHandler)} interface."); + throw new ArgumentException($"{type} must implement the {typeof(ICallbackQueryCommandHandler)} interface."); return this; } @@ -480,7 +480,7 @@ public PRBotBuilder(string token) { SetToken(token); AddRecevingOptions(new ReceiverOptions() { AllowedUpdates = { } }); - factory = new PRBotFactory(); + _factory = new PRBotFactory(); } /// @@ -491,9 +491,9 @@ public PRBotBuilder(TelegramBotClient client) : this() { - options.Client = client; + _options.Client = client; AddRecevingOptions(new ReceiverOptions() { AllowedUpdates = { } }); - factory = new PRBotFactory(); + _factory = new PRBotFactory(); } /// @@ -501,7 +501,7 @@ public PRBotBuilder(TelegramBotClient client) /// private PRBotBuilder() { - options = new TelegramOptions(); + _options = new TelegramOptions(); } #endregion diff --git a/PRTelegramBot/Core/PRBotPolling.cs b/PRTelegramBot/Core/PRBotPolling.cs index 9f0f3a5..2007df7 100644 --- a/PRTelegramBot/Core/PRBotPolling.cs +++ b/PRTelegramBot/Core/PRBotPolling.cs @@ -11,47 +11,44 @@ public sealed class PRBotPolling : PRBotBase { #region Базовый класс - public override DataRetrievalMethod DataRetrieval - { - get - { - return DataRetrievalMethod.Polling; - } - } + /// + public override DataRetrievalMethod DataRetrieval => DataRetrievalMethod.Polling; - public override async Task Start() + /// + public override async Task Start(CancellationToken cancellationToken = default) { try { - await base.Start(); + await base.Start(Options.CancellationTokenSource.Token); if (Options.ClearUpdatesOnStart) - await ClearUpdates(); + await ClearUpdatesAsync(Options.CancellationTokenSource.Token); - _ = UpdatePolling(); + _ = UpdatePolling(Options.CancellationTokenSource.Token); - var client = await botClient.GetMe(); + var client = await BotClient.GetMe(Options.CancellationTokenSource.Token); BotName = client?.Username; - this.Events.OnCommonLogInvoke($"Bot {BotName} is running.", "Initialization", ConsoleColor.Yellow); + Events.OnCommonLogInvoke($"Bot {BotName} is running.", "Initialization", ConsoleColor.Yellow); IsWork = true; } catch (Exception ex) { IsWork = false; - this.Events.OnErrorLogInvoke(ex); + Events.OnErrorLogInvoke(ex); } } - public override async Task Stop() + /// + public override async Task Stop(CancellationToken cancellationToken = default) { try { - Options.CancellationToken.Cancel(); - await Task.Delay(3000); + Options.CancellationTokenSource.Cancel(); + await Task.Delay(3000, CancellationToken.None); IsWork = false; } catch (Exception ex) { - this.Events.OnErrorLogInvoke(ex); + Events.OnErrorLogInvoke(ex); } } @@ -62,24 +59,24 @@ public override async Task Stop() /// /// Обработка update через polling. /// - public async Task UpdatePolling() + public async Task UpdatePolling(CancellationToken cancellationToken = default) // TODO: добавить постфикс Async. P.S. метод больше похож на приватный. Если приватный - убрать default для cT. { int? offset = Options.ReceiverOptions.Offset; - while (!Options.CancellationToken.IsCancellationRequested) + while (!Options.CancellationTokenSource.IsCancellationRequested) { - var updates = await botClient.GetUpdates(offset, Options.ReceiverOptions.Limit, Options.Timeout, Options.ReceiverOptions.AllowedUpdates, Options.CancellationToken.Token); + var updates = await BotClient.GetUpdates(offset, Options.ReceiverOptions.Limit, Options.Timeout, Options.ReceiverOptions.AllowedUpdates, Options.CancellationTokenSource.Token); foreach (var update in updates) { offset = update.Id + 1; try { - await Handler.HandleUpdateAsync(botClient, update, Options.CancellationToken.Token); + await Handler.HandleUpdateAsync(BotClient, update, Options.CancellationTokenSource.Token); } catch (Exception ex) { - this.Events.OnErrorLogInvoke(ex); + Events.OnErrorLogInvoke(ex); } - if (Options.CancellationToken.IsCancellationRequested) break; + if (Options.CancellationTokenSource.IsCancellationRequested) break; } } IsWork = false; diff --git a/PRTelegramBot/Core/PRBotWebHook.cs b/PRTelegramBot/Core/PRBotWebHook.cs index 36f9de2..796d7da 100644 --- a/PRTelegramBot/Core/PRBotWebHook.cs +++ b/PRTelegramBot/Core/PRBotWebHook.cs @@ -14,23 +14,19 @@ public sealed class PRBotWebHook : PRBotBase { #region Базовый класс - public override DataRetrievalMethod DataRetrieval - { - get - { - return DataRetrievalMethod.WebHook; - } - } + /// + public override DataRetrievalMethod DataRetrieval => DataRetrievalMethod.WebHook; - public override async Task Start() + /// + public override async Task Start(CancellationToken cancellationToken = default) { try { - await base.Start(); + await base.Start(Options.CancellationTokenSource.Token); if(string.IsNullOrEmpty(Options.WebHookOptions.SecretToken)) Options.WebHookOptions.SecretToken = Generator.RandomSymbols(Generator.Chars.Alphabet, 10); - await botClient.SetWebhook( + await BotClient.SetWebhook( url: Options.WebHookOptions.Url, certificate: Options.WebHookOptions.Certificate, ipAddress: Options.WebHookOptions.IpAddress, @@ -38,7 +34,7 @@ await botClient.SetWebhook( allowedUpdates: Array.Empty(), dropPendingUpdates: Options.WebHookOptions.DropPendingUpdates, secretToken: Options.WebHookOptions.SecretToken, - cancellationToken: Options.CancellationToken.Token); + cancellationToken: Options.CancellationTokenSource.Token); } catch(Exception ex) { @@ -46,14 +42,16 @@ await botClient.SetWebhook( } } - public override async Task Stop() + /// + public override async Task Stop(CancellationToken cancellationToken = default) { - await botClient.DeleteWebhook(cancellationToken: Options.CancellationToken.Token); + await BotClient.DeleteWebhook(cancellationToken: Options.CancellationTokenSource.Token); } - public async Task GetWebHookInfo() + /// + public async Task GetWebHookInfo(CancellationToken cancellationToken = default) // TODO: добавить постфикс async. { - return await botClient.GetWebhookInfo(); + return await BotClient.GetWebhookInfo(cancellationToken); } #endregion diff --git a/PRTelegramBot/Models/EventsArgs/BotEventArgs.cs b/PRTelegramBot/Models/EventsArgs/BotEventArgs.cs index ad22dce..1e493a3 100644 --- a/PRTelegramBot/Models/EventsArgs/BotEventArgs.cs +++ b/PRTelegramBot/Models/EventsArgs/BotEventArgs.cs @@ -38,7 +38,7 @@ public class BotEventArgs : EventArgs public BotEventArgs(PRBotBase bot, Update update) { Bot = bot; - BotClient = bot.botClient; + BotClient = bot.BotClient; Update = update; } diff --git a/PRTelegramBot/PRTelegramBot.csproj b/PRTelegramBot/PRTelegramBot.csproj index 14480e3..e93a662 100644 --- a/PRTelegramBot/PRTelegramBot.csproj +++ b/PRTelegramBot/PRTelegramBot.csproj @@ -6,7 +6,7 @@ latest enable enable - 0.7.12 + 0.7.13 Ilya Samarin git