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:
parent
26c4f479fa
commit
399e056a8f
@ -21,5 +21,7 @@ namespace TelegramBotBase.Constants
|
|||||||
|
|
||||||
public const int MaxReplyKeyboardCols = 12;
|
public const int MaxReplyKeyboardCols = 12;
|
||||||
|
|
||||||
|
public const int MessageDeletionsPerSecond = 30;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,7 +25,7 @@ namespace TelegramBotBase.Form
|
|||||||
[SaveState]
|
[SaveState]
|
||||||
public eDeleteSide DeleteSide { get; set; }
|
public eDeleteSide DeleteSide { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public AutoCleanForm()
|
public AutoCleanForm()
|
||||||
{
|
{
|
||||||
@ -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);
|
||||||
|
|
||||||
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user