diff --git a/README.md b/README.md
index 67379a4..936392b 100644
--- a/README.md
+++ b/README.md
@@ -169,11 +169,9 @@ public class StartForm : FormBase
}
- //Gets invoked during Navigation to this form
- public override async Task Init(params object[] param)
- {
-
- }
+ //Gets invoked during Navigation to this form
+
+ //Init() got replaced with event handler
//Opened() got replaced with event handler
diff --git a/TelegramBotBase/Form/AutoCleanForm.cs b/TelegramBotBase/Form/AutoCleanForm.cs
index 5617775..7fd9200 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)
{
@@ -143,8 +150,15 @@ namespace TelegramBotBase.Form
{
parallelQuery.ForAll(i =>
{
- Device.DeleteMessage(i).GetAwaiter().GetResult();
- deletedMessages.Add(i);
+ try
+ {
+ Device.DeleteMessage(i).GetAwaiter().GetResult();
+ deletedMessages.Add(i);
+ }
+ catch (ApiRequestException req) when (req.ErrorCode == 400)
+ {
+ deletedMessages.Add(i);
+ }
});
}
catch (AggregateException ex)
@@ -153,11 +167,11 @@ namespace TelegramBotBase.Form
var retryAfterSeconds = ex.InnerExceptions
.Where(e => e is ApiRequestException apiEx && apiEx.ErrorCode == 429)
- .Max(e =>(int?) ((ApiRequestException)e).Parameters.RetryAfter) ?? 0;
+ .Max(e => (int?)((ApiRequestException)e).Parameters.RetryAfter) ?? 0;
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)
@@ -176,8 +190,15 @@ namespace TelegramBotBase.Form
{
parallelQuery.ForAll(i =>
{
- Device.DeleteMessage(i).GetAwaiter().GetResult();
- deletedMessages.Add(i);
+ try
+ {
+ Device.DeleteMessage(i).GetAwaiter().GetResult();
+ deletedMessages.Add(i);
+ }
+ catch (ApiRequestException req) when (req.ErrorCode == 400)
+ {
+ deletedMessages.Add(i);
+ }
});
}
catch (AggregateException ex)
@@ -190,7 +211,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;
}
///