From 150e9f731dad4e7876ca66a5e461aafd056a2423 Mon Sep 17 00:00:00 2001 From: FlorianDahn Date: Sat, 23 Nov 2019 02:39:56 +0100 Subject: [PATCH] - addes SplitterForm to switch between "normal" chats and group chats --- TelegramBotBase/Form/SplitterForm.cs | 100 +++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 TelegramBotBase/Form/SplitterForm.cs diff --git a/TelegramBotBase/Form/SplitterForm.cs b/TelegramBotBase/Form/SplitterForm.cs new file mode 100644 index 0000000..d547187 --- /dev/null +++ b/TelegramBotBase/Form/SplitterForm.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TelegramBotBase.Base; +using static TelegramBotBase.Base.Async; + +namespace TelegramBotBase.Form +{ + /// + /// This is used to split incomming requests depending on the chat type. + /// + public class SplitterForm : FormBase + { + + private static object __evOpenSupergroup = new object(); + private static object __evOpenGroup = new object(); + private static object __evOpenChannel = new object(); + private static object __evOpen = new object(); + + + public override async Task Load(MessageResult message) + { + + if (message.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Channel) + { + if (await OpenChannel(message)) + { + return; + } + } + if (message.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Supergroup) + { + if (await OpenSupergroup(message)) + { + return; + } + if (await OpenGroup(message)) + { + return; + } + } + if (message.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Group) + { + if (await OpenGroup(message)) + { + return; + } + } + + await Open(message); + } + + + public virtual async Task OpenSupergroup(MessageResult e) + { + return false; + } + + public virtual async Task OpenChannel(MessageResult e) + { + return false; + } + + public virtual async Task Open(MessageResult e) + { + return false; + } + + public virtual async Task OpenGroup(MessageResult e) + { + return false; + } + + + + + public override Task Action(MessageResult message) + { + return base.Action(message); + } + + public override Task PreLoad(MessageResult message) + { + return base.PreLoad(message); + } + + public override Task Render(MessageResult message) + { + return base.Render(message); + } + + public override Task SentData(DataResult message) + { + return base.SentData(message); + } + + } +}