From e0ec1332098a7778152ae01d09a5f4a635cfd73e Mon Sep 17 00:00:00 2001 From: FlorianDahn Date: Fri, 1 Oct 2021 18:35:05 +0200 Subject: [PATCH] AutoCleanForm FIX - adding MessageDeleted event to AutoCleanForm for catching messages getting deleted outside of AutoCleanForm - added OnMessageDelete invoke to DeleteMessage in DeviceSession --- TelegramBotBase/Form/AutoCleanForm.cs | 11 +++++++++-- TelegramBotBase/Sessions/DeviceSession.cs | 12 +++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/TelegramBotBase/Form/AutoCleanForm.cs b/TelegramBotBase/Form/AutoCleanForm.cs index 5617775..4acc8ee 100644 --- a/TelegramBotBase/Form/AutoCleanForm.cs +++ b/TelegramBotBase/Form/AutoCleanForm.cs @@ -49,8 +49,15 @@ namespace TelegramBotBase.Form this.Device.MessageSent += Device_MessageSent; this.Device.MessageReceived += Device_MessageReceived; + + this.Device.MessageDeleted += Device_MessageDeleted; } + private void Device_MessageDeleted(object sender, MessageDeletedEventArgs e) + { + if (OldMessages.Contains(e.MessageId)) + OldMessages.Remove(e.MessageId); + } private void Device_MessageReceived(object sender, MessageReceivedEventArgs e) { @@ -157,7 +164,7 @@ namespace TelegramBotBase.Form retryAfterTask = Task.Delay(retryAfterSeconds * 1000); } - deletedMessages.AsParallel().ForAll(i => Device.OnMessageDeleted(new MessageDeletedEventArgs(i))); + //deletedMessages.AsParallel().ForAll(i => Device.OnMessageDeleted(new MessageDeletedEventArgs(i))); oldMessages = oldMessages.Where(x => !deletedMessages.Contains(x)); if (retryAfterTask != null) @@ -190,7 +197,7 @@ namespace TelegramBotBase.Form retryAfterTask = Task.Delay(retryAfterSeconds * 1000); } - deletedMessages.AsParallel().ForAll(i => Device.OnMessageDeleted(new MessageDeletedEventArgs(i))); + //deletedMessages.AsParallel().ForAll(i => Device.OnMessageDeleted(new MessageDeletedEventArgs(i))); oldMessages = oldMessages.Where(x => !deletedMessages.Contains(x)); if (retryAfterTask != null) diff --git a/TelegramBotBase/Sessions/DeviceSession.cs b/TelegramBotBase/Sessions/DeviceSession.cs index 0e0ce98..cf3a5c4 100644 --- a/TelegramBotBase/Sessions/DeviceSession.cs +++ b/TelegramBotBase/Sessions/DeviceSession.cs @@ -644,18 +644,12 @@ namespace TelegramBotBase.Sessions /// public virtual async Task DeleteMessage(int messageId = -1) { - try - { - await RAW(a => a.DeleteMessageAsync(this.DeviceId, messageId)); - return true; - } - catch (ApiRequestException) - { + await RAW(a => a.DeleteMessageAsync(this.DeviceId, messageId)); - } + OnMessageDeleted(new MessageDeletedEventArgs(messageId)); - return false; + return true; } ///