From df7880fcf3b45de254efe0c61223a3661067412f Mon Sep 17 00:00:00 2001 From: FlorianDahn Date: Sat, 2 Jul 2022 14:07:25 +0200 Subject: [PATCH] Make OnMessageSent async as well --- TelegramBotBase/Args/MessageSentEventArgs.cs | 2 +- TelegramBotBase/Controls/Hybrid/MultiView.cs | 2 +- TelegramBotBase/Form/AutoCleanForm.cs | 2 +- TelegramBotBase/Sessions/DeviceSession.cs | 37 +++++++++++++------- 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/TelegramBotBase/Args/MessageSentEventArgs.cs b/TelegramBotBase/Args/MessageSentEventArgs.cs index d096db1..9cfe651 100644 --- a/TelegramBotBase/Args/MessageSentEventArgs.cs +++ b/TelegramBotBase/Args/MessageSentEventArgs.cs @@ -7,7 +7,7 @@ using Telegram.Bot.Types; namespace TelegramBotBase.Args { - public class MessageSentEventArgs + public class MessageSentEventArgs : EventArgs { public int MessageId { diff --git a/TelegramBotBase/Controls/Hybrid/MultiView.cs b/TelegramBotBase/Controls/Hybrid/MultiView.cs index 1f66264..83eb0e6 100644 --- a/TelegramBotBase/Controls/Hybrid/MultiView.cs +++ b/TelegramBotBase/Controls/Hybrid/MultiView.cs @@ -50,7 +50,7 @@ namespace TelegramBotBase.Controls.Hybrid } - private void Device_MessageSent(object sender, MessageSentEventArgs e) + private async Task Device_MessageSent(object sender, MessageSentEventArgs e) { if (e.Origin == null || !e.Origin.IsSubclassOf(typeof(MultiView))) return; diff --git a/TelegramBotBase/Form/AutoCleanForm.cs b/TelegramBotBase/Form/AutoCleanForm.cs index 4e6a692..b05938e 100644 --- a/TelegramBotBase/Form/AutoCleanForm.cs +++ b/TelegramBotBase/Form/AutoCleanForm.cs @@ -67,7 +67,7 @@ namespace TelegramBotBase.Form this.OldMessages.Add(e.Message.MessageId); } - private void Device_MessageSent(object sender, MessageSentEventArgs e) + private async Task Device_MessageSent(object sender, MessageSentEventArgs e) { if (this.DeleteSide == eDeleteSide.UserOnly) return; diff --git a/TelegramBotBase/Sessions/DeviceSession.cs b/TelegramBotBase/Sessions/DeviceSession.cs index 059d040..17d52e8 100644 --- a/TelegramBotBase/Sessions/DeviceSession.cs +++ b/TelegramBotBase/Sessions/DeviceSession.cs @@ -291,7 +291,8 @@ namespace TelegramBotBase.Sessions var t = API(a => a.SendTextMessageAsync(deviceId, text, parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); - OnMessageSent(new MessageSentEventArgs(await t, o)); + + await OnMessageSent(new MessageSentEventArgs(await t, o)); return await t; } @@ -342,7 +343,7 @@ namespace TelegramBotBase.Sessions var t = API(a => a.SendTextMessageAsync(this.DeviceId, text, parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); - OnMessageSent(new MessageSentEventArgs(await t, o)); + await OnMessageSent(new MessageSentEventArgs(await t, o)); return await t; } @@ -380,7 +381,7 @@ namespace TelegramBotBase.Sessions var t = API(a => a.SendTextMessageAsync(this.DeviceId, text, parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); - OnMessageSent(new MessageSentEventArgs(await t, o)); + await OnMessageSent(new MessageSentEventArgs(await t, o)); return await t; } @@ -410,7 +411,7 @@ namespace TelegramBotBase.Sessions var t = API(a => a.SendPhotoAsync(this.DeviceId, file, caption: caption, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); - OnMessageSent(new MessageSentEventArgs(await t, o)); + await OnMessageSent(new MessageSentEventArgs(await t, o)); return await t; } @@ -440,7 +441,7 @@ namespace TelegramBotBase.Sessions var t = API(a => a.SendVideoAsync(this.DeviceId, file, caption: caption, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); - OnMessageSent(new MessageSentEventArgs(await t, o)); + await OnMessageSent(new MessageSentEventArgs(await t, o)); return await t; } @@ -470,7 +471,7 @@ namespace TelegramBotBase.Sessions var t = API(a => a.SendVideoAsync(this.DeviceId, new InputOnlineFile(url), parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); - OnMessageSent(new MessageSentEventArgs(await t, o)); + await OnMessageSent(new MessageSentEventArgs(await t, o)); return await t; } @@ -505,7 +506,7 @@ namespace TelegramBotBase.Sessions var t = API(a => a.SendVideoAsync(this.DeviceId, fts, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); - OnMessageSent(new MessageSentEventArgs(await t, o)); + await OnMessageSent(new MessageSentEventArgs(await t, o)); return await t; } @@ -542,7 +543,7 @@ namespace TelegramBotBase.Sessions var t = API(a => a.SendVideoAsync(this.DeviceId, fts, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); - OnMessageSent(new MessageSentEventArgs(await t, o)); + await OnMessageSent(new MessageSentEventArgs(await t, o)); return await t; } @@ -619,7 +620,7 @@ namespace TelegramBotBase.Sessions var t = API(a => a.SendDocumentAsync(this.DeviceId, document, caption, replyMarkup: markup, disableNotification: disableNotification, replyToMessageId: replyTo)); var o = GetOrigin(new StackTrace()); - OnMessageSent(new MessageSentEventArgs(await t, o)); + await OnMessageSent(new MessageSentEventArgs(await t, o)); return await t; } @@ -882,7 +883,7 @@ namespace TelegramBotBase.Sessions /// /// Eventhandler for sent messages /// - public event EventHandler MessageSent + public event Base.Async.AsyncEventHandler MessageSent { add { @@ -895,9 +896,21 @@ namespace TelegramBotBase.Sessions } - public void OnMessageSent(MessageSentEventArgs e) + public async Task OnMessageSent(MessageSentEventArgs e) { - (this.__Events[__evMessageSent] as EventHandler)?.Invoke(this, e); + if (e.Message == null) + return; + + var handler = this.__Events[__evMessageSent]?.GetInvocationList().Cast>(); + if (handler == null) + return; + + foreach (var h in handler) + { + await Base.Async.InvokeAllAsync(h, this, e); + } + + //(this.__Events[__evMessageSent] as EventHandler)?.Invoke(this, e); } ///