From 399e056a8fb52184261e2cc0582376410dd7f91b Mon Sep 17 00:00:00 2001 From: FlorianDahn Date: Mon, 1 Mar 2021 22:52:45 +0100 Subject: [PATCH] Deleting messages update - new constant for how much message deletions per second - updating AutoCleanForm "Cleanup" process to use constant and using MessageDeleted eventhandler --- TelegramBotBase/Constants/Telegram.cs | 2 ++ TelegramBotBase/Form/AutoCleanForm.cs | 27 +++++++++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) 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); + } + } } } }