From 753ac12eb1af981044dde543ede647cbb6a1045f Mon Sep 17 00:00:00 2001 From: Wizou <11647984+wiz0u@users.noreply.github.com> Date: Mon, 1 May 2023 18:21:03 +0200 Subject: [PATCH] OnUpdate is now only for updates. OnOther is used for other notifications --- Examples/Program_DownloadSavedMedia.cs | 5 ++--- Examples/Program_Heroku.cs | 3 +-- Examples/Program_ListenUpdates.cs | 3 +-- Examples/Program_SecretChats.cs | 3 +-- src/Client.cs | 8 +++++--- 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Examples/Program_DownloadSavedMedia.cs b/Examples/Program_DownloadSavedMedia.cs index c65c13a..186ddbb 100644 --- a/Examples/Program_DownloadSavedMedia.cs +++ b/Examples/Program_DownloadSavedMedia.cs @@ -18,10 +18,9 @@ namespace WTelegramClientTest client.OnUpdate += Client_OnUpdate; Console.ReadKey(); - async Task Client_OnUpdate(IObject arg) + async Task Client_OnUpdate(UpdatesBase updates) { - if (arg is not Updates { updates: var updates } upd) return; - foreach (var update in updates) + foreach (var update in updates.UpdateList) { if (update is not UpdateNewMessage { message: Message message }) continue; // if it's not about a new message, ignore the update diff --git a/Examples/Program_Heroku.cs b/Examples/Program_Heroku.cs index 70fffdf..23555ae 100644 --- a/Examples/Program_Heroku.cs +++ b/Examples/Program_Heroku.cs @@ -39,9 +39,8 @@ namespace WTelegramClientTest } } - private static async Task Client_OnUpdate(IObject arg) + private static async Task Client_OnUpdate(UpdatesBase updates) { - if (arg is not UpdatesBase updates) return; updates.CollectUsersChats(Users, Chats); foreach (var update in updates.UpdateList) { diff --git a/Examples/Program_ListenUpdates.cs b/Examples/Program_ListenUpdates.cs index b94165e..c69ebb0 100644 --- a/Examples/Program_ListenUpdates.cs +++ b/Examples/Program_ListenUpdates.cs @@ -33,9 +33,8 @@ namespace WTelegramClientTest } // if not using async/await, we could just return Task.CompletedTask - private static async Task Client_OnUpdate(IObject arg) + private static async Task Client_OnUpdate(UpdatesBase updates) { - if (arg is not UpdatesBase updates) return; updates.CollectUsersChats(Users, Chats); foreach (var update in updates.UpdateList) switch (update) diff --git a/Examples/Program_SecretChats.cs b/Examples/Program_SecretChats.cs index 4b0edf0..637ead7 100644 --- a/Examples/Program_SecretChats.cs +++ b/Examples/Program_SecretChats.cs @@ -76,9 +76,8 @@ Type a command, or a message to send to the active secret chat:"); } while (true); } - private static async Task Client_OnUpdate(IObject arg) + private static async Task Client_OnUpdate(UpdatesBase updates) { - if (arg is not UpdatesBase updates) return; updates.CollectUsersChats(Users, Chats); foreach (var update in updates.UpdateList) switch (update) diff --git a/src/Client.cs b/src/Client.cs index c9006a5..ecf75a7 100644 --- a/src/Client.cs +++ b/src/Client.cs @@ -25,7 +25,9 @@ namespace WTelegram { /// This event will be called when unsollicited updates/messages are sent by Telegram servers /// Make your handler , or return or
See Examples/Program_ListenUpdate.cs for how to use this
- public event Func OnUpdate; + public event Func OnUpdate; + /// This event is called for other types of notifications (login states, reactor errors, ...) + public event Func OnOther; /// Used to create a TcpClient connected to the given address/port, or throw an exception on failure public TcpFactory TcpHandler { get; set; } = DefaultTcpHandler; public delegate Task TcpFactory(string host, int port); @@ -646,7 +648,7 @@ namespace WTelegram } break; case 48: // incorrect server salt (in this case, the bad_server_salt response is received with the correct salt, and the message is to be re-sent with it) - _dcSession.Salt = ((BadServerSalt)badMsgNotification).new_server_salt; + _dcSession.Salt = ((BadServerSalt)badMsgNotification).new_server_salt; //TODO: GetFutureSalts break; default: retryLast = false; @@ -688,7 +690,7 @@ namespace WTelegram { try { - var task = OnUpdate?.Invoke(obj); + var task = obj is UpdatesBase updates ? OnUpdate?.Invoke(updates) : OnOther?.Invoke(obj); if (task != null) await task; } catch (Exception ex)