diff --git a/TelegramBaseTest/Program.cs b/TelegramBaseTest/Program.cs
index d2b7b63..f79b7f2 100644
--- a/TelegramBaseTest/Program.cs
+++ b/TelegramBaseTest/Program.cs
@@ -21,13 +21,19 @@ namespace TelegramBaseTest
bb.SystemCalls.Add("/start");
bb.SystemCalls.Add("/form1");
bb.SystemCalls.Add("/form2");
-
bb.SystemCalls.Add("/params");
bb.SystemCall += async (s, en) =>
{
switch (en.Command)
{
+ case "/start":
+
+ var start = new Start();
+
+ await en.Device.ActiveForm.NavigateTo(start);
+
+ break;
case "/form1":
var form1 = new TestForm();
@@ -47,8 +53,10 @@ namespace TelegramBaseTest
case "/params":
String m = en.Parameters.DefaultIfEmpty("").Aggregate((a, b) => a + " and " + b);
+
+ await en.Device.Send("Your parameters are: " + m, replyTo: en.Device.LastMessageId);
- await en.Device.Send("Your parameters are " + m, replyTo: en.Device.LastMessage);
+ en.Handled = true;
break;
}
diff --git a/TelegramBotBase/Base/FormBase.cs b/TelegramBotBase/Base/FormBase.cs
index d5c7d23..e69f443 100644
--- a/TelegramBotBase/Base/FormBase.cs
+++ b/TelegramBotBase/Base/FormBase.cs
@@ -44,6 +44,10 @@ namespace TelegramBotBase.Form
}
+ ///
+ /// Gets invoked if gets navigated to this form
+ ///
+ ///
public virtual async Task Opened()
{
@@ -62,17 +66,31 @@ namespace TelegramBotBase.Form
}
+ ///
+ /// Gets invoked if the form gets loaded and on every message belongs to this context
+ ///
+ ///
+ ///
public virtual async Task Load(MessageResult message)
{
}
+ ///
+ /// Gets invoked if the user has clicked a button.
+ ///
+ ///
+ ///
public virtual async Task Action(MessageResult message)
{
}
-
+ ///
+ /// Gets invoked at the end of the cycle to "Render" text, images, buttons, etc...
+ ///
+ ///
+ ///
public virtual async Task Render(MessageResult message)
{
diff --git a/TelegramBotBase/BotBase.cs b/TelegramBotBase/BotBase.cs
index 61030ea..2613b60 100644
--- a/TelegramBotBase/BotBase.cs
+++ b/TelegramBotBase/BotBase.cs
@@ -42,6 +42,8 @@ namespace TelegramBotBase
private static object __evSystemCall = new object();
+ public delegate Task SystemCallEventHandler(object sender, SystemCallEventArgs e);
+
private static object __evException = new object();
private static object __evUnhandledCall = new object();
@@ -220,7 +222,10 @@ namespace TelegramBotBase
if (e.IsSystemCall && this.SystemCalls.Contains(e.SystemCommand))
{
var sce = new SystemCallEventArgs(e.SystemCommand, e.SystemCallParameters, e.Message, ds.DeviceId, ds);
- OnSystemCall(sce);
+ await OnSystemCall(sce);
+
+ if (sce.Handled)
+ return;
}
FormBase activeForm = null;
@@ -377,21 +382,13 @@ namespace TelegramBotBase
///
/// Will be called if a system call gets raised
///
- public event EventHandler SystemCall
- {
- add
- {
- this.__Events.AddHandler(__evSystemCall, value);
- }
- remove
- {
- this.__Events.RemoveHandler(__evSystemCall, value);
- }
- }
+ public event SystemCallEventHandler SystemCall;
- public void OnSystemCall(SystemCallEventArgs e)
+
+ public async Task OnSystemCall(SystemCallEventArgs e)
{
- (this.__Events[__evSystemCall] as EventHandler)?.Invoke(this, e);
+ if (this.SystemCall != null)
+ await SystemCall(this, e);
}
///
diff --git a/TelegramBotBase/Properties/AssemblyInfo.cs b/TelegramBotBase/Properties/AssemblyInfo.cs
index 454c5df..7a5e26e 100644
--- a/TelegramBotBase/Properties/AssemblyInfo.cs
+++ b/TelegramBotBase/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.3.1.0")]
-[assembly: AssemblyFileVersion("1.3.1.0")]
+[assembly: AssemblyVersion("1.3.1.2")]
+[assembly: AssemblyFileVersion("1.3.1.2")]