diff --git a/TelegramBotBase/Constants/Telegram.cs b/TelegramBotBase/Constants/Telegram.cs
index b7392ee..d203123 100644
--- a/TelegramBotBase/Constants/Telegram.cs
+++ b/TelegramBotBase/Constants/Telegram.cs
@@ -21,5 +21,7 @@ namespace TelegramBotBase.Constants
public const int MaxReplyKeyboardCols = 12;
+ public const int MessageDeletionsPerSecond = 30;
+
}
}
diff --git a/TelegramBotBase/Form/AutoCleanForm.cs b/TelegramBotBase/Form/AutoCleanForm.cs
index 1f40430..fdaeffd 100644
--- a/TelegramBotBase/Form/AutoCleanForm.cs
+++ b/TelegramBotBase/Form/AutoCleanForm.cs
@@ -25,7 +25,7 @@ namespace TelegramBotBase.Form
[SaveState]
public eDeleteSide DeleteSide { get; set; }
-
+
public AutoCleanForm()
{
@@ -33,13 +33,12 @@ namespace TelegramBotBase.Form
this.DeleteMode = eDeleteMode.OnEveryCall;
this.DeleteSide = eDeleteSide.BotOnly;
- this.Init += AutoCleanForm_Init;
+ this.Init += AutoCleanForm_Init;
this.Closed += AutoCleanForm_Closed;
}
-
private async Task AutoCleanForm_Init(object sender, InitEventArgs e)
{
if (this.Device == null)
@@ -128,16 +127,24 @@ namespace TelegramBotBase.Form
///
public async Task MessageCleanup()
{
- var tasks = new List();
-
- foreach (var msg in this.OldMessages)
+ while (this.OldMessages.Count > 0)
{
- tasks.Add(this.Device.DeleteMessage(msg));
- }
+ var tasks = new List();
+ var msgs = this.OldMessages.Take(Constants.Telegram.MessageDeletionsPerSecond);
- await Task.WhenAll(tasks);
+ foreach (var msg in msgs)
+ {
+ tasks.Add(this.Device.DeleteMessage(msg));
+ }
- this.OldMessages.Clear();
+ await Task.WhenAll(tasks);
+
+ foreach(var m in msgs)
+ {
+ Device.OnMessageDeleted(new MessageDeletedEventArgs(m));
+ this.OldMessages.Remove(m);
+ }
+ }
}
}
}