public async Task OnSystemCall(SystemCallEventArgs e) { if (this.SystemCall != null) { await SystemCall(this, e); } }
private async Task Client_TryMessage(object sender, MessageResult e) { DeviceSession ds = e.Device; if (ds == null) { ds = await this.Sessions.StartSession <T>(e.DeviceId); e.Device = ds; ds.LastMessage = e.Message; OnSessionBegins(new SessionBeginEventArgs(e.DeviceId, ds)); } ds.ChatTitle = e.Message.Chat.Username ?? e.Message.Chat.Title; ds.LastAction = DateTime.Now; ds.LastMessage = e.Message; //Is this a systemcall ? if (e.IsSystemCall && this.SystemCalls.Contains(e.SystemCommand)) { var sce = new SystemCallEventArgs(e.SystemCommand, e.SystemCallParameters, e.Message, ds.DeviceId, ds); await OnSystemCall(sce); if (sce.Handled) { return; } } FormBase activeForm = null; int i = 0; //Should formulars get navigated (allow maximum of 10, to dont get loops) do { i++; //Reset navigation ds.FormSwitched = false; activeForm = ds.ActiveForm; //Pre Loading Event await activeForm.PreLoad(e); //Send Load event to controls await activeForm.LoadControls(e); //Loading Event await activeForm.Load(e); //Is Attachment ? (Photo, Audio, Video, Contact, Location, Document) if (e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Contact | e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Document | e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Location | e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Photo | e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Video | e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Audio) { await activeForm.SentData(new DataResult(e)); } //Render Event if (!ds.FormSwitched) { await activeForm.RenderControls(e); await activeForm.Render(e); } e.IsFirstHandler = false; } while (ds.FormSwitched && i < NavigationMaximum); }