OnUpdate is now only for updates. OnOther is used for other notifications

This commit is contained in:
Wizou 2023-05-01 18:21:03 +02:00
parent 5adde27f88
commit 753ac12eb1
5 changed files with 10 additions and 12 deletions

View file

@ -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

View file

@ -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)
{

View file

@ -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)

View file

@ -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)

View file

@ -25,7 +25,9 @@ namespace WTelegram
{
/// <summary>This event will be called when unsollicited updates/messages are sent by Telegram servers</summary>
/// <remarks>Make your handler <see langword="async"/>, or return <see cref="Task.CompletedTask"/> or <see langword="null"/><br/>See <see href="https://github.com/wiz0u/WTelegramClient/blob/master/Examples/Program_ListenUpdates.cs?ts=4#L23">Examples/Program_ListenUpdate.cs</see> for how to use this</remarks>
public event Func<IObject, Task> OnUpdate;
public event Func<UpdatesBase, Task> OnUpdate;
/// <summary>This event is called for other types of notifications (login states, reactor errors, ...)</summary>
public event Func<IObject, Task> OnOther;
/// <summary>Used to create a TcpClient connected to the given address/port, or throw an exception on failure</summary>
public TcpFactory TcpHandler { get; set; } = DefaultTcpHandler;
public delegate Task<TcpClient> 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)