diff --git a/TelegramBotBase/Base/MessageResult.cs b/TelegramBotBase/Base/MessageResult.cs
index 020e6fb..da1851f 100644
--- a/TelegramBotBase/Base/MessageResult.cs
+++ b/TelegramBotBase/Base/MessageResult.cs
@@ -113,6 +113,11 @@ namespace TelegramBotBase.Base
}
}
+ ///
+ /// Returns if this message will be used on the first form or not.
+ ///
+ public bool IsFirstHandler { get; set; } = true;
+
public bool Handled { get; set; } = false;
public String RawData
diff --git a/TelegramBotBase/BotBase.cs b/TelegramBotBase/BotBase.cs
index b79a9e8..6069582 100644
--- a/TelegramBotBase/BotBase.cs
+++ b/TelegramBotBase/BotBase.cs
@@ -8,6 +8,7 @@ using Telegram.Bot;
using TelegramBotBase.Args;
using TelegramBotBase.Base;
using TelegramBotBase.Form;
+using TelegramBotBase.Interfaces;
using TelegramBotBase.Sessions;
namespace TelegramBotBase
@@ -170,6 +171,7 @@ namespace TelegramBotBase
this.Client.TelegramClient.StartReceiving();
}
+
///
/// Stop your Bot
///
@@ -212,7 +214,7 @@ namespace TelegramBotBase
if (LogAllMessages)
{
- OnMessage(new MessageIncomeResult(e.DeviceId, ds, e));
+ OnMessage(new MessageIncomeEventArgs(e.DeviceId, ds, e));
}
ds?.OnMessageReceived(new MessageReceivedEventArgs(e.Message));
@@ -240,7 +242,7 @@ namespace TelegramBotBase
ds.LastMessage = e.Message;
- OnSessionBegins(new SessionBeginResult(e.DeviceId, ds));
+ OnSessionBegins(new SessionBeginEventArgs(e.DeviceId, ds));
}
ds.LastAction = DateTime.Now;
@@ -289,15 +291,16 @@ namespace TelegramBotBase
//Render Event
if (!ds.FormSwitched)
{
-
await activeForm.RenderControls(e);
await activeForm.Render(e);
}
-
+
+ e.IsFirstHandler = false;
} while (ds.FormSwitched && i < NavigationMaximum);
+
}
private void Client_Action(object sender, MessageResult e)
@@ -309,7 +312,7 @@ namespace TelegramBotBase
if (LogAllMessages)
{
- OnMessage(new MessageIncomeResult(e.DeviceId, ds, e));
+ OnMessage(new MessageIncomeEventArgs(e.DeviceId, ds, e));
}
Client_TryAction(sender, e);
@@ -394,6 +397,8 @@ namespace TelegramBotBase
await activeForm.Render(e);
}
+ e.IsFirstHandler = false;
+
} while (ds.FormSwitched && i < NavigationMaximum);
}
@@ -402,7 +407,7 @@ namespace TelegramBotBase
/// Will be called if a session/context gets started
///
- public event EventHandler SessionBegins
+ public event EventHandler SessionBegins
{
add
{
@@ -414,16 +419,16 @@ namespace TelegramBotBase
}
}
- public void OnSessionBegins(SessionBeginResult e)
+ public void OnSessionBegins(SessionBeginEventArgs e)
{
- (this.__Events[__evSessionBegins] as EventHandler)?.Invoke(this, e);
+ (this.__Events[__evSessionBegins] as EventHandler)?.Invoke(this, e);
}
///
/// Will be called on incomming message
///
- public event EventHandler Message
+ public event EventHandler Message
{
add
{
@@ -435,9 +440,9 @@ namespace TelegramBotBase
}
}
- public void OnMessage(MessageIncomeResult e)
+ public void OnMessage(MessageIncomeEventArgs e)
{
- (this.__Events[__evMessage] as EventHandler)?.Invoke(this, e);
+ (this.__Events[__evMessage] as EventHandler)?.Invoke(this, e);
}
diff --git a/TelegramBotBase/Controls/ButtonGrid.cs b/TelegramBotBase/Controls/ButtonGrid.cs
index cbb5b29..aab7431 100644
--- a/TelegramBotBase/Controls/ButtonGrid.cs
+++ b/TelegramBotBase/Controls/ButtonGrid.cs
@@ -49,7 +49,6 @@ namespace TelegramBotBase.Controls
{
get
{
-
return m_eKeyboardType;
}
set
@@ -111,6 +110,8 @@ namespace TelegramBotBase.Controls
if (this.KeyboardType != eKeyboardType.ReplyKeyboard)
return;
+ if (!result.IsFirstHandler)
+ return;
var button = ButtonsForm.ToList().FirstOrDefault(a => a.Text.Trim() == result.MessageText);
@@ -132,6 +133,9 @@ namespace TelegramBotBase.Controls
if (result.Handled)
return;
+ if (!result.IsFirstHandler)
+ return;
+
await result.ConfirmAction();
//Find clicked button depending on Text or Value (depending on markup type)
@@ -247,6 +251,14 @@ namespace TelegramBotBase.Controls
}
+ public override async Task Hidden(bool FormClose)
+ {
+ //Prepare for opening Modal, and comming back
+ if (!FormClose)
+ {
+ this.Updated();
+ }
+ }
///
/// Tells the control that it has been updated.
@@ -256,21 +268,35 @@ namespace TelegramBotBase.Controls
this.RenderNecessary = true;
}
-
public async override Task Cleanup()
{
if (this.MessageId == null)
return;
- await this.Device.DeleteMessage(this.MessageId.Value);
-
- this.MessageId = null;
-
- if (this.KeyboardType == eKeyboardType.ReplyKeyboard && this.HideKeyboardOnCleanup)
+ switch (this.KeyboardType)
{
- await this.Device.HideReplyKeyboard();
+ case eKeyboardType.InlineKeyBoard:
+
+ await this.Device.DeleteMessage(this.MessageId.Value);
+
+ this.MessageId = null;
+
+ break;
+ case eKeyboardType.ReplyKeyboard:
+
+ if (this.HideKeyboardOnCleanup)
+ {
+ await this.Device.HideReplyKeyboard();
+ }
+
+ this.MessageId = null;
+
+ break;
}
+
+
+
}
}