diff --git a/Examples/AsyncFormUpdates/App.config b/Examples/AsyncFormUpdates/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/Examples/AsyncFormUpdates/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Examples/AsyncFormUpdates/AsyncFormUpdates.csproj b/Examples/AsyncFormUpdates/AsyncFormUpdates.csproj new file mode 100644 index 0000000..212f87e --- /dev/null +++ b/Examples/AsyncFormUpdates/AsyncFormUpdates.csproj @@ -0,0 +1,69 @@ + + + + + Debug + AnyCPU + {673A56F5-6110-4AED-A68D-562FD6ED3EA6} + Exe + AsyncFormUpdates + AsyncFormUpdates + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll + + + + + + + + + + + ..\..\packages\Telegram.Bot.15.7.1\lib\net45\Telegram.Bot.dll + + + + + + + + + + + + + + + + {0bd16fb9-7ed4-4ccb-83eb-5cee538e1b6c} + TelegramBotBase + + + + \ No newline at end of file diff --git a/Examples/AsyncFormUpdates/Program.cs b/Examples/AsyncFormUpdates/Program.cs new file mode 100644 index 0000000..f249391 --- /dev/null +++ b/Examples/AsyncFormUpdates/Program.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Timers; + +namespace AsyncFormUpdates +{ + class Program + { + static TelegramBotBase.BotBase bot = null; + + static void Main(string[] args) + { + String apiKey = "APIKey"; + + bot = new TelegramBotBase.BotBase(apiKey); + + bot.Start(); + + var timer = new Timer(5000); + + timer.Elapsed += Timer_Elapsed; + timer.Start(); + + Console.ReadLine(); + + timer.Stop(); + bot.Stop(); + } + + private static async void Timer_Elapsed(object sender, ElapsedEventArgs e) + { + + foreach(var s in bot.Sessions.SessionList) + { + //Only for AsyncUpdateForm + if (s.Value.ActiveForm.GetType() != typeof(forms.AsyncFormUpdate) && s.Value.ActiveForm.GetType() != typeof(forms.AsyncFormEdit)) + continue; + + await bot.InvokeMessageLoop(s.Key); + } + + + } + } +} diff --git a/Examples/AsyncFormUpdates/Properties/AssemblyInfo.cs b/Examples/AsyncFormUpdates/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..216bef4 --- /dev/null +++ b/Examples/AsyncFormUpdates/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("AsyncFormUpdates")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AsyncFormUpdates")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("673a56f5-6110-4aed-a68d-562fd6ed3ea6")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// indem Sie "*" wie unten gezeigt eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Examples/AsyncFormUpdates/forms/AsyncFormEdit.cs b/Examples/AsyncFormUpdates/forms/AsyncFormEdit.cs new file mode 100644 index 0000000..1e176d7 --- /dev/null +++ b/Examples/AsyncFormUpdates/forms/AsyncFormEdit.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TelegramBotBase.Attributes; +using TelegramBotBase.Base; +using TelegramBotBase.Form; + +namespace AsyncFormUpdates.forms +{ + public class AsyncFormEdit : FormBase + { + [SaveState] + int counter = 0; + + int MessageId = 0; + + public override async Task Load(MessageResult message) + { + counter++; + } + + public override async Task Action(MessageResult message) + { + await message.ConfirmAction(""); + + switch (message.RawData ?? "") + { + case "back": + + var st = new Start(); + await NavigateTo(st); + + break; + } + } + + public override async Task Render(MessageResult message) + { + var bf = new ButtonForm(); + bf.AddButtonRow("Back", "back"); + + if (MessageId != 0) + { + await Device.Edit(MessageId, $"Your current count is at: {counter}", bf); + } + else + { + var m = await Device.Send($"Your current count is at: {counter}", bf, disableNotification: true); + MessageId = m.MessageId; + } + + } + + } +} diff --git a/Examples/AsyncFormUpdates/forms/AsyncFormUpdate.cs b/Examples/AsyncFormUpdates/forms/AsyncFormUpdate.cs new file mode 100644 index 0000000..4a4b4c7 --- /dev/null +++ b/Examples/AsyncFormUpdates/forms/AsyncFormUpdate.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TelegramBotBase.Attributes; +using TelegramBotBase.Base; +using TelegramBotBase.Form; + +namespace AsyncFormUpdates.forms +{ + public class AsyncFormUpdate : AutoCleanForm + { + [SaveState] + int counter = 0; + + + public override async Task Load(MessageResult message) + { + counter++; + } + + public override async Task Action(MessageResult message) + { + await message.ConfirmAction(""); + + switch (message.RawData ?? "") + { + case "back": + + var st = new Start(); + await NavigateTo(st); + + break; + } + } + + public override async Task Render(MessageResult message) + { + var bf = new ButtonForm(); + bf.AddButtonRow("Back", "back"); + + await Device.Send($"Your current count is at: {counter}", bf, disableNotification: true); + } + + + } +} diff --git a/Examples/AsyncFormUpdates/forms/Start.cs b/Examples/AsyncFormUpdates/forms/Start.cs new file mode 100644 index 0000000..c69fa4a --- /dev/null +++ b/Examples/AsyncFormUpdates/forms/Start.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TelegramBotBase.Base; +using TelegramBotBase.Form; + +namespace AsyncFormUpdates.forms +{ + public class Start : AutoCleanForm + { + + + public override async Task Action(MessageResult message) + { + await message.ConfirmAction(""); + + switch (message.RawData ?? "") + { + case "async": + + var afe = new AsyncFormEdit(); + await NavigateTo(afe); + + + break; + + case "async_del": + + var afu = new AsyncFormUpdate(); + await NavigateTo(afu); + + + break; + } + + } + + public override async Task Render(MessageResult message) + { + var bf = new ButtonForm(); + + bf.AddButtonRow("Open Async Form with AutoCleanupForm", "async_del"); + + bf.AddButtonRow("Open Async Form with Edit", "async"); + + await Device.Send("Choose your option", bf); + } + + } +} diff --git a/Examples/AsyncFormUpdates/packages.config b/Examples/AsyncFormUpdates/packages.config new file mode 100644 index 0000000..e25dbb0 --- /dev/null +++ b/Examples/AsyncFormUpdates/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file