Deleting messages update

- new constant for how much message deletions per second
- updating AutoCleanForm "Cleanup" process to use constant and using MessageDeleted eventhandler
This commit is contained in:
FlorianDahn 2021-03-01 22:52:45 +01:00
parent 26c4f479fa
commit 399e056a8f
2 changed files with 19 additions and 10 deletions

View File

@ -21,5 +21,7 @@ namespace TelegramBotBase.Constants
public const int MaxReplyKeyboardCols = 12; public const int MaxReplyKeyboardCols = 12;
public const int MessageDeletionsPerSecond = 30;
} }
} }

View File

@ -33,13 +33,12 @@ namespace TelegramBotBase.Form
this.DeleteMode = eDeleteMode.OnEveryCall; this.DeleteMode = eDeleteMode.OnEveryCall;
this.DeleteSide = eDeleteSide.BotOnly; this.DeleteSide = eDeleteSide.BotOnly;
this.Init += AutoCleanForm_Init; this.Init += AutoCleanForm_Init;
this.Closed += AutoCleanForm_Closed; this.Closed += AutoCleanForm_Closed;
} }
private async Task AutoCleanForm_Init(object sender, InitEventArgs e) private async Task AutoCleanForm_Init(object sender, InitEventArgs e)
{ {
if (this.Device == null) if (this.Device == null)
@ -128,16 +127,24 @@ namespace TelegramBotBase.Form
/// <returns></returns> /// <returns></returns>
public async Task MessageCleanup() public async Task MessageCleanup()
{ {
var tasks = new List<Task>(); while (this.OldMessages.Count > 0)
foreach (var msg in this.OldMessages)
{ {
tasks.Add(this.Device.DeleteMessage(msg)); var tasks = new List<Task>();
var msgs = this.OldMessages.Take(Constants.Telegram.MessageDeletionsPerSecond);
foreach (var msg in msgs)
{
tasks.Add(this.Device.DeleteMessage(msg));
}
await Task.WhenAll(tasks);
foreach(var m in msgs)
{
Device.OnMessageDeleted(new MessageDeletedEventArgs(m));
this.OldMessages.Remove(m);
}
} }
await Task.WhenAll(tasks);
this.OldMessages.Clear();
} }
} }
} }