diff --git a/Examples/AsyncFormUpdates/Program.cs b/Examples/AsyncFormUpdates/Program.cs index b12cb83..27283f7 100644 --- a/Examples/AsyncFormUpdates/Program.cs +++ b/Examples/AsyncFormUpdates/Program.cs @@ -1,26 +1,24 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Timers; +using AsyncFormUpdates.forms; +using TelegramBotBase; using TelegramBotBase.Builder; namespace AsyncFormUpdates { - class Program + internal class Program { - static TelegramBotBase.BotBase bot = null; + private static BotBase __bot; - static void Main(string[] args) + private static void Main(string[] args) { - String apiKey = "APIKey"; + var apiKey = "APIKey"; - bot = BotBaseBuilder.Create() - .QuickStart(apiKey) + __bot = BotBaseBuilder.Create() + .QuickStart(apiKey) .Build(); - bot.Start(); + __bot.Start(); var timer = new Timer(5000); @@ -30,19 +28,19 @@ namespace AsyncFormUpdates Console.ReadLine(); timer.Stop(); - bot.Stop(); + __bot.Stop(); } private static async void Timer_Elapsed(object sender, ElapsedEventArgs e) { - foreach(var s in bot.Sessions.SessionList) + 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)) + if (s.Value.ActiveForm.GetType() != typeof(AsyncFormUpdate) && s.Value.ActiveForm.GetType() != typeof(AsyncFormEdit)) continue; - await bot.InvokeMessageLoop(s.Key); + await __bot.InvokeMessageLoop(s.Key); } diff --git a/Examples/AsyncFormUpdates/Properties/AssemblyInfo.cs b/Examples/AsyncFormUpdates/Properties/AssemblyInfo.cs index 216bef4..7703157 100644 --- a/Examples/AsyncFormUpdates/Properties/AssemblyInfo.cs +++ b/Examples/AsyncFormUpdates/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // Allgemeine Informationen über eine Assembly werden über die folgenden diff --git a/Examples/AsyncFormUpdates/forms/AsyncFormEdit.cs b/Examples/AsyncFormUpdates/forms/AsyncFormEdit.cs index 1e176d7..c24b8c2 100644 --- a/Examples/AsyncFormUpdates/forms/AsyncFormEdit.cs +++ b/Examples/AsyncFormUpdates/forms/AsyncFormEdit.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Attributes; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -11,19 +7,19 @@ namespace AsyncFormUpdates.forms { public class AsyncFormEdit : FormBase { - [SaveState] - int counter = 0; + [SaveState] private int _counter; - int MessageId = 0; + private int _messageId; - public override async Task Load(MessageResult message) + public override Task Load(MessageResult message) { - counter++; + _counter++; + return Task.CompletedTask; } public override async Task Action(MessageResult message) { - await message.ConfirmAction(""); + await message.ConfirmAction(); switch (message.RawData ?? "") { @@ -41,14 +37,14 @@ namespace AsyncFormUpdates.forms var bf = new ButtonForm(); bf.AddButtonRow("Back", "back"); - if (MessageId != 0) + if (_messageId != 0) { - await Device.Edit(MessageId, $"Your current count is at: {counter}", bf); + 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; + 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 index 4a4b4c7..9e888a5 100644 --- a/Examples/AsyncFormUpdates/forms/AsyncFormUpdate.cs +++ b/Examples/AsyncFormUpdates/forms/AsyncFormUpdate.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Attributes; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -11,18 +7,18 @@ namespace AsyncFormUpdates.forms { public class AsyncFormUpdate : AutoCleanForm { - [SaveState] - int counter = 0; + [SaveState] private int _counter; - public override async Task Load(MessageResult message) + public override Task Load(MessageResult message) { - counter++; + _counter++; + return Task.CompletedTask; } public override async Task Action(MessageResult message) { - await message.ConfirmAction(""); + await message.ConfirmAction(); switch (message.RawData ?? "") { @@ -40,7 +36,7 @@ namespace AsyncFormUpdates.forms var bf = new ButtonForm(); bf.AddButtonRow("Back", "back"); - await Device.Send($"Your current count is at: {counter}", bf, disableNotification: true); + 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 index c69fa4a..a8a726d 100644 --- a/Examples/AsyncFormUpdates/forms/Start.cs +++ b/Examples/AsyncFormUpdates/forms/Start.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -14,7 +10,7 @@ namespace AsyncFormUpdates.forms public override async Task Action(MessageResult message) { - await message.ConfirmAction(""); + await message.ConfirmAction(); switch (message.RawData ?? "") { diff --git a/Examples/JoinHiderBot/Program.cs b/Examples/JoinHiderBot/Program.cs index d2d05fe..369b758 100644 --- a/Examples/JoinHiderBot/Program.cs +++ b/Examples/JoinHiderBot/Program.cs @@ -1,17 +1,18 @@ using System; +using JoinHiderBot.forms; using TelegramBotBase.Builder; namespace JoinHiderBot { - class Program + internal class Program { - static void Main(string[] args) + private static void Main(string[] args) { - String apiKey = ""; + var apiKey = ""; var bot = BotBaseBuilder.Create() - .QuickStart(apiKey) + .QuickStart(apiKey) .Build(); bot.Start(); diff --git a/Examples/JoinHiderBot/forms/GroupManageForm.cs b/Examples/JoinHiderBot/forms/GroupManageForm.cs index 3e6cc2a..61fdadc 100644 --- a/Examples/JoinHiderBot/forms/GroupManageForm.cs +++ b/Examples/JoinHiderBot/forms/GroupManageForm.cs @@ -1,7 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; +using Telegram.Bot.Types.Enums; using TelegramBotBase.Args; using TelegramBotBase.Form; @@ -12,13 +10,13 @@ namespace JoinHiderBot.forms public override async Task OnMemberChanges(MemberChangeEventArgs e) { - if (e.Type != Telegram.Bot.Types.Enums.MessageType.ChatMembersAdded && e.Type != Telegram.Bot.Types.Enums.MessageType.ChatMemberLeft) + if (e.Type != MessageType.ChatMembersAdded && e.Type != MessageType.ChatMemberLeft) return; var m = e.Result.Message; - await this.Device.DeleteMessage(m); + await Device.DeleteMessage(m); } } diff --git a/Examples/JoinHiderBot/forms/Start.cs b/Examples/JoinHiderBot/forms/Start.cs index aef4c7d..f506451 100644 --- a/Examples/JoinHiderBot/forms/Start.cs +++ b/Examples/JoinHiderBot/forms/Start.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -11,7 +8,7 @@ namespace JoinHiderBot.forms { public override async Task Open(MessageResult e) { - await this.Device.Send("This bot works only in groups."); + await Device.Send("This bot works only in groups."); return true; } @@ -20,7 +17,7 @@ namespace JoinHiderBot.forms { var gmf = new GroupManageForm(); - await this.NavigateTo(gmf); + await NavigateTo(gmf); return true; } diff --git a/Examples/SystemCommandsBot/Program.cs b/Examples/SystemCommandsBot/Program.cs index 17ff8b7..d0131f9 100644 --- a/Examples/SystemCommandsBot/Program.cs +++ b/Examples/SystemCommandsBot/Program.cs @@ -1,17 +1,19 @@ using System; +using SystemCommandsBot.config; +using SystemCommandsBot.forms; using TelegramBotBase.Builder; namespace SystemCommandsBot { - class Program + internal class Program { - public static config.Config BotConfig { get; set; } + public static Config BotConfig { get; set; } - static void Main(string[] args) + private static void Main(string[] args) { - BotConfig = config.Config.load(); + BotConfig = Config.Load(); if (BotConfig.ApiKey == null || BotConfig.ApiKey.Trim() == "") { @@ -21,7 +23,7 @@ namespace SystemCommandsBot } var bot = BotBaseBuilder.Create() - .QuickStart(BotConfig.ApiKey) + .QuickStart(BotConfig.ApiKey) .Build(); bot.Start(); diff --git a/Examples/SystemCommandsBot/commands/Commando.cs b/Examples/SystemCommandsBot/commands/Commando.cs index 97d6554..d93eb81 100644 --- a/Examples/SystemCommandsBot/commands/Commando.cs +++ b/Examples/SystemCommandsBot/commands/Commando.cs @@ -1,28 +1,23 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Text; - -namespace SystemCommandsBot.commands +namespace SystemCommandsBot.commands { public class Commando { - public int ID { get; set; } + public int Id { get; set; } - public String Title { get; set; } + public string Title { get; set; } - public String ShellCmd { get; set; } + public string ShellCmd { get; set; } public bool Enabled { get; set; } = true; - public String Action { get; set; } + public string Action { get; set; } public bool UseShell { get; set; } = true; public int? MaxInstances { get; set; } - public String ProcName + public string ProcName { get;set; } diff --git a/Examples/SystemCommandsBot/config/Config.cs b/Examples/SystemCommandsBot/config/Config.cs index 8300806..f63b8fc 100644 --- a/Examples/SystemCommandsBot/config/Config.cs +++ b/Examples/SystemCommandsBot/config/Config.cs @@ -1,36 +1,37 @@ using System; using System.Collections.Generic; using System.IO; -using System.Text; +using Newtonsoft.Json; +using SystemCommandsBot.commands; namespace SystemCommandsBot.config { public class Config { - public String Password { get; set; } + public string Password { get; set; } - public String ApiKey { get; set; } + public string ApiKey { get; set; } - public List Commandos { get; set; } + public List Commandos { get; set; } public Config() { - this.Commandos = new List(); + Commandos = new List(); } - public void loadDefaultValues() + public void LoadDefaultValues() { - this.ApiKey = ""; - this.Commandos.Add(new commands.Commando() { ID = 0, Enabled = true, Title = "Test Befehl", ShellCmd = "explorer.exe", Action = "start", MaxInstances = 2 }); + ApiKey = ""; + Commandos.Add(new Commando { Id = 0, Enabled = true, Title = "Test Befehl", ShellCmd = "explorer.exe", Action = "start", MaxInstances = 2 }); } - public static Config load() + public static Config Load() { try { - return load(AppContext.BaseDirectory + "config\\default.cfg"); + return Load(AppContext.BaseDirectory + "config\\default.cfg"); } @@ -42,16 +43,16 @@ namespace SystemCommandsBot.config } - public static Config load(String path) + public static Config Load(string path) { try { - var cfg = Newtonsoft.Json.JsonConvert.DeserializeObject(File.ReadAllText(path)) as Config; + var cfg = JsonConvert.DeserializeObject(File.ReadAllText(path)); return cfg; } - catch (DirectoryNotFoundException ex) + catch (DirectoryNotFoundException) { - DirectoryInfo di = new DirectoryInfo(path); + var di = new DirectoryInfo(path); if (!Directory.Exists(di.Parent.FullName)) { @@ -59,15 +60,15 @@ namespace SystemCommandsBot.config } var cfg = new Config(); - cfg.loadDefaultValues(); - cfg.save(path); + cfg.LoadDefaultValues(); + cfg.Save(path); return cfg; } - catch (FileNotFoundException ex) + catch (FileNotFoundException) { var cfg = new Config(); - cfg.loadDefaultValues(); - cfg.save(path); + cfg.LoadDefaultValues(); + cfg.Save(path); return cfg; } catch(Exception ex) @@ -77,11 +78,11 @@ namespace SystemCommandsBot.config return null; } - public void save(String path) + public void Save(string path) { try { - File.WriteAllText(path, Newtonsoft.Json.JsonConvert.SerializeObject(this)); + File.WriteAllText(path, JsonConvert.SerializeObject(this)); } catch { diff --git a/Examples/SystemCommandsBot/forms/CmdForm.cs b/Examples/SystemCommandsBot/forms/CmdForm.cs index 85a90ce..d42e713 100644 --- a/Examples/SystemCommandsBot/forms/CmdForm.cs +++ b/Examples/SystemCommandsBot/forms/CmdForm.cs @@ -1,31 +1,29 @@ using System; -using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; namespace SystemCommandsBot.forms { - public class CmdForm : TelegramBotBase.Form.AutoCleanForm + public class CmdForm : AutoCleanForm { public DateTime ExpiresAt { get; set; } public int? MessageId { get; set; } - public override async Task Load(MessageResult message) + public override Task Load(MessageResult message) { - + return Task.CompletedTask; } public override async Task Action(MessageResult message) { var btn = message.RawData; - int id = -1; + var id = -1; if (!int.TryParse(btn, out id)) { @@ -33,10 +31,10 @@ namespace SystemCommandsBot.forms return; } - var cmd = Program.BotConfig.Commandos.Where(a => a.Enabled && a.ID == id).FirstOrDefault(); + var cmd = Program.BotConfig.Commandos.Where(a => a.Enabled && a.Id == id).FirstOrDefault(); if (cmd == null) { - await this.Device.Send("Cmd nicht verfügbar."); + await Device.Send("Cmd nicht verfügbar."); return; } @@ -46,14 +44,14 @@ namespace SystemCommandsBot.forms { case "start": - FileInfo fi = new FileInfo(cmd.ShellCmd); + var fi = new FileInfo(cmd.ShellCmd); if (cmd.MaxInstances != null && cmd.MaxInstances >= 0) { if (Process.GetProcessesByName(cmd.ProcName).Count() >= cmd.MaxInstances) { - await this.Device.Send("Anwendung läuft bereits."); + await Device.Send("Anwendung läuft bereits."); await message.ConfirmAction("Anwendung läuft bereits."); return; @@ -61,14 +59,16 @@ namespace SystemCommandsBot.forms } - ProcessStartInfo psi = new ProcessStartInfo(); - psi.FileName = cmd.ShellCmd; - psi.WorkingDirectory = fi.DirectoryName; - psi.UseShellExecute = cmd.UseShell; + var psi = new ProcessStartInfo + { + FileName = cmd.ShellCmd, + WorkingDirectory = fi.DirectoryName, + UseShellExecute = cmd.UseShell + }; Process.Start(psi); - await this.Device.Send(fi.Name + " wurde gestarted."); + await Device.Send(fi.Name + " wurde gestarted."); await message.ConfirmAction(fi.Name + " wurde gestarted."); @@ -76,9 +76,9 @@ namespace SystemCommandsBot.forms case "kill": - FileInfo fi2 = new FileInfo(cmd.ShellCmd); + var fi2 = new FileInfo(cmd.ShellCmd); - String pros = fi2.Name.Replace(fi2.Extension, ""); + var pros = fi2.Name.Replace(fi2.Extension, ""); var proc = Process.GetProcessesByName(pros).ToList(); @@ -94,7 +94,7 @@ namespace SystemCommandsBot.forms } } - await this.Device.Send(fi2.Name + " wurde beendet."); + await Device.Send(fi2.Name + " wurde beendet."); await message.ConfirmAction(fi2.Name + " wurde beendet."); @@ -102,9 +102,9 @@ namespace SystemCommandsBot.forms case "restart": - FileInfo fi3 = new FileInfo(cmd.ShellCmd); + var fi3 = new FileInfo(cmd.ShellCmd); - String pros2 = fi3.Name.Replace(fi3.Extension, ""); + var pros2 = fi3.Name.Replace(fi3.Extension, ""); var proc2 = Process.GetProcessesByName(pros2).ToList(); @@ -120,17 +120,19 @@ namespace SystemCommandsBot.forms } } - FileInfo fi4 = new FileInfo(cmd.ShellCmd); + var fi4 = new FileInfo(cmd.ShellCmd); - ProcessStartInfo psi2 = new ProcessStartInfo(); - psi2.FileName = cmd.ShellCmd; - psi2.WorkingDirectory = fi4.DirectoryName; + var psi2 = new ProcessStartInfo + { + FileName = cmd.ShellCmd, + WorkingDirectory = fi4.DirectoryName + }; psi2.FileName = cmd.ShellCmd; psi2.UseShellExecute = cmd.UseShell; Process.Start(psi2); - await this.Device.Send(fi3.Name + " wurde neugestarted."); + await Device.Send(fi3.Name + " wurde neugestarted."); await message.ConfirmAction(fi3.Name + " wurde neugestarted."); @@ -151,15 +153,13 @@ namespace SystemCommandsBot.forms public override async Task Render(MessageResult message) { - if (this.MessageId == null) + if (MessageId == null) { - var buttons = Program.BotConfig.Commandos.Where(a => a.Enabled).Select(a => new ButtonBase(a.Title, a.ID.ToString())); + var buttons = Program.BotConfig.Commandos.Where(a => a.Enabled).Select(a => new ButtonBase(a.Title, a.Id.ToString())); - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddSplitted(buttons, 1); - await this.Device.Send("Deine Optionen", bf); - - return; + await Device.Send("Deine Optionen", bf); } diff --git a/Examples/SystemCommandsBot/forms/StartForm.cs b/Examples/SystemCommandsBot/forms/StartForm.cs index c5e6597..ede4203 100644 --- a/Examples/SystemCommandsBot/forms/StartForm.cs +++ b/Examples/SystemCommandsBot/forms/StartForm.cs @@ -1,40 +1,39 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Base; +using TelegramBotBase.Form; namespace SystemCommandsBot.forms { - public class StartForm : TelegramBotBase.Form.FormBase + public class StartForm : FormBase { - public String Password { get; set; } + public string Password { get; set; } - public override async Task Load(MessageResult message) + public override Task Load(MessageResult message) { var inp = message.MessageText; if (Program.BotConfig.Password == inp) { - this.Password = inp; + Password = inp; } - + return Task.CompletedTask; } public override async Task Render(MessageResult message) { - if (this.Password == null || this.Password.Trim() == "") + if (Password == null || Password.Trim() == "") { - await this.Device.Send("Bitte gib dein Passwort an."); + await Device.Send("Bitte gib dein Passwort an."); return; } - var cmd = new forms.CmdForm(); + var cmd = new CmdForm(); cmd.ExpiresAt = DateTime.Now.AddDays(14); - await this.NavigateTo(cmd); + await NavigateTo(cmd); } diff --git a/TelegramBotBase.Extensions.Images/ImageExtensions.cs b/TelegramBotBase.Extensions.Images/ImageExtensions.cs index 55ddbb2..314679c 100644 --- a/TelegramBotBase.Extensions.Images/ImageExtensions.cs +++ b/TelegramBotBase.Extensions.Images/ImageExtensions.cs @@ -1,12 +1,11 @@ -using System; -using System.Drawing; +using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Threading.Tasks; -using Telegram.Bot.Types.InputFiles; using Telegram.Bot.Types; -using TelegramBotBase.Sessions; +using Telegram.Bot.Types.InputFiles; using TelegramBotBase.Form; +using TelegramBotBase.Sessions; namespace TelegramBotBase.Extensions.Images { @@ -14,7 +13,7 @@ namespace TelegramBotBase.Extensions.Images { public static Stream ToStream(this Image image, ImageFormat format) { - var stream = new System.IO.MemoryStream(); + var stream = new MemoryStream(); image.Save(stream, format); stream.Position = 0; return stream; @@ -29,11 +28,11 @@ namespace TelegramBotBase.Extensions.Images /// /// /// - public static async Task SendPhoto(this DeviceSession session, Image image, String name, String caption, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false) + public static async Task SendPhoto(this DeviceSession session, Image image, string name, string caption, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false) { using (var fileStream = ToStream(image, ImageFormat.Png)) { - InputOnlineFile fts = new InputOnlineFile(fileStream, name); + var fts = new InputOnlineFile(fileStream, name); return await session.SendPhoto(fts, caption: caption, buttons, replyTo, disableNotification); } @@ -48,11 +47,11 @@ namespace TelegramBotBase.Extensions.Images /// /// /// - public static async Task SendPhoto(this DeviceSession session, Bitmap image, String name, String caption, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false) + public static async Task SendPhoto(this DeviceSession session, Bitmap image, string name, string caption, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false) { using (var fileStream = ToStream(image, ImageFormat.Png)) { - InputOnlineFile fts = new InputOnlineFile(fileStream, name); + var fts = new InputOnlineFile(fileStream, name); return await session.SendPhoto(fts, caption: caption, buttons, replyTo, disableNotification); } diff --git a/TelegramBotBase.Extensions.Serializer.Database.MSSQL/BotBaseBuilderExtensions.cs b/TelegramBotBase.Extensions.Serializer.Database.MSSQL/BotBaseBuilderExtensions.cs index fbf22db..06e1611 100644 --- a/TelegramBotBase.Extensions.Serializer.Database.MSSQL/BotBaseBuilderExtensions.cs +++ b/TelegramBotBase.Extensions.Serializer.Database.MSSQL/BotBaseBuilderExtensions.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using TelegramBotBase.Builder; using TelegramBotBase.Builder.Interfaces; @@ -15,13 +11,13 @@ namespace TelegramBotBase.Extensions.Serializer.Database.MSSQL /// Uses an Microsoft SQL Server Database to save and restore sessions. /// /// - /// + /// /// /// /// - public static ILanguageSelectionStage UseSQLDatabase(this ISessionSerializationStage builder, String ConnectionString, Type fallbackForm = null, String tablePrefix = "tgb_") + public static ILanguageSelectionStage UseSqlDatabase(this ISessionSerializationStage builder, string connectionString, Type fallbackForm = null, string tablePrefix = "tgb_") { - var serializer = new MSSQLSerializer(ConnectionString, tablePrefix, fallbackForm); + var serializer = new MssqlSerializer(connectionString, tablePrefix, fallbackForm); builder.UseSerialization(serializer); @@ -33,18 +29,18 @@ namespace TelegramBotBase.Extensions.Serializer.Database.MSSQL /// Uses an Microsoft SQL Server Database to save and restore sessions. /// /// - /// - /// - /// - /// + /// + /// + /// + /// /// /// /// - public static ILanguageSelectionStage UseSQLDatabase(this ISessionSerializationStage builder, String HostOrIP, String DatabaseName, String UserId, String Password, Type fallbackForm = null, String tablePrefix = "tgb_") + public static ILanguageSelectionStage UseSqlDatabase(this ISessionSerializationStage builder, string hostOrIP, string databaseName, string userId, string password, Type fallbackForm = null, string tablePrefix = "tgb_") { - var connectionString = $"Server={HostOrIP}; Database={DatabaseName}; User Id={UserId}; Password={Password}; TrustServerCertificate=true;"; + var connectionString = $"Server={hostOrIP}; Database={databaseName}; User Id={userId}; Password={password}; TrustServerCertificate=true;"; - var serializer = new MSSQLSerializer(connectionString, tablePrefix, fallbackForm); + var serializer = new MssqlSerializer(connectionString, tablePrefix, fallbackForm); builder.UseSerialization(serializer); @@ -55,19 +51,19 @@ namespace TelegramBotBase.Extensions.Serializer.Database.MSSQL /// Uses an Microsoft SQL Server Database with Windows Authentication to save and restore sessions. /// /// - /// - /// + /// + /// /// /// /// - public static ILanguageSelectionStage UseSQLDatabase(this ISessionSerializationStage builder, String HostOrIP, String DatabaseName, bool IntegratedSecurity = true, Type fallbackForm = null, String tablePrefix = "tgb_") + public static ILanguageSelectionStage UseSqlDatabase(this ISessionSerializationStage builder, string hostOrIP, string databaseName, bool integratedSecurity = true, Type fallbackForm = null, string tablePrefix = "tgb_") { - if (!IntegratedSecurity) + if (!integratedSecurity) throw new ArgumentOutOfRangeException(); - var connectionString = $"Server={HostOrIP}; Database={DatabaseName}; Integrated Security=true; TrustServerCertificate=true;"; + var connectionString = $"Server={hostOrIP}; Database={databaseName}; Integrated Security=true; TrustServerCertificate=true;"; - var serializer = new MSSQLSerializer(connectionString, tablePrefix, fallbackForm); + var serializer = new MssqlSerializer(connectionString, tablePrefix, fallbackForm); builder.UseSerialization(serializer); diff --git a/TelegramBotBase.Extensions.Serializer.Database.MSSQL/MSSQLSerializer.cs b/TelegramBotBase.Extensions.Serializer.Database.MSSQL/MSSQLSerializer.cs index 5aca6e4..fe271e0 100644 --- a/TelegramBotBase.Extensions.Serializer.Database.MSSQL/MSSQLSerializer.cs +++ b/TelegramBotBase.Extensions.Serializer.Database.MSSQL/MSSQLSerializer.cs @@ -1,19 +1,19 @@ -using TelegramBotBase.Interfaces; -using TelegramBotBase.Builder.Interfaces; -using System; -using TelegramBotBase.Base; -using TelegramBotBase.Args; -using TelegramBotBase.Form; -using Microsoft.Data.SqlClient; +using System; using System.Data; +using Microsoft.Data.SqlClient; +using Newtonsoft.Json; +using TelegramBotBase.Args; +using TelegramBotBase.Base; +using TelegramBotBase.Form; +using TelegramBotBase.Interfaces; namespace TelegramBotBase.Extensions.Serializer.Database.MSSQL { - public class MSSQLSerializer : IStateMachine + public class MssqlSerializer : IStateMachine { public Type FallbackStateForm { get; set; } public string ConnectionString { get; } - public String TablePrefix { get; set; } + public string TablePrefix { get; set; } /// /// Will initialize the state machine. @@ -21,20 +21,15 @@ namespace TelegramBotBase.Extensions.Serializer.Database.MSSQL /// Path of the file and name where to save the session details. /// Type of Form which will be saved instead of Form which has attribute declared. Needs to be subclass of . /// Declares of the file could be overwritten. - public MSSQLSerializer(String ConnectionString, String tablePrefix = "tgb_", Type fallbackStateForm = null) + public MssqlSerializer(string connectionString, string tablePrefix = "tgb_", Type fallbackStateForm = null) { - if (ConnectionString is null) - { - throw new ArgumentNullException(nameof(ConnectionString)); - } + this.ConnectionString = connectionString ?? throw new ArgumentNullException(nameof(connectionString)); - this.ConnectionString = ConnectionString; + TablePrefix = tablePrefix; - this.TablePrefix = tablePrefix; + FallbackStateForm = fallbackStateForm; - this.FallbackStateForm = fallbackStateForm; - - if (this.FallbackStateForm != null && !this.FallbackStateForm.IsSubclassOf(typeof(FormBase))) + if (FallbackStateForm != null && !FallbackStateForm.IsSubclassOf(typeof(FormBase))) { throw new ArgumentException("FallbackStateForm is not a subclass of FormBase"); } @@ -58,7 +53,7 @@ namespace TelegramBotBase.Extensions.Serializer.Database.MSSQL foreach (DataRow r in dataTable.Rows) { - var se = new StateEntry() + var se = new StateEntry { DeviceId = (long)r["deviceId"], ChatTitle = r["deviceTitle"].ToString(), @@ -77,21 +72,21 @@ namespace TelegramBotBase.Extensions.Serializer.Database.MSSQL sc.GroupIds.Add(se.DeviceId); } - var data_command = connection.CreateCommand(); - data_command.CommandText = "SELECT [key], value, type FROM " + TablePrefix + "devices_sessions_data WHERE deviceId = @deviceId"; - data_command.Parameters.Add(new SqlParameter("@deviceId", r["deviceId"])); + var command2 = connection.CreateCommand(); + command2.CommandText = "SELECT [key], value, type FROM " + TablePrefix + "devices_sessions_data WHERE deviceId = @deviceId"; + command2.Parameters.Add(new SqlParameter("@deviceId", r["deviceId"])); - var data_table = new DataTable(); - using (var dataAdapter2 = new SqlDataAdapter(data_command)) + var dataTable2 = new DataTable(); + using (var dataAdapter2 = new SqlDataAdapter(command2)) { - dataAdapter2.Fill(data_table); + dataAdapter2.Fill(dataTable2); - foreach (DataRow r2 in data_table.Rows) + foreach (DataRow r2 in dataTable2.Rows) { var key = r2["key"].ToString(); var type = Type.GetType(r2["type"].ToString()); - var value = Newtonsoft.Json.JsonConvert.DeserializeObject(r2["value"].ToString(), type); + var value = JsonConvert.DeserializeObject(r2["value"].ToString(), type); se.Values.Add(key, value); } @@ -118,61 +113,61 @@ namespace TelegramBotBase.Extensions.Serializer.Database.MSSQL connection.Open(); //Cleanup old Session data - var clear_command = connection.CreateCommand(); + var clearCommand = connection.CreateCommand(); - clear_command.CommandText = $"DELETE FROM {TablePrefix}devices_sessions_data"; + clearCommand.CommandText = $"DELETE FROM {TablePrefix}devices_sessions_data"; - clear_command.ExecuteNonQuery(); + clearCommand.ExecuteNonQuery(); - clear_command.CommandText = $"DELETE FROM {TablePrefix}devices_sessions"; + clearCommand.CommandText = $"DELETE FROM {TablePrefix}devices_sessions"; - clear_command.ExecuteNonQuery(); + clearCommand.ExecuteNonQuery(); //Prepare new session commands - var session_command = connection.CreateCommand(); - var data_command = connection.CreateCommand(); + var sessionCommand = connection.CreateCommand(); + var dataCommand = connection.CreateCommand(); - session_command.CommandText = "INSERT INTO " + TablePrefix + "devices_sessions (deviceId, deviceTitle, FormUri, QualifiedName) VALUES (@deviceId, @deviceTitle, @FormUri, @QualifiedName)"; - session_command.Parameters.Add(new SqlParameter("@deviceId", "")); - session_command.Parameters.Add(new SqlParameter("@deviceTitle", "")); - session_command.Parameters.Add(new SqlParameter("@FormUri", "")); - session_command.Parameters.Add(new SqlParameter("@QualifiedName", "")); + sessionCommand.CommandText = "INSERT INTO " + TablePrefix + "devices_sessions (deviceId, deviceTitle, FormUri, QualifiedName) VALUES (@deviceId, @deviceTitle, @FormUri, @QualifiedName)"; + sessionCommand.Parameters.Add(new SqlParameter("@deviceId", "")); + sessionCommand.Parameters.Add(new SqlParameter("@deviceTitle", "")); + sessionCommand.Parameters.Add(new SqlParameter("@FormUri", "")); + sessionCommand.Parameters.Add(new SqlParameter("@QualifiedName", "")); - data_command.CommandText = "INSERT INTO " + TablePrefix + "devices_sessions_data (deviceId, [key], value, type) VALUES (@deviceId, @key, @value, @type)"; - data_command.Parameters.Add(new SqlParameter("@deviceId", "")); - data_command.Parameters.Add(new SqlParameter("@key", "")); - data_command.Parameters.Add(new SqlParameter("@value", "")); - data_command.Parameters.Add(new SqlParameter("@type", "")); + dataCommand.CommandText = "INSERT INTO " + TablePrefix + "devices_sessions_data (deviceId, [key], value, type) VALUES (@deviceId, @key, @value, @type)"; + dataCommand.Parameters.Add(new SqlParameter("@deviceId", "")); + dataCommand.Parameters.Add(new SqlParameter("@key", "")); + dataCommand.Parameters.Add(new SqlParameter("@value", "")); + dataCommand.Parameters.Add(new SqlParameter("@type", "")); //Store session data in database foreach (var state in container.States) { - session_command.Parameters["@deviceId"].Value = state.DeviceId; - session_command.Parameters["@deviceTitle"].Value = state.ChatTitle ?? ""; - session_command.Parameters["@FormUri"].Value = state.FormUri; - session_command.Parameters["@QualifiedName"].Value = state.QualifiedName; + sessionCommand.Parameters["@deviceId"].Value = state.DeviceId; + sessionCommand.Parameters["@deviceTitle"].Value = state.ChatTitle ?? ""; + sessionCommand.Parameters["@FormUri"].Value = state.FormUri; + sessionCommand.Parameters["@QualifiedName"].Value = state.QualifiedName; - session_command.ExecuteNonQuery(); + sessionCommand.ExecuteNonQuery(); foreach (var data in state.Values) { - data_command.Parameters["@deviceId"].Value = state.DeviceId; - data_command.Parameters["@key"].Value = data.Key; + dataCommand.Parameters["@deviceId"].Value = state.DeviceId; + dataCommand.Parameters["@key"].Value = data.Key; var type = data.Value.GetType(); - + if (type.IsPrimitive || type.Equals(typeof(string))) { - data_command.Parameters["@value"].Value = data.Value; + dataCommand.Parameters["@value"].Value = data.Value; } else { - data_command.Parameters["@value"].Value = Newtonsoft.Json.JsonConvert.SerializeObject(data.Value); + dataCommand.Parameters["@value"].Value = JsonConvert.SerializeObject(data.Value); } - - data_command.Parameters["@type"].Value = type.AssemblyQualifiedName; - data_command.ExecuteNonQuery(); + dataCommand.Parameters["@type"].Value = type.AssemblyQualifiedName; + + dataCommand.ExecuteNonQuery(); } } @@ -183,4 +178,4 @@ namespace TelegramBotBase.Extensions.Serializer.Database.MSSQL } } -} \ No newline at end of file +} diff --git a/TelegramBotBase.Test/Program.cs b/TelegramBotBase.Test/Program.cs index 8b76b97..a1d4b31 100644 --- a/TelegramBotBase.Test/Program.cs +++ b/TelegramBotBase.Test/Program.cs @@ -1,27 +1,24 @@ using System; -using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; -using Telegram.Bot.Types; -using TelegramBotBase; -using TelegramBotBase.Form; -using TelegramBotBaseTest.Tests; -using TelegramBotBase.Commands; +using TelegramBotBase.Args; using TelegramBotBase.Builder; +using TelegramBotBase.Commands; +using TelegramBotBase.Enums; +using TelegramBotBaseTest.Tests; namespace TelegramBotBaseTest { - class Program + internal class Program { - static void Main(string[] args) + private static void Main(string[] args) { - String APIKey = ""; + var apiKey = ""; var bb = BotBaseBuilder .Create() - .WithAPIKey(APIKey) + .WithAPIKey(apiKey) .DefaultMessageLoop() .WithStartForm() .NoProxy() @@ -45,7 +42,7 @@ namespace TelegramBotBaseTest //Update Bot commands to botfather bb.UploadBotCommands().Wait(); - bb.SetSetting(TelegramBotBase.Enums.eSettings.LogAllMessages, true); + bb.SetSetting(ESettings.LogAllMessages, true); bb.Message += (s, en) => { @@ -65,7 +62,7 @@ namespace TelegramBotBaseTest } - private static async Task Bb_BotCommand(object sender, TelegramBotBase.Args.BotCommandEventArgs en) + private static async Task Bb_BotCommand(object sender, BotCommandEventArgs en) { switch (en.Command) { @@ -105,7 +102,7 @@ namespace TelegramBotBaseTest case "/params": - String m = en.Parameters.DefaultIfEmpty("").Aggregate((a, b) => a + " and " + b); + var m = en.Parameters.DefaultIfEmpty("").Aggregate((a, b) => a + " and " + b); await en.Device.Send("Your parameters are: " + m, replyTo: en.Device.LastMessageId); diff --git a/TelegramBotBase.Test/Properties/AssemblyInfo.cs b/TelegramBotBase.Test/Properties/AssemblyInfo.cs index e9d23b8..53a2683 100644 --- a/TelegramBotBase.Test/Properties/AssemblyInfo.cs +++ b/TelegramBotBase.Test/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // Allgemeine Informationen über eine Assembly werden über die folgenden diff --git a/TelegramBotBase.Test/Tests/ButtonTestForm.cs b/TelegramBotBase.Test/Tests/ButtonTestForm.cs index ca41320..8f89af6 100644 --- a/TelegramBotBase.Test/Tests/ButtonTestForm.cs +++ b/TelegramBotBase.Test/Tests/ButtonTestForm.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -13,12 +10,12 @@ namespace TelegramBotBaseTest.Tests public ButtonTestForm() { - this.Opened += ButtonTestForm_Opened; + Opened += ButtonTestForm_Opened; } private async Task ButtonTestForm_Opened(object sender, EventArgs e) { - await this.Device.Send("Hello world! (Click 'back' to get back to Start)"); + await Device.Send("Hello world! (Click 'back' to get back to Start)"); } public override async Task Action(MessageResult message) @@ -38,25 +35,25 @@ namespace TelegramBotBaseTest.Tests { case "button1": - await this.Device.Send("Button 1 pressed"); + await Device.Send("Button 1 pressed"); break; case "button2": - await this.Device.Send("Button 2 pressed"); + await Device.Send("Button 2 pressed"); break; case "button3": - await this.Device.Send("Button 3 pressed"); + await Device.Send("Button 3 pressed"); break; case "button4": - await this.Device.Send("Button 4 pressed"); + await Device.Send("Button 4 pressed"); break; @@ -64,7 +61,7 @@ namespace TelegramBotBaseTest.Tests var st = new Menu(); - await this.NavigateTo(st); + await NavigateTo(st); break; @@ -82,7 +79,7 @@ namespace TelegramBotBaseTest.Tests public override async Task Render(MessageResult message) { - ButtonForm btn = new ButtonForm(); + var btn = new ButtonForm(); btn.AddButtonRow(new ButtonBase("Button 1", new CallbackData("a", "button1").Serialize()), new ButtonBase("Button 2", new CallbackData("a", "button2").Serialize())); @@ -92,7 +89,7 @@ namespace TelegramBotBaseTest.Tests btn.AddButtonRow(new ButtonBase("Back", new CallbackData("a", "back").Serialize())); - await this.Device.Send("Click a button", btn); + await Device.Send("Click a button", btn); } diff --git a/TelegramBotBase.Test/Tests/Controls/ButtonGridForm.cs b/TelegramBotBase.Test/Tests/Controls/ButtonGridForm.cs index 01da851..3a7bdd9 100644 --- a/TelegramBotBase.Test/Tests/Controls/ButtonGridForm.cs +++ b/TelegramBotBase.Test/Tests/Controls/ButtonGridForm.cs @@ -1,34 +1,30 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Args; -using TelegramBotBase.Controls; using TelegramBotBase.Controls.Hybrid; +using TelegramBotBase.Enums; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Controls { public class ButtonGridForm : AutoCleanForm { - - ButtonGrid m_Buttons = null; + private ButtonGrid _mButtons; public ButtonGridForm() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; + DeleteMode = EDeleteMode.OnLeavingForm; - this.Init += ButtonGridForm_Init; + Init += ButtonGridForm_Init; } - private async Task ButtonGridForm_Init(object sender, InitEventArgs e) + private Task ButtonGridForm_Init(object sender, InitEventArgs e) { - m_Buttons = new ButtonGrid(); + _mButtons = new ButtonGrid + { + KeyboardType = EKeyboardType.InlineKeyBoard + }; - m_Buttons.KeyboardType = TelegramBotBase.Enums.eKeyboardType.InlineKeyBoard; - - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Back", "back"), new ButtonBase("Switch Keyboard", "switch")); @@ -36,13 +32,12 @@ namespace TelegramBotBaseTest.Tests.Controls bf.AddButtonRow(new ButtonBase("Button3", "b3"), new ButtonBase("Button4", "b4")); - m_Buttons.ButtonsForm = bf; - - m_Buttons.ButtonClicked += Bg_ButtonClicked; - - this.AddControl(m_Buttons); + _mButtons.ButtonsForm = bf; + _mButtons.ButtonClicked += Bg_ButtonClicked; + AddControl(_mButtons); + return Task.CompletedTask; } private async Task Bg_ButtonClicked(object sender, ButtonClickedEventArgs e) @@ -53,26 +48,21 @@ namespace TelegramBotBaseTest.Tests.Controls if (e.Button.Value == "back") { var start = new Menu(); - await this.NavigateTo(start); + await NavigateTo(start); } else if (e.Button.Value == "switch") { - switch (m_Buttons.KeyboardType) + _mButtons.KeyboardType = _mButtons.KeyboardType switch { - case TelegramBotBase.Enums.eKeyboardType.ReplyKeyboard: - m_Buttons.KeyboardType = TelegramBotBase.Enums.eKeyboardType.InlineKeyBoard; - break; - case TelegramBotBase.Enums.eKeyboardType.InlineKeyBoard: - m_Buttons.KeyboardType = TelegramBotBase.Enums.eKeyboardType.ReplyKeyboard; - break; - } - - + EKeyboardType.ReplyKeyboard => EKeyboardType.InlineKeyBoard, + EKeyboardType.InlineKeyBoard => EKeyboardType.ReplyKeyboard, + _ => _mButtons.KeyboardType + }; } else { - await this.Device.Send($"Button clicked with Text: {e.Button.Text} and Value {e.Button.Value}"); + await Device.Send($"Button clicked with Text: {e.Button.Text} and Value {e.Button.Value}"); } diff --git a/TelegramBotBase.Test/Tests/Controls/ButtonGridPagingForm.cs b/TelegramBotBase.Test/Tests/Controls/ButtonGridPagingForm.cs index 49239cd..cc62321 100644 --- a/TelegramBotBase.Test/Tests/Controls/ButtonGridPagingForm.cs +++ b/TelegramBotBase.Test/Tests/Controls/ButtonGridPagingForm.cs @@ -1,55 +1,49 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Globalization; -using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Args; -using TelegramBotBase.Controls; using TelegramBotBase.Controls.Hybrid; +using TelegramBotBase.Enums; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Controls { public class ButtonGridPagingForm : AutoCleanForm { - - ButtonGrid m_Buttons = null; + private ButtonGrid _mButtons; public ButtonGridPagingForm() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; + DeleteMode = EDeleteMode.OnLeavingForm; - this.Init += ButtonGridForm_Init; + Init += ButtonGridForm_Init; } - private async Task ButtonGridForm_Init(object sender, InitEventArgs e) + private Task ButtonGridForm_Init(object sender, InitEventArgs e) { - m_Buttons = new ButtonGrid(); - - m_Buttons.KeyboardType = TelegramBotBase.Enums.eKeyboardType.ReplyKeyboard; - - m_Buttons.EnablePaging = true; - m_Buttons.EnableSearch = true; - - m_Buttons.HeadLayoutButtonRow = new List() { new ButtonBase("Back", "back") }; + _mButtons = new ButtonGrid + { + KeyboardType = EKeyboardType.ReplyKeyboard, + EnablePaging = true, + EnableSearch = true, + HeadLayoutButtonRow = new List { new ButtonBase("Back", "back") } + }; var countries = CultureInfo.GetCultures(CultureTypes.SpecificCultures); - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); foreach (var c in countries) { bf.AddButtonRow(new ButtonBase(c.EnglishName, c.EnglishName)); } - m_Buttons.ButtonsForm = bf; - - m_Buttons.ButtonClicked += Bg_ButtonClicked; - - this.AddControl(m_Buttons); + _mButtons.ButtonsForm = bf; + _mButtons.ButtonClicked += Bg_ButtonClicked; + AddControl(_mButtons); + return Task.CompletedTask; } private async Task Bg_ButtonClicked(object sender, ButtonClickedEventArgs e) @@ -60,12 +54,12 @@ namespace TelegramBotBaseTest.Tests.Controls if (e.Button.Value == "back") { var start = new Menu(); - await this.NavigateTo(start); + await NavigateTo(start); } else { - await this.Device.Send($"Button clicked with Text: {e.Button.Text} and Value {e.Button.Value}"); + await Device.Send($"Button clicked with Text: {e.Button.Text} and Value {e.Button.Value}"); } diff --git a/TelegramBotBase.Test/Tests/Controls/ButtonGridTagForm.cs b/TelegramBotBase.Test/Tests/Controls/ButtonGridTagForm.cs index c737d10..510f208 100644 --- a/TelegramBotBase.Test/Tests/Controls/ButtonGridTagForm.cs +++ b/TelegramBotBase.Test/Tests/Controls/ButtonGridTagForm.cs @@ -1,58 +1,56 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Globalization; using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Args; -using TelegramBotBase.Controls; using TelegramBotBase.Controls.Hybrid; +using TelegramBotBase.DataSources; +using TelegramBotBase.Enums; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Controls { public class ButtonGridTagForm : AutoCleanForm { - - TaggedButtonGrid m_Buttons = null; + private TaggedButtonGrid _mButtons; public ButtonGridTagForm() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; + DeleteMode = EDeleteMode.OnLeavingForm; - this.Init += ButtonGridTagForm_Init; + Init += ButtonGridTagForm_Init; } - private async Task ButtonGridTagForm_Init(object sender, InitEventArgs e) + private Task ButtonGridTagForm_Init(object sender, InitEventArgs e) { - m_Buttons = new TaggedButtonGrid(); + _mButtons = new TaggedButtonGrid + { + KeyboardType = EKeyboardType.ReplyKeyboard, + EnablePaging = true, + HeadLayoutButtonRow = new List { new ButtonBase("Back", "back") } + }; - m_Buttons.KeyboardType = TelegramBotBase.Enums.eKeyboardType.ReplyKeyboard; - - m_Buttons.EnablePaging = true; - - m_Buttons.HeadLayoutButtonRow = new List() { new ButtonBase("Back", "back") }; - var countries = CultureInfo.GetCultures(CultureTypes.SpecificCultures); - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); foreach (var c in countries) { bf.AddButtonRow(new TagButtonBase(c.EnglishName, c.EnglishName, c.Parent.EnglishName)); } - m_Buttons.Tags = countries.Select(a => a.Parent.EnglishName).Distinct().OrderBy(a => a).ToList(); - m_Buttons.SelectedTags = countries.Select(a => a.Parent.EnglishName).Distinct().OrderBy(a => a).ToList(); + _mButtons.Tags = countries.Select(a => a.Parent.EnglishName).Distinct().OrderBy(a => a).ToList(); + _mButtons.SelectedTags = countries.Select(a => a.Parent.EnglishName).Distinct().OrderBy(a => a).ToList(); - m_Buttons.EnableCheckAllTools = true; + _mButtons.EnableCheckAllTools = true; - m_Buttons.DataSource = new TelegramBotBase.Datasources.ButtonFormDataSource(bf); + _mButtons.DataSource = new ButtonFormDataSource(bf); - m_Buttons.ButtonClicked += Bg_ButtonClicked; + _mButtons.ButtonClicked += Bg_ButtonClicked; - this.AddControl(m_Buttons); + AddControl(_mButtons); + return Task.CompletedTask; } private async Task Bg_ButtonClicked(object sender, ButtonClickedEventArgs e) @@ -65,13 +63,13 @@ namespace TelegramBotBaseTest.Tests.Controls case "back": var start = new Menu(); - await this.NavigateTo(start); + await NavigateTo(start); return; } - await this.Device.Send($"Button clicked with Text: {e.Button.Text} and Value {e.Button.Value}"); + await Device.Send($"Button clicked with Text: {e.Button.Text} and Value {e.Button.Value}"); } } } diff --git a/TelegramBotBase.Test/Tests/Controls/CalendarPickerForm.cs b/TelegramBotBase.Test/Tests/Controls/CalendarPickerForm.cs index 261cda8..4d1eaac 100644 --- a/TelegramBotBase.Test/Tests/Controls/CalendarPickerForm.cs +++ b/TelegramBotBase.Test/Tests/Controls/CalendarPickerForm.cs @@ -1,14 +1,9 @@ -using System; - -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using TelegramBotBase.Base; -using TelegramBotBase.Form; -using TelegramBotBase.Controls; +using System.Threading.Tasks; using TelegramBotBase.Args; +using TelegramBotBase.Base; using TelegramBotBase.Controls.Inline; +using TelegramBotBase.Enums; +using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Controls { @@ -17,20 +12,23 @@ namespace TelegramBotBaseTest.Tests.Controls public CalendarPicker Picker { get; set; } - int? selectedDateMessage { get; set; } + private int? SelectedDateMessage { get; set; } public CalendarPickerForm() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; - this.Init += CalendarPickerForm_Init; + DeleteMode = EDeleteMode.OnLeavingForm; + Init += CalendarPickerForm_Init; } - private async Task CalendarPickerForm_Init(object sender, InitEventArgs e) + private Task CalendarPickerForm_Init(object sender, InitEventArgs e) { - this.Picker = new CalendarPicker(); - this.Picker.Title = "Datum auswählen / Pick date"; - - this.AddControl(Picker); + Picker = new CalendarPicker + { + Title = "Datum auswählen / Pick date" + }; + + AddControl(Picker); + return Task.CompletedTask; } @@ -43,7 +41,7 @@ namespace TelegramBotBaseTest.Tests.Controls var s = new Menu(); - await this.NavigateTo(s); + await NavigateTo(s); break; } @@ -52,23 +50,23 @@ namespace TelegramBotBaseTest.Tests.Controls public override async Task Render(MessageResult message) { - String s = ""; + var s = ""; - s = "Selected date is " + this.Picker.SelectedDate.ToShortDateString() + "\r\n"; - s += "Selected month is " + this.Picker.Culture.DateTimeFormat.MonthNames[this.Picker.VisibleMonth.Month - 1] + "\r\n"; - s += "Selected year is " + this.Picker.VisibleMonth.Year.ToString(); + s = "Selected date is " + Picker.SelectedDate.ToShortDateString() + "\r\n"; + s += "Selected month is " + Picker.Culture.DateTimeFormat.MonthNames[Picker.VisibleMonth.Month - 1] + "\r\n"; + s += "Selected year is " + Picker.VisibleMonth.Year; - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Back","back")); - if (selectedDateMessage != null) + if (SelectedDateMessage != null) { - await this.Device.Edit(this.selectedDateMessage.Value, s, bf); + await Device.Edit(SelectedDateMessage.Value, s, bf); } else { - var m = await this.Device.Send(s, bf); - this.selectedDateMessage = m.MessageId; + var m = await Device.Send(s, bf); + SelectedDateMessage = m.MessageId; } diff --git a/TelegramBotBase.Test/Tests/Controls/CheckedButtonListForm.cs b/TelegramBotBase.Test/Tests/Controls/CheckedButtonListForm.cs index eeeae3a..6906c4f 100644 --- a/TelegramBotBase.Test/Tests/Controls/CheckedButtonListForm.cs +++ b/TelegramBotBase.Test/Tests/Controls/CheckedButtonListForm.cs @@ -1,56 +1,54 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Collections.Generic; using System.Threading.Tasks; using TelegramBotBase.Args; -using TelegramBotBase.Controls; using TelegramBotBase.Controls.Hybrid; +using TelegramBotBase.DataSources; +using TelegramBotBase.Enums; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Controls { public class CheckedButtonListForm : AutoCleanForm { - - CheckedButtonList m_Buttons = null; + private CheckedButtonList _mButtons; public CheckedButtonListForm() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; + DeleteMode = EDeleteMode.OnLeavingForm; - this.Init += CheckedButtonListForm_Init; + Init += CheckedButtonListForm_Init; } - private async Task CheckedButtonListForm_Init(object sender, InitEventArgs e) + private Task CheckedButtonListForm_Init(object sender, InitEventArgs e) { - m_Buttons = new CheckedButtonList(); + _mButtons = new CheckedButtonList + { + KeyboardType = EKeyboardType.InlineKeyBoard, + EnablePaging = true, + HeadLayoutButtonRow = new List { new ButtonBase("Back", "back"), new ButtonBase("Switch Keyboard", "switch") }, + SubHeadLayoutButtonRow = new List { new ButtonBase("No checked items", "$") } + }; - m_Buttons.KeyboardType = TelegramBotBase.Enums.eKeyboardType.InlineKeyBoard; - m_Buttons.EnablePaging = true; + var bf = new ButtonForm(); - m_Buttons.HeadLayoutButtonRow = new List() { new ButtonBase("Back", "back"), new ButtonBase("Switch Keyboard", "switch") }; - - m_Buttons.SubHeadLayoutButtonRow = new List() { new ButtonBase("No checked items", "$") }; - - ButtonForm bf = new ButtonForm(); - - for (int i = 0; i < 30; i++) + for (var i = 0; i < 30; i++) { bf.AddButtonRow($"{i + 1}. Item", i.ToString()); } - m_Buttons.DataSource = new TelegramBotBase.Datasources.ButtonFormDataSource(bf); + _mButtons.DataSource = new ButtonFormDataSource(bf); - m_Buttons.ButtonClicked += Bg_ButtonClicked; - m_Buttons.CheckedChanged += M_Buttons_CheckedChanged; + _mButtons.ButtonClicked += Bg_ButtonClicked; + _mButtons.CheckedChanged += M_Buttons_CheckedChanged; - this.AddControl(m_Buttons); + AddControl(_mButtons); + return Task.CompletedTask; } - private async Task M_Buttons_CheckedChanged(object sender, CheckedChangedEventArgs e) + private Task M_Buttons_CheckedChanged(object sender, CheckedChangedEventArgs e) { - m_Buttons.SubHeadLayoutButtonRow = new List() { new ButtonBase($"{m_Buttons.CheckedItems.Count} checked items", "$") }; + _mButtons.SubHeadLayoutButtonRow = new List { new ButtonBase($"{_mButtons.CheckedItems.Count} checked items", "$") }; + return Task.CompletedTask; } private async Task Bg_ButtonClicked(object sender, ButtonClickedEventArgs e) @@ -68,16 +66,12 @@ namespace TelegramBotBaseTest.Tests.Controls case "switch": - switch (m_Buttons.KeyboardType) + _mButtons.KeyboardType = _mButtons.KeyboardType switch { - case TelegramBotBase.Enums.eKeyboardType.ReplyKeyboard: - m_Buttons.KeyboardType = TelegramBotBase.Enums.eKeyboardType.InlineKeyBoard; - break; - case TelegramBotBase.Enums.eKeyboardType.InlineKeyBoard: - m_Buttons.KeyboardType = TelegramBotBase.Enums.eKeyboardType.ReplyKeyboard; - break; - } - + EKeyboardType.ReplyKeyboard => EKeyboardType.InlineKeyBoard, + EKeyboardType.InlineKeyBoard => EKeyboardType.ReplyKeyboard, + _ => _mButtons.KeyboardType + }; break; diff --git a/TelegramBotBase.Test/Tests/Controls/MonthPickerForm.cs b/TelegramBotBase.Test/Tests/Controls/MonthPickerForm.cs index a5973e0..3774430 100644 --- a/TelegramBotBase.Test/Tests/Controls/MonthPickerForm.cs +++ b/TelegramBotBase.Test/Tests/Controls/MonthPickerForm.cs @@ -1,14 +1,9 @@ -using System; - -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using TelegramBotBase.Base; -using TelegramBotBase.Form; -using TelegramBotBase.Controls; +using System.Threading.Tasks; using TelegramBotBase.Args; +using TelegramBotBase.Base; using TelegramBotBase.Controls.Inline; +using TelegramBotBase.Enums; +using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Controls { @@ -17,19 +12,22 @@ namespace TelegramBotBaseTest.Tests.Controls public MonthPicker Picker { get; set; } - int? selectedDateMessage { get; set; } + private int? SelectedDateMessage { get; set; } public MonthPickerForm() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; - this.Init += MonthPickerForm_Init; + DeleteMode = EDeleteMode.OnLeavingForm; + Init += MonthPickerForm_Init; } - private async Task MonthPickerForm_Init(object sender, InitEventArgs e) + private Task MonthPickerForm_Init(object sender, InitEventArgs e) { - this.Picker = new MonthPicker(); - this.Picker.Title = "Monat auswählen / Pick month"; - this.AddControl(Picker); + Picker = new MonthPicker + { + Title = "Monat auswählen / Pick month" + }; + AddControl(Picker); + return Task.CompletedTask; } @@ -42,7 +40,7 @@ namespace TelegramBotBaseTest.Tests.Controls var s = new Menu(); - await this.NavigateTo(s); + await NavigateTo(s); break; } @@ -51,22 +49,22 @@ namespace TelegramBotBaseTest.Tests.Controls public override async Task Render(MessageResult message) { - String s = ""; + var s = ""; - s += "Selected month is " + this.Picker.Culture.DateTimeFormat.MonthNames[this.Picker.SelectedDate.Month - 1] + "\r\n"; - s += "Selected year is " + this.Picker.VisibleMonth.Year.ToString(); + s += "Selected month is " + Picker.Culture.DateTimeFormat.MonthNames[Picker.SelectedDate.Month - 1] + "\r\n"; + s += "Selected year is " + Picker.VisibleMonth.Year; - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Back","back")); - if (selectedDateMessage != null) + if (SelectedDateMessage != null) { - await this.Device.Edit(this.selectedDateMessage.Value, s, bf); + await Device.Edit(SelectedDateMessage.Value, s, bf); } else { - var m = await this.Device.Send(s, bf); - this.selectedDateMessage = m.MessageId; + var m = await Device.Send(s, bf); + SelectedDateMessage = m.MessageId; } diff --git a/TelegramBotBase.Test/Tests/Controls/MultiToggleButtons.cs b/TelegramBotBase.Test/Tests/Controls/MultiToggleButtons.cs index b38abb4..dfa774f 100644 --- a/TelegramBotBase.Test/Tests/Controls/MultiToggleButtons.cs +++ b/TelegramBotBase.Test/Tests/Controls/MultiToggleButtons.cs @@ -1,11 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Args; -using TelegramBotBase.Controls; using TelegramBotBase.Controls.Inline; +using TelegramBotBase.Enums; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Controls @@ -14,28 +13,33 @@ namespace TelegramBotBaseTest.Tests.Controls { public MultiToggleButtons() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; + DeleteMode = EDeleteMode.OnLeavingForm; - this.Init += ToggleButtons_Init; + Init += ToggleButtons_Init; } - private async Task ToggleButtons_Init(object sender, InitEventArgs e) + private Task ToggleButtons_Init(object sender, InitEventArgs e) { - var mtb = new MultiToggleButton(); + var mtb = new MultiToggleButton + { + Options = new List { new ButtonBase("Option 1", "1"), new ButtonBase("Option 2", "2"), new ButtonBase("Option 3", "3") } + }; - mtb.Options = new List() { new ButtonBase("Option 1", "1"), new ButtonBase("Option 2", "2"), new ButtonBase("Option 3", "3") }; mtb.SelectedOption = mtb.Options.FirstOrDefault(); mtb.Toggled += Tb_Toggled; - this.AddControl(mtb); + AddControl(mtb); - mtb = new MultiToggleButton(); + mtb = new MultiToggleButton + { + Options = new List { new ButtonBase("Option 4", "4"), new ButtonBase("Option 5", "5"), new ButtonBase("Option 6", "6") } + }; - mtb.Options = new List() { new ButtonBase("Option 4", "4"), new ButtonBase("Option 5", "5"), new ButtonBase("Option 6", "6") }; mtb.SelectedOption = mtb.Options.FirstOrDefault(); mtb.AllowEmptySelection = false; mtb.Toggled += Tb_Toggled; - this.AddControl(mtb); + AddControl(mtb); + return Task.CompletedTask; } private void Tb_Toggled(object sender, EventArgs e) @@ -43,11 +47,11 @@ namespace TelegramBotBaseTest.Tests.Controls var tb = sender as MultiToggleButton; if (tb.SelectedOption != null) { - Console.WriteLine(tb.ID.ToString() + " was pressed, and toggled to " + tb.SelectedOption.Value); + Console.WriteLine(tb.Id + " was pressed, and toggled to " + tb.SelectedOption.Value); return; } - Console.WriteLine("Selection for " + tb.ID.ToString() + " has been removed."); + Console.WriteLine("Selection for " + tb.Id + " has been removed."); } } } diff --git a/TelegramBotBase.Test/Tests/Controls/MultiViewForm.cs b/TelegramBotBase.Test/Tests/Controls/MultiViewForm.cs index fccdfcb..e5f6431 100644 --- a/TelegramBotBase.Test/Tests/Controls/MultiViewForm.cs +++ b/TelegramBotBase.Test/Tests/Controls/MultiViewForm.cs @@ -1,41 +1,42 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; -using TelegramBotBase.Base; +using System.Threading.Tasks; +using TelegramBotBase.Args; using TelegramBotBase.Controls.Hybrid; +using TelegramBotBase.Enums; using TelegramBotBase.Form; +using TelegramBotBaseTest.Tests.Controls.Subclass; namespace TelegramBotBaseTest.Tests.Controls { public class MultiViewForm : AutoCleanForm { + private MultiViewTest _mvt; - Subclass.MultiViewTest mvt = null; - - ButtonGrid bg = null; + private ButtonGrid _bg; public MultiViewForm() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; - this.Init += MultiViewForm_Init; + DeleteMode = EDeleteMode.OnLeavingForm; + Init += MultiViewForm_Init; } - private async Task MultiViewForm_Init(object sender, TelegramBotBase.Args.InitEventArgs e) + private Task MultiViewForm_Init(object sender, InitEventArgs e) { - mvt = new Subclass.MultiViewTest(); + _mvt = new MultiViewTest(); - AddControl(mvt); + AddControl(_mvt); - bg = new ButtonGrid(); - bg.ButtonsForm = new ButtonForm(); - bg.ButtonsForm.AddButtonRow("Back", "$back$"); - bg.ButtonClicked += Bg_ButtonClicked; - bg.KeyboardType = TelegramBotBase.Enums.eKeyboardType.ReplyKeyboard; - AddControl(bg); + _bg = new ButtonGrid + { + ButtonsForm = new ButtonForm() + }; + _bg.ButtonsForm.AddButtonRow("Back", "$back$"); + _bg.ButtonClicked += Bg_ButtonClicked; + _bg.KeyboardType = EKeyboardType.ReplyKeyboard; + AddControl(_bg); + return Task.CompletedTask; } - private async Task Bg_ButtonClicked(object sender, TelegramBotBase.Args.ButtonClickedEventArgs e) + private async Task Bg_ButtonClicked(object sender, ButtonClickedEventArgs e) { switch(e.Button.Value) { diff --git a/TelegramBotBase.Test/Tests/Controls/Subclass/MultiViewTest.cs b/TelegramBotBase.Test/Tests/Controls/Subclass/MultiViewTest.cs index f376903..79dfeab 100644 --- a/TelegramBotBase.Test/Tests/Controls/Subclass/MultiViewTest.cs +++ b/TelegramBotBase.Test/Tests/Controls/Subclass/MultiViewTest.cs @@ -1,40 +1,38 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Args; using TelegramBotBase.Base; +using TelegramBotBase.Controls.Hybrid; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Controls.Subclass { - public class MultiViewTest : TelegramBotBase.Controls.Hybrid.MultiView + public class MultiViewTest : MultiView { - public override async Task Action(MessageResult result, string value = null) + public override Task Action(MessageResult result, string value = null) { - switch (result.RawData) { case "back": - this.SelectedViewIndex--; + SelectedViewIndex--; break; case "next": - this.SelectedViewIndex++; + SelectedViewIndex++; break; } + return Task.CompletedTask; } public override async Task RenderView(RenderViewEventArgs e) { - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Back", "back"), new ButtonBase("Next", "next")); switch (e.CurrentView) diff --git a/TelegramBotBase.Test/Tests/Controls/ToggleButtons.cs b/TelegramBotBase.Test/Tests/Controls/ToggleButtons.cs index 55b88e9..cb46305 100644 --- a/TelegramBotBase.Test/Tests/Controls/ToggleButtons.cs +++ b/TelegramBotBase.Test/Tests/Controls/ToggleButtons.cs @@ -1,11 +1,8 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Args; -using TelegramBotBase.Controls; using TelegramBotBase.Controls.Inline; +using TelegramBotBase.Enums; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Controls @@ -14,38 +11,44 @@ namespace TelegramBotBaseTest.Tests.Controls { public ToggleButtons() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; + DeleteMode = EDeleteMode.OnLeavingForm; - this.Init += ToggleButtons_Init; + Init += ToggleButtons_Init; } - private async Task ToggleButtons_Init(object sender, InitEventArgs e) + private Task ToggleButtons_Init(object sender, InitEventArgs e) { - var tb = new ToggleButton(); - tb.Checked = true; + var tb = new ToggleButton + { + Checked = true + }; tb.Toggled += Tb_Toggled; - this.AddControl(tb); + AddControl(tb); - tb = new ToggleButton(); - tb.Checked = false; + tb = new ToggleButton + { + Checked = false + }; tb.Toggled += Tb_Toggled; - this.AddControl(tb); + AddControl(tb); - tb = new ToggleButton(); - tb.Checked = true; + tb = new ToggleButton + { + Checked = true + }; tb.Toggled += Tb_Toggled; - this.AddControl(tb); - + AddControl(tb); + return Task.CompletedTask; } private void Tb_Toggled(object sender, EventArgs e) { var tb = sender as ToggleButton; - Console.WriteLine(tb.ID.ToString() + " was pressed, and toggled to " + (tb.Checked ? "Checked" : "Unchecked")); + Console.WriteLine(tb.Id + " was pressed, and toggled to " + (tb.Checked ? "Checked" : "Unchecked")); } } } diff --git a/TelegramBotBase.Test/Tests/Controls/TreeViewForms.cs b/TelegramBotBase.Test/Tests/Controls/TreeViewForms.cs index 6c9dd41..4a41460 100644 --- a/TelegramBotBase.Test/Tests/Controls/TreeViewForms.cs +++ b/TelegramBotBase.Test/Tests/Controls/TreeViewForms.cs @@ -1,31 +1,27 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using TelegramBotBase.Form; -using TelegramBotBase.Controls; -using TelegramBotBase.Base; +using System.Threading.Tasks; using TelegramBotBase.Args; +using TelegramBotBase.Base; using TelegramBotBase.Controls.Inline; +using TelegramBotBase.Enums; +using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Controls { public class TreeViewForms : AutoCleanForm { - public TreeView view { get; set; } + public TreeView View { get; set; } private int? MessageId { get; set; } public TreeViewForms() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; - this.Init += TreeViewForms_Init; + DeleteMode = EDeleteMode.OnLeavingForm; + Init += TreeViewForms_Init; } - private async Task TreeViewForms_Init(object sender, InitEventArgs e) + private Task TreeViewForms_Init(object sender, InitEventArgs e) { - view = new TreeView(); + View = new TreeView(); var tvn = new TreeViewNode("Cars", "cars"); @@ -35,7 +31,7 @@ namespace TelegramBotBaseTest.Tests.Controls tvn.AddNode(new TreeViewNode("VW", "vw")); tvn.AddNode(new TreeViewNode("Lamborghini", "lamborghini")); - view.Nodes.Add(tvn); + View.Nodes.Add(tvn); tvn = new TreeViewNode("Fruits", "fruits"); @@ -43,10 +39,10 @@ namespace TelegramBotBaseTest.Tests.Controls tvn.AddNode(new TreeViewNode("Orange", "orange")); tvn.AddNode(new TreeViewNode("Lemon", "lemon")); - view.Nodes.Add(tvn); - - this.AddControl(view); + View.Nodes.Add(tvn); + AddControl(View); + return Task.CompletedTask; } public override async Task Action(MessageResult message) @@ -64,7 +60,7 @@ namespace TelegramBotBaseTest.Tests.Controls var start = new Menu(); - await this.NavigateTo(start); + await NavigateTo(start); break; @@ -74,26 +70,26 @@ namespace TelegramBotBaseTest.Tests.Controls public override async Task Render(MessageResult message) { - String s = ""; + var s = ""; - s += "Selected Node: " + (this.view.SelectedNode?.Text ?? "(null)") + "\r\n"; + s += "Selected Node: " + (View.SelectedNode?.Text ?? "(null)") + "\r\n"; - s += "Visible Node: " + (this.view.VisibleNode?.Text ?? "(top)") + "\r\n"; + s += "Visible Node: " + (View.VisibleNode?.Text ?? "(top)") + "\r\n"; - s += "Visible Path: " + this.view.GetPath() + "\r\n"; - s += "Selected Path: " + (this.view.SelectedNode?.GetPath() ?? "(null)") + "\r\n"; + s += "Visible Path: " + View.GetPath() + "\r\n"; + s += "Selected Path: " + (View.SelectedNode?.GetPath() ?? "(null)") + "\r\n"; - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Back", "back")); if (MessageId != null) { - await this.Device.Edit(this.MessageId.Value, s, bf); + await Device.Edit(MessageId.Value, s, bf); } else { - var m = await this.Device.Send(s, bf); - this.MessageId = m.MessageId; + var m = await Device.Send(s, bf); + MessageId = m.MessageId; } } diff --git a/TelegramBotBase.Test/Tests/DataForm.cs b/TelegramBotBase.Test/Tests/DataForm.cs index 4a6edec..509e58b 100644 --- a/TelegramBotBase.Test/Tests/DataForm.cs +++ b/TelegramBotBase.Test/Tests/DataForm.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Linq; using System.Threading.Tasks; using Telegram.Bot; -using Telegram.Bot.Types; +using Telegram.Bot.Types.Enums; using Telegram.Bot.Types.InputFiles; using Telegram.Bot.Types.ReplyMarkups; using TelegramBotBase.Base; @@ -18,68 +15,68 @@ namespace TelegramBotBaseTest.Tests public override async Task SentData(DataResult data) { - String tmp = ""; + var tmp = ""; InputOnlineFile file; switch (data.Type) { - case Telegram.Bot.Types.Enums.MessageType.Contact: + case MessageType.Contact: tmp += "Firstname: " + data.Contact.FirstName + "\r\n"; tmp += "Lastname: " + data.Contact.LastName + "\r\n"; tmp += "Phonenumber: " + data.Contact.PhoneNumber + "\r\n"; tmp += "UserId: " + data.Contact.UserId + "\r\n"; - await this.Device.Send("Your contact: \r\n" + tmp, replyTo: data.MessageId); + await Device.Send("Your contact: \r\n" + tmp, replyTo: data.MessageId); break; - case Telegram.Bot.Types.Enums.MessageType.Document: + case MessageType.Document: file = new InputOnlineFile(data.Document.FileId); - await this.Device.SendDocument(file, "Your uploaded document"); + await Device.SendDocument(file, "Your uploaded document"); break; - case Telegram.Bot.Types.Enums.MessageType.Video: + case MessageType.Video: file = new InputOnlineFile(data.Document.FileId); - await this.Device.SendDocument(file, "Your uploaded video"); + await Device.SendDocument(file, "Your uploaded video"); break; - case Telegram.Bot.Types.Enums.MessageType.Audio: + case MessageType.Audio: file = new InputOnlineFile(data.Document.FileId); - await this.Device.SendDocument(file, "Your uploaded audio"); + await Device.SendDocument(file, "Your uploaded audio"); break; - case Telegram.Bot.Types.Enums.MessageType.Location: + case MessageType.Location: tmp += "Lat: " + data.Location.Latitude + "\r\n"; tmp += "Lng: " + data.Location.Longitude + "\r\n"; - await this.Device.Send("Your location: \r\n" + tmp, replyTo: data.MessageId); + await Device.Send("Your location: \r\n" + tmp, replyTo: data.MessageId); break; - case Telegram.Bot.Types.Enums.MessageType.Photo: + case MessageType.Photo: - InputOnlineFile photo = new InputOnlineFile(data.Photos.Last().FileId); + var photo = new InputOnlineFile(data.Photos.Last().FileId); - await this.Device.Send("Your image: ", replyTo: data.MessageId); - await this.Client.TelegramClient.SendPhotoAsync(this.Device.DeviceId, photo); + await Device.Send("Your image: ", replyTo: data.MessageId); + await Client.TelegramClient.SendPhotoAsync(Device.DeviceId, photo); break; default: - await this.Device.Send("Unknown response"); + await Device.Send("Unknown response"); break; } @@ -97,13 +94,13 @@ namespace TelegramBotBaseTest.Tests { case "contact": - await this.Device.RequestContact(); + await Device.RequestContact(); break; case "location": - await this.Device.RequestLocation(); + await Device.RequestLocation(); break; @@ -113,7 +110,7 @@ namespace TelegramBotBaseTest.Tests var start = new Menu(); - await this.NavigateTo(start); + await NavigateTo(start); break; } @@ -123,7 +120,7 @@ namespace TelegramBotBaseTest.Tests public override async Task Render(MessageResult message) { - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Request User contact", "contact")); @@ -133,7 +130,7 @@ namespace TelegramBotBaseTest.Tests InlineKeyboardMarkup ikv = bf; - await this.Device.Send("Please upload a contact, photo, video, audio, document or location.", bf); + await Device.Send("Please upload a contact, photo, video, audio, document or location.", bf); diff --git a/TelegramBotBase.Test/Tests/Datasources/CustomDataSource.cs b/TelegramBotBase.Test/Tests/Datasources/CustomDataSource.cs index 3187968..1e418e8 100644 --- a/TelegramBotBase.Test/Tests/Datasources/CustomDataSource.cs +++ b/TelegramBotBase.Test/Tests/Datasources/CustomDataSource.cs @@ -3,9 +3,9 @@ using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; -using System.Text; +using Newtonsoft.Json; using TelegramBotBase.Controls.Hybrid; -using TelegramBotBase.Datasources; +using TelegramBotBase.DataSources; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Datasources @@ -13,28 +13,28 @@ namespace TelegramBotBaseTest.Tests.Datasources public class CustomDataSource : ButtonFormDataSource { - public List Countries = new List() { "Country 1", "Country 2", "Country 3" }; + public List Countries = new List { "Country 1", "Country 2", "Country 3" }; public CustomDataSource() { - loadData(); + LoadData(); } /// /// This method has the example purpose of creating and loading some example data. /// When using a database you do not need this kind of method. /// - private void loadData() + private void LoadData() { //Exists data source? Read it if (File.Exists(AppContext.BaseDirectory + "countries.json")) { try { - var List = Newtonsoft.Json.JsonConvert.DeserializeObject>(File.ReadAllText("countries.json")); + var list = JsonConvert.DeserializeObject>(File.ReadAllText("countries.json")); - Countries = List; + Countries = list; } catch { @@ -52,7 +52,7 @@ namespace TelegramBotBaseTest.Tests.Datasources Countries = countries; - var tmp = Newtonsoft.Json.JsonConvert.SerializeObject(countries); + var tmp = JsonConvert.SerializeObject(countries); File.WriteAllText( AppContext.BaseDirectory + "countries.json", tmp); } @@ -76,7 +76,7 @@ namespace TelegramBotBaseTest.Tests.Datasources { var items = Countries.Skip(start).Take(count); - List lst = new List(); + var lst = new List(); foreach (var c in items) { lst.Add(Render(c)); @@ -87,7 +87,7 @@ namespace TelegramBotBaseTest.Tests.Datasources public override List AllItems() { - List lst = new List(); + var lst = new List(); foreach (var c in Countries) { lst.Add(Render(c)); @@ -97,9 +97,9 @@ namespace TelegramBotBaseTest.Tests.Datasources public override ButtonForm PickItems(int start, int count, string filter = null) { - List rows = ItemRange(start, count); + var rows = ItemRange(start, count); - ButtonForm lst = new ButtonForm(); + var lst = new ButtonForm(); foreach (var c in rows) { lst.AddButtonRow(c); @@ -109,9 +109,9 @@ namespace TelegramBotBaseTest.Tests.Datasources public override ButtonForm PickAllItems(string filter = null) { - List rows = AllItems(); + var rows = AllItems(); - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRows(rows); @@ -128,36 +128,16 @@ namespace TelegramBotBaseTest.Tests.Datasources public override ButtonRow Render(object data) { - var s = data as String; - if (s == null) + if (!(data is string s)) return new ButtonRow(new ButtonBase("Empty", "zero")); return new ButtonRow(new ButtonBase(s, s)); } - public override int Count - { - get - { - return Countries.Count; - } - } + public override int Count => Countries.Count; - public override int ColumnCount - { - get - { - return 1; - } - } - - public override int RowCount - { - get - { - return this.Count; - } - } + public override int ColumnCount => 1; + public override int RowCount => Count; } } diff --git a/TelegramBotBase.Test/Tests/Datasources/List.cs b/TelegramBotBase.Test/Tests/Datasources/List.cs index c352384..d73d92a 100644 --- a/TelegramBotBase.Test/Tests/Datasources/List.cs +++ b/TelegramBotBase.Test/Tests/Datasources/List.cs @@ -1,42 +1,43 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; -using TelegramBotBase.Base; +using System.Threading.Tasks; +using TelegramBotBase.Args; using TelegramBotBase.Controls.Hybrid; +using TelegramBotBase.Enums; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Datasources { public class List : FormBase { - ButtonGrid __buttons = null; + private ButtonGrid _buttons; public List() { - this.Init += List_Init; + Init += List_Init; } - private async Task List_Init(object sender, TelegramBotBase.Args.InitEventArgs e) + private Task List_Init(object sender, InitEventArgs e) { - __buttons = new ButtonGrid(); + _buttons = new ButtonGrid + { + EnablePaging = true, + EnableSearch = false + }; - __buttons.EnablePaging = true; - __buttons.EnableSearch = false; - __buttons.ButtonClicked += __buttons_ButtonClicked; - __buttons.KeyboardType = TelegramBotBase.Enums.eKeyboardType.ReplyKeyboard; - __buttons.DeleteReplyMessage = true; + _buttons.ButtonClicked += __buttons_ButtonClicked; + _buttons.KeyboardType = EKeyboardType.ReplyKeyboard; + _buttons.DeleteReplyMessage = true; - __buttons.HeadLayoutButtonRow = new ButtonRow(new ButtonBase("Back", "back")); + _buttons.HeadLayoutButtonRow = new ButtonRow(new ButtonBase("Back", "back")); var cds = new CustomDataSource(); - __buttons.DataSource = cds; + _buttons.DataSource = cds; - AddControl(__buttons); + AddControl(_buttons); + return Task.CompletedTask; } - private async Task __buttons_ButtonClicked(object sender, TelegramBotBase.Args.ButtonClickedEventArgs e) + private async Task __buttons_ButtonClicked(object sender, ButtonClickedEventArgs e) { switch(e.Button.Value) { diff --git a/TelegramBotBase.Test/Tests/Groups/GroupChange.cs b/TelegramBotBase.Test/Tests/Groups/GroupChange.cs index 2322b9f..1d75ccf 100644 --- a/TelegramBotBase.Test/Tests/Groups/GroupChange.cs +++ b/TelegramBotBase.Test/Tests/Groups/GroupChange.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Args; using TelegramBotBase.Base; @@ -8,24 +6,24 @@ using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Groups { - public class GroupChange : TelegramBotBase.Form.GroupForm + public class GroupChange : GroupForm { public GroupChange() { - this.Opened += GroupChange_Opened; + Opened += GroupChange_Opened; } private async Task GroupChange_Opened(object sender, EventArgs e) { - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Open GroupChange Test", "groupchange")); bf.AddButtonRow(new ButtonBase("Open WelcomeUser Test", "welcomeuser")); bf.AddButtonRow(new ButtonBase("Open LinkReplace Test", "linkreplace")); - await this.Device.Send("GroupChange started, click to switch", bf); + await Device.Send("GroupChange started, click to switch", bf); } @@ -46,21 +44,21 @@ namespace TelegramBotBaseTest.Tests.Groups var gc = new GroupChange(); - await this.NavigateTo(gc); + await NavigateTo(gc); break; case "welcomeuser": var wu = new WelcomeUser(); - await this.NavigateTo(wu); + await NavigateTo(wu); break; case "linkreplace": var lr = new LinkReplaceTest(); - await this.NavigateTo(lr); + await NavigateTo(lr); break; } @@ -69,7 +67,7 @@ namespace TelegramBotBaseTest.Tests.Groups public override async Task OnGroupChanged(GroupChangedEventArgs e) { - await this.Device.Send("Group has been changed by " + e.OriginalMessage.Message.From.FirstName + " " + e.OriginalMessage.Message.From.LastName); + await Device.Send("Group has been changed by " + e.OriginalMessage.Message.From.FirstName + " " + e.OriginalMessage.Message.From.LastName); } } diff --git a/TelegramBotBase.Test/Tests/Groups/LinkReplaceTest.cs b/TelegramBotBase.Test/Tests/Groups/LinkReplaceTest.cs index d132303..243d7d4 100644 --- a/TelegramBotBase.Test/Tests/Groups/LinkReplaceTest.cs +++ b/TelegramBotBase.Test/Tests/Groups/LinkReplaceTest.cs @@ -1,37 +1,36 @@ using System; using System.Collections.Generic; -using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using Telegram.Bot.Types; +using Telegram.Bot.Types.Enums; using TelegramBotBase.Base; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Groups { - public class LinkReplaceTest : TelegramBotBase.Form.GroupForm + public class LinkReplaceTest : GroupForm { - - Dictionary Counter { get; set; } = new Dictionary(); + private Dictionary Counter { get; set; } = new Dictionary(); private const int Maximum = 3; public LinkReplaceTest() { - this.Opened += LinkReplaceTest_Opened; + Opened += LinkReplaceTest_Opened; } private async Task LinkReplaceTest_Opened(object sender, EventArgs e) { - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Open GroupChange Test", "groupchange")); bf.AddButtonRow(new ButtonBase("Open WelcomeUser Test", "welcomeuser")); bf.AddButtonRow(new ButtonBase("Open LinkReplace Test", "linkreplace")); - await this.Device.Send("LinkReplaceTest started, click to switch", bf); + await Device.Send("LinkReplaceTest started, click to switch", bf); } @@ -51,21 +50,21 @@ namespace TelegramBotBaseTest.Tests.Groups var gc = new GroupChange(); - await this.NavigateTo(gc); + await NavigateTo(gc); break; case "welcomeuser": var wu = new WelcomeUser(); - await this.NavigateTo(wu); + await NavigateTo(wu); break; case "linkreplace": var lr = new LinkReplaceTest(); - await this.NavigateTo(lr); + await NavigateTo(lr); break; } @@ -86,23 +85,25 @@ namespace TelegramBotBaseTest.Tests.Groups var u = await Device.GetChatUser(from); //Don't kick Admins or Creators - if (u.Status == Telegram.Bot.Types.Enums.ChatMemberStatus.Administrator | u.Status == Telegram.Bot.Types.Enums.ChatMemberStatus.Creator) + if (u.Status == ChatMemberStatus.Administrator | u.Status == ChatMemberStatus.Creator) { - await this.Device.Send("You won't get kicked,...not this time."); + await Device.Send("You won't get kicked,...not this time."); return; } await e.Device.DeleteMessage(e.MessageId); - var cp = new ChatPermissions(); - cp.CanAddWebPagePreviews = false; - cp.CanChangeInfo = false; - cp.CanInviteUsers = false; - cp.CanPinMessages = false; - cp.CanSendMediaMessages = false; - cp.CanSendMessages = false; - cp.CanSendOtherMessages = false; - cp.CanSendPolls = false; + var cp = new ChatPermissions + { + CanAddWebPagePreviews = false, + CanChangeInfo = false, + CanInviteUsers = false, + CanPinMessages = false, + CanSendMediaMessages = false, + CanSendMessages = false, + CanSendOtherMessages = false, + CanSendPolls = false + }; //Collect user "mistakes" with sending url, after 3 he gets kicked out. if (Counter.ContainsKey(from)) @@ -147,12 +148,12 @@ namespace TelegramBotBaseTest.Tests.Groups /// /// /// - private bool HasLinks(String str) + private bool HasLinks(string str) { var tmp = str; var pattern = @"^(http|https|ftp|)\://|[a-zA-Z0-9\-\.]+\.[a-zA-Z](:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^\.\,\)\(\s]$"; - Regex r = new Regex(pattern); + var r = new Regex(pattern); var matches = r.Matches(tmp); diff --git a/TelegramBotBase.Test/Tests/Groups/WelcomeUser.cs b/TelegramBotBase.Test/Tests/Groups/WelcomeUser.cs index c90a3b9..c700f85 100644 --- a/TelegramBotBase.Test/Tests/Groups/WelcomeUser.cs +++ b/TelegramBotBase.Test/Tests/Groups/WelcomeUser.cs @@ -1,33 +1,32 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Linq; using System.Threading.Tasks; +using Telegram.Bot.Types.Enums; +using TelegramBotBase.Args; using TelegramBotBase.Base; using TelegramBotBase.Form; -using TelegramBotBase.Args; namespace TelegramBotBaseTest.Tests.Groups { - public class WelcomeUser : TelegramBotBase.Form.GroupForm + public class WelcomeUser : GroupForm { public WelcomeUser() { - this.Opened += WelcomeUser_Opened; + Opened += WelcomeUser_Opened; } private async Task WelcomeUser_Opened(object sender, EventArgs e) { - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Open GroupChange Test", "groupchange")); bf.AddButtonRow(new ButtonBase("Open WelcomeUser Test", "welcomeuser")); bf.AddButtonRow(new ButtonBase("Open LinkReplace Test", "linkreplace")); - await this.Device.Send("WelcomeUser started, click to switch", bf); + await Device.Send("WelcomeUser started, click to switch", bf); } @@ -47,21 +46,21 @@ namespace TelegramBotBaseTest.Tests.Groups var gc = new GroupChange(); - await this.NavigateTo(gc); + await NavigateTo(gc); break; case "welcomeuser": var wu = new WelcomeUser(); - await this.NavigateTo(wu); + await NavigateTo(wu); break; case "linkreplace": var lr = new LinkReplaceTest(); - await this.NavigateTo(lr); + await NavigateTo(lr); break; } @@ -71,15 +70,15 @@ namespace TelegramBotBaseTest.Tests.Groups public override async Task OnMemberChanges(MemberChangeEventArgs e) { - if (e.Type == Telegram.Bot.Types.Enums.MessageType.ChatMembersAdded) + if (e.Type == MessageType.ChatMembersAdded) { - await this.Device.Send("Welcome you new members!\r\n\r\n" + e.Members.Select(a => a.FirstName + " " + a.LastName).Aggregate((a, b) => a + "\r\n" + b)); + await Device.Send("Welcome you new members!\r\n\r\n" + e.Members.Select(a => a.FirstName + " " + a.LastName).Aggregate((a, b) => a + "\r\n" + b)); } - else if (e.Type == Telegram.Bot.Types.Enums.MessageType.ChatMemberLeft) + else if (e.Type == MessageType.ChatMemberLeft) { - await this.Device.Send(e.Members.Select(a => a.FirstName + " " + a.LastName).Aggregate((a, b) => a + " and " + b) + " has left the group"); + await Device.Send(e.Members.Select(a => a.FirstName + " " + a.LastName).Aggregate((a, b) => a + " and " + b) + " has left the group"); } diff --git a/TelegramBotBase.Test/Tests/Menu.cs b/TelegramBotBase.Test/Tests/Menu.cs index 6f14fec..3f9d04d 100644 --- a/TelegramBotBase.Test/Tests/Menu.cs +++ b/TelegramBotBase.Test/Tests/Menu.cs @@ -1,11 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; +using Telegram.Bot.Types.Enums; using TelegramBotBase.Base; +using TelegramBotBase.Enums; using TelegramBotBase.Form; using TelegramBotBaseTest.Tests.Controls; +using TelegramBotBaseTest.Tests.Datasources; +using TelegramBotBaseTest.Tests.Groups; namespace TelegramBotBaseTest.Tests { @@ -13,18 +13,18 @@ namespace TelegramBotBaseTest.Tests { public Menu() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; + DeleteMode = EDeleteMode.OnLeavingForm; } public override async Task Load(MessageResult message) { - if (message.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Group | message.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Supergroup) + if (message.Message.Chat.Type == ChatType.Group | message.Message.Chat.Type == ChatType.Supergroup) { - var sf = new TelegramBotBaseTest.Tests.Groups.WelcomeUser(); + var sf = new WelcomeUser(); - await this.NavigateTo(sf); + await NavigateTo(sf); } @@ -49,7 +49,7 @@ namespace TelegramBotBaseTest.Tests var sf = new SimpleForm(); - await this.NavigateTo(sf); + await NavigateTo(sf); break; @@ -57,7 +57,7 @@ namespace TelegramBotBaseTest.Tests var bf = new ButtonTestForm(); - await this.NavigateTo(bf); + await NavigateTo(bf); break; @@ -65,7 +65,7 @@ namespace TelegramBotBaseTest.Tests var pf = new ProgressTest(); - await this.NavigateTo(pf); + await NavigateTo(pf); break; @@ -73,7 +73,7 @@ namespace TelegramBotBaseTest.Tests var reg = new Register.Start(); - await this.NavigateTo(reg); + await NavigateTo(reg); break; @@ -81,7 +81,7 @@ namespace TelegramBotBaseTest.Tests var form1 = new TestForm(); - await this.NavigateTo(form1); + await NavigateTo(form1); break; @@ -89,7 +89,7 @@ namespace TelegramBotBaseTest.Tests var form2 = new TestForm2(); - await this.NavigateTo(form2); + await NavigateTo(form2); break; @@ -97,71 +97,71 @@ namespace TelegramBotBaseTest.Tests var data = new DataForm(); - await this.NavigateTo(data); + await NavigateTo(data); break; case "calendar": - var calendar = new Controls.CalendarPickerForm(); + var calendar = new CalendarPickerForm(); - await this.NavigateTo(calendar); + await NavigateTo(calendar); break; case "month": - var month = new Controls.MonthPickerForm(); + var month = new MonthPickerForm(); - await this.NavigateTo(month); + await NavigateTo(month); break; case "treeview": - var tree = new Controls.TreeViewForms(); + var tree = new TreeViewForms(); - await this.NavigateTo(tree); + await NavigateTo(tree); break; case "togglebuttons": - var tb = new Controls.ToggleButtons(); + var tb = new ToggleButtons(); - await this.NavigateTo(tb); + await NavigateTo(tb); break; case "multitogglebuttons": - var mtb = new Controls.MultiToggleButtons(); + var mtb = new MultiToggleButtons(); - await this.NavigateTo(mtb); + await NavigateTo(mtb); break; case "buttongrid": - var bg = new Controls.ButtonGridForm(); + var bg = new ButtonGridForm(); - await this.NavigateTo(bg); + await NavigateTo(bg); break; case "buttongridfilter": - var bg2 = new Controls.ButtonGridPagingForm(); + var bg2 = new ButtonGridPagingForm(); - await this.NavigateTo(bg2); + await NavigateTo(bg2); break; case "buttongridtags": - var bg3 = new Controls.ButtonGridTagForm(); + var bg3 = new ButtonGridTagForm(); - await this.NavigateTo(bg3); + await NavigateTo(bg3); break; @@ -194,7 +194,7 @@ namespace TelegramBotBaseTest.Tests case "dynamicbuttongrid": - var dg = new Datasources.List(); + var dg = new List(); await NavigateTo(dg); @@ -220,7 +220,7 @@ namespace TelegramBotBaseTest.Tests public override async Task Render(MessageResult message) { - ButtonForm btn = new ButtonForm(); + var btn = new ButtonForm(); btn.AddButtonRow(new ButtonBase("#1 Simple Text", new CallbackData("a", "text").Serialize()), new ButtonBase("#2 Button Test", new CallbackData("a", "buttons").Serialize())); btn.AddButtonRow(new ButtonBase("#3 Progress Bar", new CallbackData("a", "progress").Serialize())); @@ -256,7 +256,7 @@ namespace TelegramBotBaseTest.Tests btn.AddButtonRow(new ButtonBase("#19 Notifications", new CallbackData("a", "notifications").Serialize())); - await this.Device.Send("Choose your test:", btn); + await Device.Send("Choose your test:", btn); } diff --git a/TelegramBotBase.Test/Tests/Navigation/CustomController.cs b/TelegramBotBase.Test/Tests/Navigation/CustomController.cs index e5b7205..5dff6fd 100644 --- a/TelegramBotBase.Test/Tests/Navigation/CustomController.cs +++ b/TelegramBotBase.Test/Tests/Navigation/CustomController.cs @@ -1,13 +1,11 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Form; using TelegramBotBase.Form.Navigation; namespace TelegramBotBaseTest.Tests.Navigation { - class CustomController : NavigationController + internal class CustomController : NavigationController { public CustomController(FormBase form) : base(form) { @@ -17,7 +15,7 @@ namespace TelegramBotBaseTest.Tests.Navigation public override Task PushAsync(FormBase form, params object[] args) { - Console.WriteLine($"Pushes form (Count on stack {this.Index + 1})"); + Console.WriteLine($"Pushes form (Count on stack {Index + 1})"); //Device.Send($"Pushes form (Count on stack {this.Index + 1})"); return base.PushAsync(form, args); @@ -26,7 +24,7 @@ namespace TelegramBotBaseTest.Tests.Navigation public override Task PopAsync() { - Console.WriteLine($"Pops one form (Count on stack {this.Index + 1})"); + Console.WriteLine($"Pops one form (Count on stack {Index + 1})"); //Device.Send($"Pops one form (Count on stack {this.Index + 1})"); return base.PopAsync(); @@ -34,7 +32,7 @@ namespace TelegramBotBaseTest.Tests.Navigation public override Task PopToRootAsync() { - Console.WriteLine($"Moved back to root (Count on stack {this.Index + 1})"); + Console.WriteLine($"Moved back to root (Count on stack {Index + 1})"); //Device.Send($"Moved back to root (Count on stack {this.Index + 1})"); return base.PopToRootAsync(); diff --git a/TelegramBotBase.Test/Tests/Navigation/Form1.cs b/TelegramBotBase.Test/Tests/Navigation/Form1.cs index 29e37fc..b7270a6 100644 --- a/TelegramBotBase.Test/Tests/Navigation/Form1.cs +++ b/TelegramBotBase.Test/Tests/Navigation/Form1.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Threading.Tasks; using Telegram.Bot.Types; using TelegramBotBase.Base; @@ -10,19 +8,19 @@ namespace TelegramBotBaseTest.Tests.Navigation { public class Form1 : FormBase { - Message msg = null; + private Message _msg; public Form1() { - this.Closed += Form1_Closed; + Closed += Form1_Closed; } private async Task Form1_Closed(object sender, EventArgs e) { - if (msg == null) + if (_msg == null) return; - await Device.DeleteMessage(msg); + await Device.DeleteMessage(_msg); } public override async Task Action(MessageResult message) @@ -71,7 +69,7 @@ namespace TelegramBotBaseTest.Tests.Navigation public override async Task Render(MessageResult message) { - if (msg != null) + if (_msg != null) return; var bf = new ButtonForm(); @@ -79,7 +77,7 @@ namespace TelegramBotBaseTest.Tests.Navigation bf.AddButtonRow("Previous page", "previous"); bf.AddButtonRow("Back to root", "root"); - msg = await Device.Send($"Choose your options (Count on stack {NavigationController.Index + 1})", bf); + _msg = await Device.Send($"Choose your options (Count on stack {NavigationController.Index + 1})", bf); } diff --git a/TelegramBotBase.Test/Tests/Navigation/Start.cs b/TelegramBotBase.Test/Tests/Navigation/Start.cs index 1f70b5c..2599ff3 100644 --- a/TelegramBotBase.Test/Tests/Navigation/Start.cs +++ b/TelegramBotBase.Test/Tests/Navigation/Start.cs @@ -1,30 +1,18 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using Telegram.Bot.Types; using TelegramBotBase.Base; using TelegramBotBase.Form; -using TelegramBotBase.Form.Navigation; namespace TelegramBotBaseTest.Tests.Navigation { public class Start : FormBase { + private Message _msg; - Message msg = null; - public Start() + public override Task Load(MessageResult message) { - - } - - - public override async Task Load(MessageResult message) - { - - - + return Task.CompletedTask; } public override async Task Action(MessageResult message) @@ -50,10 +38,10 @@ namespace TelegramBotBaseTest.Tests.Navigation await NavigateTo(nc); - if (msg == null) + if (_msg == null) return; - await Device.DeleteMessage(msg); + await Device.DeleteMessage(_msg); break; @@ -65,10 +53,10 @@ namespace TelegramBotBaseTest.Tests.Navigation await NavigateTo(mn); - if (msg == null) + if (_msg == null) return; - await Device.DeleteMessage(msg); + await Device.DeleteMessage(_msg); break; } @@ -82,7 +70,7 @@ namespace TelegramBotBaseTest.Tests.Navigation bf.AddButtonRow("Yes", "yes"); bf.AddButtonRow("No", "no"); - msg = await Device.Send("Open controller?", bf); + _msg = await Device.Send("Open controller?", bf); } diff --git a/TelegramBotBase.Test/Tests/Notifications/Start.cs b/TelegramBotBase.Test/Tests/Notifications/Start.cs index 9fb96f1..702a9e7 100644 --- a/TelegramBotBase.Test/Tests/Notifications/Start.cs +++ b/TelegramBotBase.Test/Tests/Notifications/Start.cs @@ -1,19 +1,17 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Base; +using TelegramBotBase.Enums; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests.Notifications { public class Start : AutoCleanForm { - bool sent = false; + private bool _sent; public Start() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; + DeleteMode = EDeleteMode.OnLeavingForm; } public override async Task Action(MessageResult message) @@ -46,7 +44,7 @@ namespace TelegramBotBaseTest.Tests.Notifications public override async Task Render(MessageResult message) { - if (sent) + if (_sent) return; var bf = new ButtonForm(); @@ -56,7 +54,7 @@ namespace TelegramBotBaseTest.Tests.Notifications await Device.Send("Choose your test", bf); - sent = true; + _sent = true; } } diff --git a/TelegramBotBase.Test/Tests/ProgressTest.cs b/TelegramBotBase.Test/Tests/ProgressTest.cs index 8b0ea16..0657c82 100644 --- a/TelegramBotBase.Test/Tests/ProgressTest.cs +++ b/TelegramBotBase.Test/Tests/ProgressTest.cs @@ -1,11 +1,9 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading; using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Controls.Inline; +using TelegramBotBase.Enums; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests @@ -15,15 +13,15 @@ namespace TelegramBotBaseTest.Tests public ProgressTest() { - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; - this.Opened += ProgressTest_Opened; - this.Closed += ProgressTest_Closed; + DeleteMode = EDeleteMode.OnLeavingForm; + Opened += ProgressTest_Opened; + Closed += ProgressTest_Closed; } private async Task ProgressTest_Opened(object sender, EventArgs e) { - await this.Device.Send("Welcome to ProgressTest"); + await Device.Send("Welcome to ProgressTest"); } public override async Task Action(MessageResult message) @@ -36,42 +34,52 @@ namespace TelegramBotBaseTest.Tests if (call == null) return; - ProgressBar Bar = null; + ProgressBar bar = null; switch (call.Value) { case "standard": - Bar = new ProgressBar(0, 100, ProgressBar.eProgressStyle.standard); - Bar.Device = this.Device; + bar = new ProgressBar(0, 100, ProgressBar.EProgressStyle.standard) + { + Device = Device + }; break; case "squares": - Bar = new ProgressBar(0, 100, ProgressBar.eProgressStyle.squares); - Bar.Device = this.Device; + bar = new ProgressBar(0, 100, ProgressBar.EProgressStyle.squares) + { + Device = Device + }; break; case "circles": - Bar = new ProgressBar(0, 100, ProgressBar.eProgressStyle.circles); - Bar.Device = this.Device; + bar = new ProgressBar(0, 100, ProgressBar.EProgressStyle.circles) + { + Device = Device + }; break; case "lines": - Bar = new ProgressBar(0, 100, ProgressBar.eProgressStyle.lines); - Bar.Device = this.Device; + bar = new ProgressBar(0, 100, ProgressBar.EProgressStyle.lines) + { + Device = Device + }; break; case "squaredlines": - Bar = new ProgressBar(0, 100, ProgressBar.eProgressStyle.squaredLines); - Bar.Device = this.Device; + bar = new ProgressBar(0, 100, ProgressBar.EProgressStyle.squaredLines) + { + Device = Device + }; break; @@ -79,7 +87,7 @@ namespace TelegramBotBaseTest.Tests var sf = new Menu(); - await this.NavigateTo(sf); + await NavigateTo(sf); return; @@ -91,14 +99,14 @@ namespace TelegramBotBaseTest.Tests //Render Progress bar and show some "example" progress - await Bar.Render(message); + await bar.Render(message); - this.Controls.Add(Bar); + Controls.Add(bar); - for (int i = 0; i <= 100; i++) + for (var i = 0; i <= 100; i++) { - Bar.Value++; - await Bar.Render(message); + bar.Value++; + await bar.Render(message); Thread.Sleep(250); } @@ -109,7 +117,7 @@ namespace TelegramBotBaseTest.Tests public override async Task Render(MessageResult message) { - ButtonForm btn = new ButtonForm(); + var btn = new ButtonForm(); btn.AddButtonRow(new ButtonBase("Standard", new CallbackData("a", "standard").Serialize()), new ButtonBase("Squares", new CallbackData("a", "squares").Serialize())); btn.AddButtonRow(new ButtonBase("Circles", new CallbackData("a", "circles").Serialize()), new ButtonBase("Lines", new CallbackData("a", "lines").Serialize())); @@ -118,12 +126,12 @@ namespace TelegramBotBaseTest.Tests btn.AddButtonRow(new ButtonBase("Back to start", new CallbackData("a", "start").Serialize())); - await this.Device.Send("Choose your progress bar:", btn); + await Device.Send("Choose your progress bar:", btn); } private async Task ProgressTest_Closed(object sender, EventArgs e) { - await this.Device.Send("Ciao from ProgressTest"); + await Device.Send("Ciao from ProgressTest"); } } diff --git a/TelegramBotBase.Test/Tests/Register/PerForm.cs b/TelegramBotBase.Test/Tests/Register/PerForm.cs index b66334c..ab703f7 100644 --- a/TelegramBotBase.Test/Tests/Register/PerForm.cs +++ b/TelegramBotBase.Test/Tests/Register/PerForm.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -10,38 +6,39 @@ namespace TelegramBotBaseTest.Tests.Register { public class PerForm : AutoCleanForm { - public String EMail { get; set; } + public string EMail { get; set; } - public String Firstname { get; set; } + public string Firstname { get; set; } - public String Lastname { get; set; } + public string Lastname { get; set; } - public async override Task Load(MessageResult message) + public override Task Load(MessageResult message) { if (message.MessageText.Trim() == "") - return; + return Task.CompletedTask; - if (this.Firstname == null) + if (Firstname == null) { - this.Firstname = message.MessageText; - return; + Firstname = message.MessageText; + return Task.CompletedTask; } - if (this.Lastname == null) + if (Lastname == null) { - this.Lastname = message.MessageText; - return; + Lastname = message.MessageText; + return Task.CompletedTask; } - if (this.EMail == null) + if (EMail == null) { - this.EMail = message.MessageText; - return; + EMail = message.MessageText; + return Task.CompletedTask; } + return Task.CompletedTask; } - public async override Task Action(MessageResult message) + public override async Task Action(MessageResult message) { var call = message.GetData(); @@ -56,7 +53,7 @@ namespace TelegramBotBaseTest.Tests.Register var start = new Start(); - await this.NavigateTo(start); + await NavigateTo(start); break; @@ -65,37 +62,37 @@ namespace TelegramBotBaseTest.Tests.Register } - public async override Task Render(MessageResult message) + public override async Task Render(MessageResult message) { - if (this.Firstname == null) + if (Firstname == null) { - await this.Device.Send("Please sent your firstname:"); + await Device.Send("Please sent your firstname:"); return; } - if (this.Lastname == null) + if (Lastname == null) { - await this.Device.Send("Please sent your lastname:"); + await Device.Send("Please sent your lastname:"); return; } - if (this.EMail == null) + if (EMail == null) { - await this.Device.Send("Please sent your email address:"); + await Device.Send("Please sent your email address:"); return; } - String s = ""; + var s = ""; - s += "Firstname: " + this.Firstname + "\r\n"; - s += "Lastname: " + this.Lastname + "\r\n"; - s += "E-Mail: " + this.EMail + "\r\n"; + s += "Firstname: " + Firstname + "\r\n"; + s += "Lastname: " + Lastname + "\r\n"; + s += "E-Mail: " + EMail + "\r\n"; - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Back", new CallbackData("a", "back").Serialize())); - await this.Device.Send("Your details:\r\n" + s, bf); + await Device.Send("Your details:\r\n" + s, bf); } diff --git a/TelegramBotBase.Test/Tests/Register/PerStep.cs b/TelegramBotBase.Test/Tests/Register/PerStep.cs index afc709a..b31779a 100644 --- a/TelegramBotBase.Test/Tests/Register/PerStep.cs +++ b/TelegramBotBase.Test/Tests/Register/PerStep.cs @@ -1,17 +1,14 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; +using TelegramBotBaseTest.Tests.Register.Steps; namespace TelegramBotBaseTest.Tests.Register { public class PerStep: AutoCleanForm { - public async override Task Action(MessageResult message) + public override async Task Action(MessageResult message) { await message.ConfirmAction(); @@ -19,29 +16,29 @@ namespace TelegramBotBaseTest.Tests.Register { case "start": - var step1 = new Steps.Step1(); + var step1 = new Step1(); - await this.NavigateTo(step1); + await NavigateTo(step1); break; case "back": var start = new Start(); - await this.NavigateTo(start); + await NavigateTo(start); break; } } - public async override Task Render(MessageResult message) + public override async Task Render(MessageResult message) { - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Goto Step 1", "start")); bf.AddButtonRow(new ButtonBase("Back", "back")); - await this.Device.Send("Register Steps", bf); + await Device.Send("Register Steps", bf); } } } diff --git a/TelegramBotBase.Test/Tests/Register/Start.cs b/TelegramBotBase.Test/Tests/Register/Start.cs index 73ed856..a37c5c7 100644 --- a/TelegramBotBase.Test/Tests/Register/Start.cs +++ b/TelegramBotBase.Test/Tests/Register/Start.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -10,12 +6,7 @@ namespace TelegramBotBaseTest.Tests.Register { public class Start : AutoCleanForm { - public Start() - { - - } - - public async override Task Action(MessageResult message) + public override async Task Action(MessageResult message) { var call = message.GetData(); @@ -31,21 +22,21 @@ namespace TelegramBotBaseTest.Tests.Register var form = new PerForm(); - await this.NavigateTo(form); + await NavigateTo(form); break; case "step": var step = new PerStep(); - await this.NavigateTo(step); + await NavigateTo(step); break; case "backtodashboard": - var start = new Tests.Menu(); + var start = new Menu(); - await this.NavigateTo(start); + await NavigateTo(start); break; } @@ -53,16 +44,16 @@ namespace TelegramBotBaseTest.Tests.Register } - public async override Task Render(MessageResult message) + public override async Task Render(MessageResult message) { - ButtonForm btn = new ButtonForm(); + var btn = new ButtonForm(); btn.AddButtonRow(new ButtonBase("#4.1 Per Form", new CallbackData("a", "form").Serialize())); btn.AddButtonRow(new ButtonBase("#4.2 Per Step", new CallbackData("a", "step").Serialize())); btn.AddButtonRow(new ButtonBase("Back", new CallbackData("a", "backtodashboard").Serialize())); - await this.Device.Send("Choose your test:", btn); + await Device.Send("Choose your test:", btn); } diff --git a/TelegramBotBase.Test/Tests/Register/Steps/Data.cs b/TelegramBotBase.Test/Tests/Register/Steps/Data.cs index 1fe077b..fab243b 100644 --- a/TelegramBotBase.Test/Tests/Register/Steps/Data.cs +++ b/TelegramBotBase.Test/Tests/Register/Steps/Data.cs @@ -1,18 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TelegramBotBaseTest.Tests.Register.Steps +namespace TelegramBotBaseTest.Tests.Register.Steps { public class Data { - public String EMail { get; set; } + public string EMail { get; set; } - public String Firstname { get; set; } + public string Firstname { get; set; } - public String Lastname { get; set; } + public string Lastname { get; set; } } } diff --git a/TelegramBotBase.Test/Tests/Register/Steps/Step1.cs b/TelegramBotBase.Test/Tests/Register/Steps/Step1.cs index 1952a1b..0b0616d 100644 --- a/TelegramBotBase.Test/Tests/Register/Steps/Step1.cs +++ b/TelegramBotBase.Test/Tests/Register/Steps/Step1.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Args; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -15,35 +11,38 @@ namespace TelegramBotBaseTest.Tests.Register.Steps public Step1() { - this.Init += Step1_Init; + Init += Step1_Init; } - private async Task Step1_Init(object sender, InitEventArgs e) + private Task Step1_Init(object sender, InitEventArgs e) { - this.UserData = new Data(); + UserData = new Data(); + return Task.CompletedTask; } - public async override Task Load(MessageResult message) + public override Task Load(MessageResult message) { if (message.Handled) - return; + return Task.CompletedTask; if (message.MessageText.Trim() == "") - return; + return Task.CompletedTask; - if (this.UserData.Firstname == null) + if (UserData.Firstname == null) { - this.UserData.Firstname = message.MessageText; - return; + UserData.Firstname = message.MessageText; + return Task.CompletedTask; } + + return Task.CompletedTask; } - public async override Task Render(MessageResult message) + public override async Task Render(MessageResult message) { - if (this.UserData.Firstname == null) + if (UserData.Firstname == null) { - await this.Device.Send("Please sent your firstname:"); + await Device.Send("Please sent your firstname:"); return; } @@ -51,9 +50,9 @@ namespace TelegramBotBaseTest.Tests.Register.Steps var step2 = new Step2(); - step2.UserData = this.UserData; + step2.UserData = UserData; - await this.NavigateTo(step2); + await NavigateTo(step2); } } diff --git a/TelegramBotBase.Test/Tests/Register/Steps/Step2.cs b/TelegramBotBase.Test/Tests/Register/Steps/Step2.cs index 6ca2362..5a954f4 100644 --- a/TelegramBotBase.Test/Tests/Register/Steps/Step2.cs +++ b/TelegramBotBase.Test/Tests/Register/Steps/Step2.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -13,27 +9,29 @@ namespace TelegramBotBaseTest.Tests.Register.Steps public Data UserData { get; set; } - public async override Task Load(MessageResult message) + public override Task Load(MessageResult message) { if (message.Handled) - return; + return Task.CompletedTask; if (message.MessageText.Trim() == "") - return; + return Task.CompletedTask; - if (this.UserData.Lastname == null) + if (UserData.Lastname == null) { - this.UserData.Lastname = message.MessageText; - return; + UserData.Lastname = message.MessageText; + return Task.CompletedTask; } + + return Task.CompletedTask; } - public async override Task Render(MessageResult message) + public override async Task Render(MessageResult message) { - if (this.UserData.Lastname == null) + if (UserData.Lastname == null) { - await this.Device.Send("Please sent your lastname:"); + await Device.Send("Please sent your lastname:"); return; } @@ -41,9 +39,9 @@ namespace TelegramBotBaseTest.Tests.Register.Steps var step3 = new Step3(); - step3.UserData = this.UserData; + step3.UserData = UserData; - await this.NavigateTo(step3); + await NavigateTo(step3); } } diff --git a/TelegramBotBase.Test/Tests/Register/Steps/Step3.cs b/TelegramBotBase.Test/Tests/Register/Steps/Step3.cs index 038a9a2..1f22924 100644 --- a/TelegramBotBase.Test/Tests/Register/Steps/Step3.cs +++ b/TelegramBotBase.Test/Tests/Register/Steps/Step3.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -12,22 +8,24 @@ namespace TelegramBotBaseTest.Tests.Register.Steps { public Data UserData { get; set; } - public async override Task Load(MessageResult message) + public override Task Load(MessageResult message) { if (message.Handled) - return; + return Task.CompletedTask; if (message.MessageText.Trim() == "") - return; + return Task.CompletedTask; - if (this.UserData.EMail == null) + if (UserData.EMail == null) { - this.UserData.EMail = message.MessageText; - return; + UserData.EMail = message.MessageText; + return Task.CompletedTask; } + + return Task.CompletedTask; } - public async override Task Action(MessageResult message) + public override async Task Action(MessageResult message) { await message.ConfirmAction(); @@ -37,7 +35,7 @@ namespace TelegramBotBaseTest.Tests.Register.Steps var start = new Start(); - await this.NavigateTo(start); + await NavigateTo(start); break; @@ -45,26 +43,26 @@ namespace TelegramBotBaseTest.Tests.Register.Steps } - public async override Task Render(MessageResult message) + public override async Task Render(MessageResult message) { - if (this.UserData.EMail == null) + if (UserData.EMail == null) { - await this.Device.Send("Please sent your email:"); + await Device.Send("Please sent your email:"); return; } message.Handled = true; - String s = ""; + var s = ""; - s += "Firstname: " + this.UserData.Firstname + "\r\n"; - s += "Lastname: " + this.UserData.Lastname + "\r\n"; - s += "E-Mail: " + this.UserData.EMail + "\r\n"; + s += "Firstname: " + UserData.Firstname + "\r\n"; + s += "Lastname: " + UserData.Lastname + "\r\n"; + s += "E-Mail: " + UserData.EMail + "\r\n"; - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase("Back", "back")); - await this.Device.Send("Your details:\r\n" + s, bf); + await Device.Send("Your details:\r\n" + s, bf); } } diff --git a/TelegramBotBase.Test/Tests/SimpleForm.cs b/TelegramBotBase.Test/Tests/SimpleForm.cs index 0830cda..4f5c5fa 100644 --- a/TelegramBotBase.Test/Tests/SimpleForm.cs +++ b/TelegramBotBase.Test/Tests/SimpleForm.cs @@ -1,9 +1,7 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Base; +using TelegramBotBase.Enums; using TelegramBotBase.Form; namespace TelegramBotBaseTest.Tests @@ -13,15 +11,15 @@ namespace TelegramBotBaseTest.Tests public SimpleForm() { - this.DeleteSide = TelegramBotBase.Enums.eDeleteSide.Both; - this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm; + DeleteSide = EDeleteSide.Both; + DeleteMode = EDeleteMode.OnLeavingForm; - this.Opened += SimpleForm_Opened; + Opened += SimpleForm_Opened; } private async Task SimpleForm_Opened(object sender, EventArgs e) { - await this.Device.Send("Hello world! (send 'back' to get back to Start)\r\nOr\r\nhi, hello, maybe, bye and ciao"); + await Device.Send("Hello world! (send 'back' to get back to Start)\r\nOr\r\nhi, hello, maybe, bye and ciao"); } public override async Task Load(MessageResult message) @@ -36,13 +34,13 @@ namespace TelegramBotBaseTest.Tests case "hi": //Send him a simple message - await this.Device.Send("Hello you there !"); + await Device.Send("Hello you there !"); break; case "maybe": //Send him a simple message and reply to the one of himself - await this.Device.Send("Maybe what?", replyTo: messageId); + await Device.Send("Maybe what?", replyTo: messageId); break; @@ -50,14 +48,14 @@ namespace TelegramBotBaseTest.Tests case "ciao": //Send him a simple message - await this.Device.Send("Ok, take care !"); + await Device.Send("Ok, take care !"); break; case "back": var st = new Menu(); - await this.NavigateTo(st); + await NavigateTo(st); break; } diff --git a/TelegramBotBase.Test/Tests/Start.cs b/TelegramBotBase.Test/Tests/Start.cs index e56642f..5933011 100644 --- a/TelegramBotBase.Test/Tests/Start.cs +++ b/TelegramBotBase.Test/Tests/Start.cs @@ -1,9 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; +using TelegramBotBaseTest.Tests.Groups; namespace TelegramBotBaseTest.Tests { @@ -12,7 +10,7 @@ namespace TelegramBotBaseTest.Tests public override async Task Open(MessageResult e) { var st = new Menu(); - await this.NavigateTo(st); + await NavigateTo(st); return true; } @@ -20,8 +18,8 @@ namespace TelegramBotBaseTest.Tests public override async Task OpenGroup(MessageResult e) { - var st = new Groups.LinkReplaceTest(); - await this.NavigateTo(st); + var st = new LinkReplaceTest(); + await NavigateTo(st); return true; } diff --git a/TelegramBotBase.Test/Tests/TestForm.cs b/TelegramBotBase.Test/Tests/TestForm.cs index 8994465..e248414 100644 --- a/TelegramBotBase.Test/Tests/TestForm.cs +++ b/TelegramBotBase.Test/Tests/TestForm.cs @@ -1,9 +1,5 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading.Tasks; -using Telegram.Bot.Types; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -11,24 +7,22 @@ namespace TelegramBotBaseTest.Tests { public class TestForm : FormBase { - - - String LastMessage { get; set; } + private string LastMessage { get; set; } public TestForm() { - this.Opened += TestForm_Opened; - this.Closed += TestForm_Closed; + Opened += TestForm_Opened; + Closed += TestForm_Closed; } private async Task TestForm_Opened(object sender, EventArgs e) { - await this.Device.Send("Welcome to Form 1"); + await Device.Send("Welcome to Form 1"); } private async Task TestForm_Closed(object sender, EventArgs e) { - await this.Device.Send("Ciao from Form 1"); + await Device.Send("Ciao from Form 1"); } @@ -45,7 +39,7 @@ namespace TelegramBotBaseTest.Tests var tf = new TestForm2(); - await this.NavigateTo(tf); + await NavigateTo(tf); break; @@ -54,7 +48,7 @@ namespace TelegramBotBaseTest.Tests if (message.UpdateData == null) return; - this.LastMessage = message.Message.Text; + LastMessage = message.Message.Text; break; } @@ -68,7 +62,7 @@ namespace TelegramBotBaseTest.Tests if (message.Command == "reply") { - await this.Device.Send("Last message: " + this.LastMessage); + await Device.Send("Last message: " + LastMessage); } diff --git a/TelegramBotBase.Test/Tests/TestForm2.cs b/TelegramBotBase.Test/Tests/TestForm2.cs index 089430e..93cced0 100644 --- a/TelegramBotBase.Test/Tests/TestForm2.cs +++ b/TelegramBotBase.Test/Tests/TestForm2.cs @@ -1,12 +1,7 @@ using System; -using System.Collections.Generic; using System.Drawing; -using System.Drawing.Imaging; -using System.Linq; -using System.Text; using System.Threading.Tasks; -using Telegram.Bot.Types; -using Telegram.Bot.Types.ReplyMarkups; +using Telegram.Bot.Types.Enums; using TelegramBotBase.Base; using TelegramBotBase.Extensions.Images; using TelegramBotBase.Form; @@ -19,18 +14,18 @@ namespace TelegramBotBaseTest.Tests public TestForm2() { - this.Opened += TestForm2_Opened; - this.Closed += TestForm2_Closed; + Opened += TestForm2_Opened; + Closed += TestForm2_Closed; } private async Task TestForm2_Opened(object sender, EventArgs e) { - await this.Device.Send("Welcome to Form 2"); + await Device.Send("Welcome to Form 2"); } private async Task TestForm2_Closed(object sender, EventArgs e) { - await this.Device.Send("Ciao from Form 2"); + await Device.Send("Ciao from Form 2"); } @@ -51,23 +46,23 @@ namespace TelegramBotBaseTest.Tests var tf = new TestForm(); - await this.NavigateTo(tf); + await NavigateTo(tf); } else if (call.Value == "alert") { - AlertDialog ad = new AlertDialog("This is a message", "Ok"); + var ad = new AlertDialog("This is a message", "Ok"); ad.ButtonClicked += async (s, en) => { var fto = new TestForm2(); - await this.NavigateTo(fto); + await NavigateTo(fto); }; - await this.NavigateTo(ad); + await NavigateTo(ad); } else if (call.Value == "confirm") { - ConfirmDialog pd = new ConfirmDialog("Please confirm", new ButtonBase("Ok", "ok"), new ButtonBase("Cancel", "cancel")); + var pd = new ConfirmDialog("Please confirm", new ButtonBase("Ok", "ok"), new ButtonBase("Cancel", "cancel")); pd.ButtonClicked += async (s, en) => { @@ -76,18 +71,18 @@ namespace TelegramBotBaseTest.Tests await pd.NavigateTo(tf); }; - await this.NavigateTo(pd); + await NavigateTo(pd); } else if (call.Value == "prompt") { - PromptDialog pd = new PromptDialog("Please tell me your name ?"); + var pd = new PromptDialog("Please tell me your name ?"); pd.Completed += async (s, en) => { - await this.Device.Send("Hello " + pd.Value); + await Device.Send("Hello " + pd.Value); }; - await this.OpenModal(pd); + await OpenModal(pd); } @@ -96,8 +91,8 @@ namespace TelegramBotBaseTest.Tests public override async Task Render(MessageResult message) { - Bitmap bmp = new Bitmap(800, 600); - using (Graphics g = Graphics.FromImage(bmp)) + var bmp = new Bitmap(800, 600); + using (var g = Graphics.FromImage(bmp)) { g.FillRectangle(Brushes.White, 0, 0, bmp.Width, bmp.Height); @@ -106,9 +101,9 @@ namespace TelegramBotBaseTest.Tests } - await this.Device.SetAction(Telegram.Bot.Types.Enums.ChatAction.UploadPhoto); + await Device.SetAction(ChatAction.UploadPhoto); - ButtonForm btn = new ButtonForm(); + var btn = new ButtonForm(); //btn.AddButtonRow(new ButtonBase("Zum Testformular 1", CallbackData.Create("navigate", "testform1")), new ButtonBase("Zum Testformular 1", CallbackData.Create("navigate", "testform1"))); @@ -119,7 +114,7 @@ namespace TelegramBotBaseTest.Tests btn.AddButtonRow(new ButtonBase("Request Prompt", CallbackData.Create("navigate", "prompt"))); - await this.Device.SendPhoto(bmp, "Test", "", btn); + await Device.SendPhoto(bmp, "Test", "", btn); } diff --git a/TelegramBotBase/Args/BotCommandEventArgs.cs b/TelegramBotBase/Args/BotCommandEventArgs.cs index ed9e62c..3f3d545 100644 --- a/TelegramBotBase/Args/BotCommandEventArgs.cs +++ b/TelegramBotBase/Args/BotCommandEventArgs.cs @@ -1,8 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Telegram.Bot.Types; using TelegramBotBase.Sessions; @@ -13,9 +10,9 @@ namespace TelegramBotBase.Args /// public class BotCommandEventArgs : EventArgs { - public String Command { get; set; } + public string Command { get; set; } - public List Parameters { get; set; } + public List Parameters { get; set; } public long DeviceId { get; set; } @@ -32,13 +29,13 @@ namespace TelegramBotBase.Args } - public BotCommandEventArgs(String Command, List Parameters, Message Message, long DeviceId, DeviceSession Device) + public BotCommandEventArgs(string command, List parameters, Message message, long deviceId, DeviceSession device) { - this.Command = Command; - this.Parameters = Parameters; - this.OriginalMessage = Message; - this.DeviceId = DeviceId; - this.Device = Device; + this.Command = command; + this.Parameters = parameters; + OriginalMessage = message; + this.DeviceId = deviceId; + this.Device = device; } } diff --git a/TelegramBotBase/Args/ButtonClickedEventArgs.cs b/TelegramBotBase/Args/ButtonClickedEventArgs.cs index ef9ef71..2227abd 100644 --- a/TelegramBotBase/Args/ButtonClickedEventArgs.cs +++ b/TelegramBotBase/Args/ButtonClickedEventArgs.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using TelegramBotBase.Controls.Hybrid; using TelegramBotBase.Form; @@ -29,21 +25,21 @@ namespace TelegramBotBase.Args public ButtonClickedEventArgs(ButtonBase button) { - this.Button = button; - this.Index = -1; + Button = button; + Index = -1; } - public ButtonClickedEventArgs(ButtonBase button, int Index) + public ButtonClickedEventArgs(ButtonBase button, int index) { - this.Button = button; - this.Index = Index; + Button = button; + this.Index = index; } - public ButtonClickedEventArgs(ButtonBase button, int Index, ButtonRow row) + public ButtonClickedEventArgs(ButtonBase button, int index, ButtonRow row) { - this.Button = button; - this.Index = Index; - this.Row = row; + Button = button; + this.Index = index; + Row = row; } } } diff --git a/TelegramBotBase/Args/CheckedChangedEventArgs.cs b/TelegramBotBase/Args/CheckedChangedEventArgs.cs index 4750334..5ec61d3 100644 --- a/TelegramBotBase/Args/CheckedChangedEventArgs.cs +++ b/TelegramBotBase/Args/CheckedChangedEventArgs.cs @@ -1,15 +1,12 @@ using System; -using System.Collections.Generic; -using System.Text; using TelegramBotBase.Controls.Hybrid; -using TelegramBotBase.Form; namespace TelegramBotBase.Args { public class CheckedChangedEventArgs : EventArgs { /// - /// Contains the index of the row where the button is inside. + /// Contains the index of the row where the button is inside. /// Contains -1 when it is a layout button or not found. /// public int Index { get; set; } @@ -32,11 +29,11 @@ namespace TelegramBotBase.Args } - public CheckedChangedEventArgs(ButtonRow row, int Index, bool Checked) + public CheckedChangedEventArgs(ButtonRow row, int index, bool @checked) { - this.Row = row; - this.Index = Index; - this.Checked = Checked; + Row = row; + this.Index = index; + this.Checked = @checked; } diff --git a/TelegramBotBase/Args/GroupChangedEventArgs.cs b/TelegramBotBase/Args/GroupChangedEventArgs.cs index c1668a0..5493f9d 100644 --- a/TelegramBotBase/Args/GroupChangedEventArgs.cs +++ b/TelegramBotBase/Args/GroupChangedEventArgs.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; using Telegram.Bot.Types.Enums; using TelegramBotBase.Base; @@ -14,8 +12,8 @@ namespace TelegramBotBase.Args public GroupChangedEventArgs(MessageType type, MessageResult message) { - this.Type = type; - this.OriginalMessage = message; + Type = type; + OriginalMessage = message; } diff --git a/TelegramBotBase/Args/InitEventArgs.cs b/TelegramBotBase/Args/InitEventArgs.cs index ec30db8..360aaa1 100644 --- a/TelegramBotBase/Args/InitEventArgs.cs +++ b/TelegramBotBase/Args/InitEventArgs.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace TelegramBotBase.Args { @@ -12,7 +8,7 @@ namespace TelegramBotBase.Args public InitEventArgs(params object[] args) { - this.Args = args; + Args = args; } } } diff --git a/TelegramBotBase/Args/LoadStateEventArgs.cs b/TelegramBotBase/Args/LoadStateEventArgs.cs index 7e79cb8..06834c7 100644 --- a/TelegramBotBase/Args/LoadStateEventArgs.cs +++ b/TelegramBotBase/Args/LoadStateEventArgs.cs @@ -1,42 +1,34 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Text; namespace TelegramBotBase.Args { public class LoadStateEventArgs { - public Dictionary Values { get; set; } + public Dictionary Values { get; set; } public LoadStateEventArgs() { Values = new Dictionary(); } - public List Keys - { - get - { - return Values.Keys.ToList(); - } - } + public List Keys => Values.Keys.ToList(); - public String Get(String key) + public string Get(string key) { return Values[key].ToString(); } - public int GetInt(String key) + public int GetInt(string key) { - int i = 0; + var i = 0; if (int.TryParse(Values[key].ToString(), out i)) return i; return 0; } - public double GetDouble(String key) + public double GetDouble(string key) { double d = 0; if (double.TryParse(Values[key].ToString(), out d)) @@ -45,16 +37,16 @@ namespace TelegramBotBase.Args return 0; } - public bool GetBool(String key) + public bool GetBool(string key) { - bool b = false; + var b = false; if (bool.TryParse(Values[key].ToString(), out b)) return b; return false; } - public object GetObject(String key) + public object GetObject(string key) { return Values[key]; } diff --git a/TelegramBotBase/Args/MemberChangeEventArgs.cs b/TelegramBotBase/Args/MemberChangeEventArgs.cs index bc07add..34519a9 100644 --- a/TelegramBotBase/Args/MemberChangeEventArgs.cs +++ b/TelegramBotBase/Args/MemberChangeEventArgs.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; using TelegramBotBase.Base; @@ -18,15 +17,15 @@ namespace TelegramBotBase.Args public MemberChangeEventArgs() { - this.Members = new List(); + Members = new List(); } public MemberChangeEventArgs(MessageType type, MessageResult result, params User[] members) { - this.Type = type; - this.Result = result; - this.Members = members.ToList(); + Type = type; + Result = result; + Members = members.ToList(); } diff --git a/TelegramBotBase/Args/MessageDeletedEventArgs.cs b/TelegramBotBase/Args/MessageDeletedEventArgs.cs index 69d262b..bab0af6 100644 --- a/TelegramBotBase/Args/MessageDeletedEventArgs.cs +++ b/TelegramBotBase/Args/MessageDeletedEventArgs.cs @@ -1,11 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Telegram.Bot.Types; - -namespace TelegramBotBase.Args +namespace TelegramBotBase.Args { public class MessageDeletedEventArgs { @@ -16,7 +9,7 @@ namespace TelegramBotBase.Args public MessageDeletedEventArgs(int messageId) { - this.MessageId = messageId; + MessageId = messageId; } } diff --git a/TelegramBotBase/Args/MessageIncomeEventArgs.cs b/TelegramBotBase/Args/MessageIncomeEventArgs.cs index 38bad2a..5e6de76 100644 --- a/TelegramBotBase/Args/MessageIncomeEventArgs.cs +++ b/TelegramBotBase/Args/MessageIncomeEventArgs.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using TelegramBotBase.Sessions; namespace TelegramBotBase.Base @@ -16,11 +12,11 @@ namespace TelegramBotBase.Base public MessageResult Message { get; set; } - public MessageIncomeEventArgs(long DeviceId, DeviceSession Device, MessageResult message) + public MessageIncomeEventArgs(long deviceId, DeviceSession device, MessageResult message) { - this.DeviceId = DeviceId; - this.Device = Device; - this.Message = message; + this.DeviceId = deviceId; + this.Device = device; + Message = message; } diff --git a/TelegramBotBase/Args/MessageReceivedEventArgs.cs b/TelegramBotBase/Args/MessageReceivedEventArgs.cs index 397c6af..497782f 100644 --- a/TelegramBotBase/Args/MessageReceivedEventArgs.cs +++ b/TelegramBotBase/Args/MessageReceivedEventArgs.cs @@ -1,27 +1,16 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Telegram.Bot.Types; +using Telegram.Bot.Types; namespace TelegramBotBase.Args { public class MessageReceivedEventArgs { - public int MessageId - { - get - { - return this.Message.MessageId; - } - } + public int MessageId => Message.MessageId; public Message Message { get; set; } public MessageReceivedEventArgs(Message m) { - this.Message = m; + Message = m; } } diff --git a/TelegramBotBase/Args/MessageSentEventArgs.cs b/TelegramBotBase/Args/MessageSentEventArgs.cs index 9cfe651..a776207 100644 --- a/TelegramBotBase/Args/MessageSentEventArgs.cs +++ b/TelegramBotBase/Args/MessageSentEventArgs.cs @@ -1,21 +1,11 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Telegram.Bot.Types; namespace TelegramBotBase.Args { public class MessageSentEventArgs : EventArgs { - public int MessageId - { - get - { - return this.Message.MessageId; - } - } + public int MessageId => Message.MessageId; public Message Message { get; set; } @@ -25,10 +15,10 @@ namespace TelegramBotBase.Args public Type Origin { get; set; } - public MessageSentEventArgs(Message message, Type Origin) + public MessageSentEventArgs(Message message, Type origin) { - this.Message = message; - this.Origin = Origin; + Message = message; + this.Origin = origin; } diff --git a/TelegramBotBase/Args/PromptDialogCompletedEventArgs.cs b/TelegramBotBase/Args/PromptDialogCompletedEventArgs.cs index 14f9cf8..b0b7e04 100644 --- a/TelegramBotBase/Args/PromptDialogCompletedEventArgs.cs +++ b/TelegramBotBase/Args/PromptDialogCompletedEventArgs.cs @@ -1,14 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace TelegramBotBase.Args +namespace TelegramBotBase.Args { public class PromptDialogCompletedEventArgs { public object Tag { get; set; } - public String Value { get; set; } + public string Value { get; set; } } } diff --git a/TelegramBotBase/Args/RenderViewEventArgs.cs b/TelegramBotBase/Args/RenderViewEventArgs.cs index a733291..82df8e5 100644 --- a/TelegramBotBase/Args/RenderViewEventArgs.cs +++ b/TelegramBotBase/Args/RenderViewEventArgs.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace TelegramBotBase.Args { @@ -9,10 +7,10 @@ namespace TelegramBotBase.Args public int CurrentView { get; set; } - public RenderViewEventArgs(int ViewIndex) + public RenderViewEventArgs(int viewIndex) { - CurrentView = ViewIndex; + CurrentView = viewIndex; } diff --git a/TelegramBotBase/Args/SaveStateEventArgs.cs b/TelegramBotBase/Args/SaveStateEventArgs.cs index 4b26dea..bfc3984 100644 --- a/TelegramBotBase/Args/SaveStateEventArgs.cs +++ b/TelegramBotBase/Args/SaveStateEventArgs.cs @@ -1,38 +1,36 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Collections.Generic; namespace TelegramBotBase.Args { public class SaveStateEventArgs { - public Dictionary Values { get; set; } + public Dictionary Values { get; set; } public SaveStateEventArgs() { Values = new Dictionary(); } - public void Set(String key, String value) + public void Set(string key, string value) { Values[key] = value; } - public void SetInt(String key, int value) + public void SetInt(string key, int value) { Values[key] = value; } - public void SetBool(String key, bool value) + public void SetBool(string key, bool value) { Values[key] = value; } - public void SetDouble(String key, double value) + public void SetDouble(string key, double value) { Values[key] = value; } - public void SetObject(String key, object value) + public void SetObject(string key, object value) { Values[key] = value; } diff --git a/TelegramBotBase/Args/SaveStatesEventArgs.cs b/TelegramBotBase/Args/SaveStatesEventArgs.cs index 2d6a3e5..e2d44f6 100644 --- a/TelegramBotBase/Args/SaveStatesEventArgs.cs +++ b/TelegramBotBase/Args/SaveStatesEventArgs.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using TelegramBotBase.Base; -using TelegramBotBase.Sessions; +using TelegramBotBase.Base; namespace TelegramBotBase.Args { @@ -14,7 +9,7 @@ namespace TelegramBotBase.Args public SaveStatesEventArgs(StateContainer states) { - this.States = states; + States = states; } } } diff --git a/TelegramBotBase/Args/SessionBeginEventArgs.cs b/TelegramBotBase/Args/SessionBeginEventArgs.cs index 778b5df..9187f0b 100644 --- a/TelegramBotBase/Args/SessionBeginEventArgs.cs +++ b/TelegramBotBase/Args/SessionBeginEventArgs.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using TelegramBotBase.Sessions; namespace TelegramBotBase.Base @@ -13,10 +9,10 @@ namespace TelegramBotBase.Base public DeviceSession Device { get; set; } - public SessionBeginEventArgs(long DeviceId, DeviceSession Device) + public SessionBeginEventArgs(long deviceId, DeviceSession device) { - this.DeviceId = DeviceId; - this.Device = Device; + this.DeviceId = deviceId; + this.Device = device; } } } diff --git a/TelegramBotBase/Args/SystemExceptionEventArgs.cs b/TelegramBotBase/Args/SystemExceptionEventArgs.cs index 229fa91..cc19a62 100644 --- a/TelegramBotBase/Args/SystemExceptionEventArgs.cs +++ b/TelegramBotBase/Args/SystemExceptionEventArgs.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using TelegramBotBase.Sessions; namespace TelegramBotBase.Args @@ -10,7 +6,7 @@ namespace TelegramBotBase.Args public class SystemExceptionEventArgs : EventArgs { - public String Command { get; set; } + public string Command { get; set; } public long DeviceId { get; set; } @@ -24,12 +20,12 @@ namespace TelegramBotBase.Args } - public SystemExceptionEventArgs(String Command, long DeviceId, DeviceSession Device, Exception error) + public SystemExceptionEventArgs(string command, long deviceId, DeviceSession device, Exception error) { - this.Command = Command; - this.DeviceId = DeviceId; - this.Device = Device; - this.Error = error; + this.Command = command; + this.DeviceId = deviceId; + this.Device = device; + Error = error; } } diff --git a/TelegramBotBase/Args/UnhandledCallEventArgs.cs b/TelegramBotBase/Args/UnhandledCallEventArgs.cs index e839e2d..279170f 100644 --- a/TelegramBotBase/Args/UnhandledCallEventArgs.cs +++ b/TelegramBotBase/Args/UnhandledCallEventArgs.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Telegram.Bot.Types; using TelegramBotBase.Sessions; @@ -10,13 +6,13 @@ namespace TelegramBotBase.Args { public class UnhandledCallEventArgs : EventArgs { - public String Command { get; set; } + public string Command { get; set; } public long DeviceId { get; set; } public DeviceSession Device {get;set;} - public String RawData { get; set; } + public string RawData { get; set; } public int MessageId { get; set; } @@ -27,18 +23,18 @@ namespace TelegramBotBase.Args public UnhandledCallEventArgs() { - this.Handled = false; + Handled = false; } - public UnhandledCallEventArgs(String Command,String RawData, long DeviceId, int MessageId, Message message, DeviceSession Device) : this() + public UnhandledCallEventArgs(string command,string rawData, long deviceId, int messageId, Message message, DeviceSession device) : this() { - this.Command = Command; - this.RawData = RawData; - this.DeviceId = DeviceId; - this.MessageId = MessageId; - this.Message = message; - this.Device = Device; + this.Command = command; + this.RawData = rawData; + this.DeviceId = deviceId; + this.MessageId = messageId; + Message = message; + this.Device = device; } } diff --git a/TelegramBotBase/Attributes/IgnoreState.cs b/TelegramBotBase/Attributes/IgnoreState.cs index e1c5543..72c4381 100644 --- a/TelegramBotBase/Attributes/IgnoreState.cs +++ b/TelegramBotBase/Attributes/IgnoreState.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace TelegramBotBase.Attributes { diff --git a/TelegramBotBase/Attributes/SaveState.cs b/TelegramBotBase/Attributes/SaveState.cs index a07fe6b..9b9190b 100644 --- a/TelegramBotBase/Attributes/SaveState.cs +++ b/TelegramBotBase/Attributes/SaveState.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace TelegramBotBase.Attributes { @@ -9,7 +7,7 @@ namespace TelegramBotBase.Attributes /// public class SaveState : Attribute { - public String Key { get; set; } + public string Key { get; set; } } } diff --git a/TelegramBotBase/Base/Async.cs b/TelegramBotBase/Base/Async.cs index ac190c7..9eff287 100644 --- a/TelegramBotBase/Base/Async.cs +++ b/TelegramBotBase/Base/Async.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; namespace TelegramBotBase.Base diff --git a/TelegramBotBase/Base/ControlBase.cs b/TelegramBotBase/Base/ControlBase.cs index 234554f..b06b2d3 100644 --- a/TelegramBotBase/Base/ControlBase.cs +++ b/TelegramBotBase/Base/ControlBase.cs @@ -1,8 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; +using TelegramBotBase.Sessions; namespace TelegramBotBase.Base { @@ -11,17 +8,11 @@ namespace TelegramBotBase.Base /// public class ControlBase { - public Sessions.DeviceSession Device { get; set; } + public DeviceSession Device { get; set; } - public int ID { get; set; } + public int Id { get; set; } - public String ControlID - { - get - { - return "#c" + this.ID.ToString(); - } - } + public string ControlId => "#c" + Id; /// /// Defines if the control should be rendered and invoked with actions @@ -37,43 +28,35 @@ namespace TelegramBotBase.Base } - public virtual async Task Load(MessageResult result) + public virtual Task Load(MessageResult result) { - - - + return Task.CompletedTask; } - public virtual async Task Action(MessageResult result, String value = null) + public virtual Task Action(MessageResult result, string value = null) { - - - + return Task.CompletedTask; } - public virtual async Task Render(MessageResult result) + public virtual Task Render(MessageResult result) { - - - - + return Task.CompletedTask; } - public virtual async Task Hidden(bool FormClose) + public virtual Task Hidden(bool formClose) { - - + return Task.CompletedTask; } /// /// Will be called on a cleanup. /// /// - public virtual async Task Cleanup() + public virtual Task Cleanup() { - + return Task.CompletedTask; } } diff --git a/TelegramBotBase/Base/DataResult.cs b/TelegramBotBase/Base/DataResult.cs index fb87df0..bebef80 100644 --- a/TelegramBotBase/Base/DataResult.cs +++ b/TelegramBotBase/Base/DataResult.cs @@ -1,11 +1,10 @@ -using System; -using System.Collections.Generic; -using System.IO; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Telegram.Bot; using Telegram.Bot.Types; +using Telegram.Bot.Types.Enums; using Telegram.Bot.Types.InputFiles; namespace TelegramBotBase.Base @@ -21,98 +20,45 @@ namespace TelegramBotBase.Base public UpdateResult UpdateData { get; set; } - public Contact Contact - { - get - { - return this.Message.Contact; - } - } + public Contact Contact => Message.Contact; - public Location Location - { - get - { - return this.Message.Location; - } - } + public Location Location => Message.Location; - public Document Document - { - get - { - return this.Message.Document; - } - } + public Document Document => Message.Document; - public Audio Audio - { - get - { - return this.Message.Audio; - } - } + public Audio Audio => Message.Audio; - public Video Video - { - get - { - return this.Message.Video; - } - } + public Video Video => Message.Video; - public PhotoSize[] Photos - { - get - { - return this.Message.Photo; - } - } + public PhotoSize[] Photos => Message.Photo; - public Telegram.Bot.Types.Enums.MessageType Type - { - get - { - return this.Message?.Type ?? Telegram.Bot.Types.Enums.MessageType.Unknown; - } - } + public MessageType Type => Message?.Type ?? MessageType.Unknown; - public override Message Message - { - get - { - return this.UpdateData?.Message; - } - } + public override Message Message => UpdateData?.Message; /// /// Returns the FileId of the first reachable element. /// - public String FileId - { - get - { - return (this.Document?.FileId ?? - this.Audio?.FileId ?? - this.Video?.FileId ?? - this.Photos.FirstOrDefault()?.FileId); - } - } + public string FileId => + (Document?.FileId ?? + Audio?.FileId ?? + Video?.FileId ?? + Photos.FirstOrDefault()?.FileId); public DataResult(UpdateResult update) { - this.UpdateData = update; + UpdateData = update; } public async Task DownloadDocument() { - var encryptedContent = new System.IO.MemoryStream(); - encryptedContent.SetLength(this.Document.FileSize.Value); - var file = await Device.Client.TelegramClient.GetInfoAndDownloadFileAsync(this.Document.FileId, encryptedContent); + var encryptedContent = new MemoryStream(); + encryptedContent.SetLength(Document.FileSize.Value); + var file = await Device.Client.TelegramClient.GetInfoAndDownloadFileAsync(Document.FileId, encryptedContent); - return new InputOnlineFile(encryptedContent, this.Document.FileName); + return new InputOnlineFile(encryptedContent, Document.FileName); } @@ -121,10 +67,10 @@ namespace TelegramBotBase.Base /// /// /// - public async Task DownloadDocument(String path) + public async Task DownloadDocument(string path) { - var file = await Device.Client.TelegramClient.GetFileAsync(this.Document.FileId); - FileStream fs = new FileStream(path, FileMode.Create); + var file = await Device.Client.TelegramClient.GetFileAsync(Document.FileId); + var fs = new FileStream(path, FileMode.Create); await Device.Client.TelegramClient.DownloadFileAsync(file.FilePath, fs); fs.Close(); fs.Dispose(); @@ -136,8 +82,8 @@ namespace TelegramBotBase.Base /// public async Task DownloadRawDocument() { - MemoryStream ms = new MemoryStream(); - await Device.Client.TelegramClient.GetInfoAndDownloadFileAsync(this.Document.FileId, ms); + var ms = new MemoryStream(); + await Device.Client.TelegramClient.GetInfoAndDownloadFileAsync(Document.FileId, ms); return ms.ToArray(); } @@ -145,7 +91,7 @@ namespace TelegramBotBase.Base /// Downloads a document and returns it as string. (txt,csv,etc) Default encoding ist UTF8. /// /// - public async Task DownloadRawTextDocument() + public async Task DownloadRawTextDocument() { return await DownloadRawTextDocument(Encoding.UTF8); } @@ -154,10 +100,10 @@ namespace TelegramBotBase.Base /// Downloads a document and returns it as string. (txt,csv,etc) /// /// - public async Task DownloadRawTextDocument(Encoding encoding) + public async Task DownloadRawTextDocument(Encoding encoding) { - MemoryStream ms = new MemoryStream(); - await Device.Client.TelegramClient.GetInfoAndDownloadFileAsync(this.Document.FileId, ms); + var ms = new MemoryStream(); + await Device.Client.TelegramClient.GetInfoAndDownloadFileAsync(Document.FileId, ms); ms.Position = 0; @@ -168,17 +114,17 @@ namespace TelegramBotBase.Base public async Task DownloadVideo() { - var encryptedContent = new System.IO.MemoryStream(); - encryptedContent.SetLength(this.Video.FileSize.Value); - var file = await Device.Client.TelegramClient.GetInfoAndDownloadFileAsync(this.Video.FileId, encryptedContent); + var encryptedContent = new MemoryStream(); + encryptedContent.SetLength(Video.FileSize.Value); + var file = await Device.Client.TelegramClient.GetInfoAndDownloadFileAsync(Video.FileId, encryptedContent); return new InputOnlineFile(encryptedContent, ""); } - public async Task DownloadVideo(String path) + public async Task DownloadVideo(string path) { - var file = await Device.Client.TelegramClient.GetFileAsync(this.Video.FileId); - FileStream fs = new FileStream(path, FileMode.Create); + var file = await Device.Client.TelegramClient.GetFileAsync(Video.FileId); + var fs = new FileStream(path, FileMode.Create); await Device.Client.TelegramClient.DownloadFileAsync(file.FilePath, fs); fs.Close(); fs.Dispose(); @@ -186,17 +132,17 @@ namespace TelegramBotBase.Base public async Task DownloadAudio() { - var encryptedContent = new System.IO.MemoryStream(); - encryptedContent.SetLength(this.Audio.FileSize.Value); - var file = await Device.Client.TelegramClient.GetInfoAndDownloadFileAsync(this.Audio.FileId, encryptedContent); + var encryptedContent = new MemoryStream(); + encryptedContent.SetLength(Audio.FileSize.Value); + var file = await Device.Client.TelegramClient.GetInfoAndDownloadFileAsync(Audio.FileId, encryptedContent); return new InputOnlineFile(encryptedContent, ""); } - public async Task DownloadAudio(String path) + public async Task DownloadAudio(string path) { - var file = await Device.Client.TelegramClient.GetFileAsync(this.Audio.FileId); - FileStream fs = new FileStream(path, FileMode.Create); + var file = await Device.Client.TelegramClient.GetFileAsync(Audio.FileId); + var fs = new FileStream(path, FileMode.Create); await Device.Client.TelegramClient.DownloadFileAsync(file.FilePath, fs); fs.Close(); fs.Dispose(); @@ -204,19 +150,19 @@ namespace TelegramBotBase.Base public async Task DownloadPhoto(int index) { - var photo = this.Photos[index]; - var encryptedContent = new System.IO.MemoryStream(); + var photo = Photos[index]; + var encryptedContent = new MemoryStream(); encryptedContent.SetLength(photo.FileSize.Value); var file = await Device.Client.TelegramClient.GetInfoAndDownloadFileAsync(photo.FileId, encryptedContent); return new InputOnlineFile(encryptedContent, ""); } - public async Task DownloadPhoto(int index, String path) + public async Task DownloadPhoto(int index, string path) { - var photo = this.Photos[index]; + var photo = Photos[index]; var file = await Device.Client.TelegramClient.GetFileAsync(photo.FileId); - FileStream fs = new FileStream(path, FileMode.Create); + var fs = new FileStream(path, FileMode.Create); await Device.Client.TelegramClient.DownloadFileAsync(file.FilePath, fs); fs.Close(); fs.Dispose(); diff --git a/TelegramBotBase/Base/FormBase.cs b/TelegramBotBase/Base/FormBase.cs index 291e733..583eabe 100644 --- a/TelegramBotBase/Base/FormBase.cs +++ b/TelegramBotBase/Base/FormBase.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.ComponentModel; using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Args; using TelegramBotBase.Base; @@ -27,7 +26,7 @@ namespace TelegramBotBase.Form /// /// has this formular already been disposed ? /// - public bool IsDisposed { get; set; } = false; + public bool IsDisposed { get; set; } public List Controls { get; set; } @@ -35,33 +34,33 @@ namespace TelegramBotBase.Form public EventHandlerList Events = new EventHandlerList(); - private static object __evInit = new object(); + private static readonly object EvInit = new object(); - private static object __evOpened = new object(); + private static readonly object EvOpened = new object(); - private static object __evClosed = new object(); + private static readonly object EvClosed = new object(); public FormBase() { - this.Controls = new List(); + Controls = new List(); } - public FormBase(MessageClient Client) : this() + public FormBase(MessageClient client) : this() { - this.Client = Client; + this.Client = client; } public async Task OnInit(InitEventArgs e) { - var handler = this.Events[__evInit]?.GetInvocationList().Cast>(); + var handler = Events[EvInit]?.GetInvocationList().Cast>(); if (handler == null) return; foreach (var h in handler) { - await Async.InvokeAllAsync(h, this, e); + await h.InvokeAllAsync(this, e); } } @@ -70,27 +69,21 @@ namespace TelegramBotBase.Form ///// public event AsyncEventHandler Init { - add - { - this.Events.AddHandler(__evInit, value); - } - remove - { - this.Events.RemoveHandler(__evInit, value); - } + add => Events.AddHandler(EvInit, value); + remove => Events.RemoveHandler(EvInit, value); } public async Task OnOpened(EventArgs e) { - var handler = this.Events[__evOpened]?.GetInvocationList().Cast>(); + var handler = Events[EvOpened]?.GetInvocationList().Cast>(); if (handler == null) return; foreach (var h in handler) { - await Async.InvokeAllAsync(h, this, e); + await h.InvokeAllAsync(this, e); } } @@ -100,27 +93,21 @@ namespace TelegramBotBase.Form /// public event AsyncEventHandler Opened { - add - { - this.Events.AddHandler(__evOpened, value); - } - remove - { - this.Events.RemoveHandler(__evOpened, value); - } + add => Events.AddHandler(EvOpened, value); + remove => Events.RemoveHandler(EvOpened, value); } public async Task OnClosed(EventArgs e) { - var handler = this.Events[__evClosed]?.GetInvocationList().Cast>(); + var handler = Events[EvClosed]?.GetInvocationList().Cast>(); if (handler == null) return; foreach (var h in handler) { - await Async.InvokeAllAsync(h, this, e); + await h.InvokeAllAsync(this, e); } } @@ -131,14 +118,8 @@ namespace TelegramBotBase.Form /// public event AsyncEventHandler Closed { - add - { - this.Events.AddHandler(__evClosed, value); - } - remove - { - this.Events.RemoveHandler(__evClosed, value); - } + add => Events.AddHandler(EvClosed, value); + remove => Events.RemoveHandler(EvClosed, value); } /// @@ -146,9 +127,9 @@ namespace TelegramBotBase.Form /// /// /// - public virtual async Task ReturnFromModal(ModalDialog modal) + public virtual Task ReturnFromModal(ModalDialog modal) { - + return Task.CompletedTask; } @@ -156,17 +137,19 @@ namespace TelegramBotBase.Form /// Pre to form close, cleanup all controls /// /// - public async Task CloseControls() + public Task CloseControls() { - foreach (var b in this.Controls) + foreach (var b in Controls) { b.Cleanup().Wait(); } + + return Task.CompletedTask; } - public virtual async Task PreLoad(MessageResult message) + public virtual Task PreLoad(MessageResult message) { - + return Task.CompletedTask; } /// @@ -179,7 +162,7 @@ namespace TelegramBotBase.Form //Looking for the control by id, if not listened, raise event for all if (message.RawData?.StartsWith("#c") ?? false) { - var c = this.Controls.FirstOrDefault(a => a.ControlID == message.RawData.Split('_')[0]); + var c = Controls.FirstOrDefault(a => a.ControlId == message.RawData.Split('_')[0]); if (c != null) { await c.Load(message); @@ -187,7 +170,7 @@ namespace TelegramBotBase.Form } } - foreach (var b in this.Controls) + foreach (var b in Controls) { if (!b.Enabled) continue; @@ -201,9 +184,9 @@ namespace TelegramBotBase.Form /// /// /// - public virtual async Task Load(MessageResult message) + public virtual Task Load(MessageResult message) { - + return Task.CompletedTask; } /// @@ -211,9 +194,9 @@ namespace TelegramBotBase.Form /// /// /// - public virtual async Task Edited(MessageResult message) + public virtual Task Edited(MessageResult message) { - + return Task.CompletedTask; } @@ -227,7 +210,7 @@ namespace TelegramBotBase.Form //Looking for the control by id, if not listened, raise event for all if (message.RawData.StartsWith("#c")) { - var c = this.Controls.FirstOrDefault(a => a.ControlID == message.RawData.Split('_')[0]); + var c = Controls.FirstOrDefault(a => a.ControlId == message.RawData.Split('_')[0]); if (c != null) { await c.Action(message, message.RawData.Split('_')[1]); @@ -235,7 +218,7 @@ namespace TelegramBotBase.Form } } - foreach (var b in this.Controls) + foreach (var b in Controls) { if (!b.Enabled) continue; @@ -252,9 +235,9 @@ namespace TelegramBotBase.Form /// /// /// - public virtual async Task Action(MessageResult message) + public virtual Task Action(MessageResult message) { - + return Task.CompletedTask; } /// @@ -262,9 +245,9 @@ namespace TelegramBotBase.Form /// /// /// - public virtual async Task SentData(DataResult message) + public virtual Task SentData(DataResult message) { - + return Task.CompletedTask; } /// @@ -274,7 +257,7 @@ namespace TelegramBotBase.Form /// public virtual async Task RenderControls(MessageResult message) { - foreach (var b in this.Controls) + foreach (var b in Controls) { if (!b.Enabled) continue; @@ -288,9 +271,9 @@ namespace TelegramBotBase.Form /// /// /// - public virtual async Task Render(MessageResult message) + public virtual Task Render(MessageResult message) { - + return Task.CompletedTask; } @@ -302,7 +285,7 @@ namespace TelegramBotBase.Form /// public virtual async Task NavigateTo(FormBase newForm, params object[] args) { - DeviceSession ds = this.Device; + var ds = Device; if (ds == null) return; @@ -311,11 +294,11 @@ namespace TelegramBotBase.Form ds.PreviousForm = ds.ActiveForm; ds.ActiveForm = newForm; - newForm.Client = this.Client; + newForm.Client = Client; newForm.Device = ds; //Notify prior to close - foreach (var b in this.Controls) + foreach (var b in Controls) { if (!b.Enabled) continue; @@ -323,13 +306,13 @@ namespace TelegramBotBase.Form await b.Hidden(true); } - this.CloseControls().Wait(); + CloseControls().Wait(); - await this.OnClosed(new EventArgs()); + await OnClosed(EventArgs.Empty); await newForm.OnInit(new InitEventArgs(args)); - await newForm.OnOpened(new EventArgs()); + await newForm.OnOpened(EventArgs.Empty); } /// @@ -339,7 +322,7 @@ namespace TelegramBotBase.Form /// public virtual async Task OpenModal(ModalDialog newForm, params object[] args) { - DeviceSession ds = this.Device; + var ds = Device; if (ds == null) return; @@ -359,7 +342,7 @@ namespace TelegramBotBase.Form await CloseModal(newForm, parentForm); }; - foreach (var b in this.Controls) + foreach (var b in Controls) { if (!b.Enabled) continue; @@ -369,14 +352,14 @@ namespace TelegramBotBase.Form await newForm.OnInit(new InitEventArgs(args)); - await newForm.OnOpened(new EventArgs()); + await newForm.OnOpened(EventArgs.Empty); } - public async Task CloseModal(ModalDialog modalForm, FormBase oldForm) + public Task CloseModal(ModalDialog modalForm, FormBase oldForm) { - DeviceSession ds = this.Device; + var ds = Device; if (ds == null) - return; + return Task.CompletedTask; if (modalForm == null) throw new Exception("No modal form"); @@ -386,6 +369,7 @@ namespace TelegramBotBase.Form ds.PreviousForm = ds.ActiveForm; ds.ActiveForm = oldForm; + return Task.CompletedTask; } /// @@ -395,12 +379,12 @@ namespace TelegramBotBase.Form public void AddControl(ControlBase control) { //Duplicate check - if (this.Controls.Contains(control)) + if (Controls.Contains(control)) throw new ArgumentException("Control has been already added."); - control.ID = this.Controls.Count + 1; - control.Device = this.Device; - this.Controls.Add(control); + control.Id = Controls.Count + 1; + control.Device = Device; + Controls.Add(control); control.Init(); } @@ -411,12 +395,12 @@ namespace TelegramBotBase.Form /// public void RemoveControl(ControlBase control) { - if (!this.Controls.Contains(control)) + if (!Controls.Contains(control)) return; control.Cleanup().Wait(); - this.Controls.Remove(control); + Controls.Remove(control); } /// @@ -424,11 +408,11 @@ namespace TelegramBotBase.Form /// public void RemoveAllControls() { - foreach(var c in this.Controls) + foreach(var c in Controls) { c.Cleanup().Wait(); - this.Controls.Remove(c); + Controls.Remove(c); } } @@ -437,9 +421,9 @@ namespace TelegramBotBase.Form /// public void Dispose() { - this.Client = null; - this.Device = null; - this.IsDisposed = true; + Client = null; + Device = null; + IsDisposed = true; } } } diff --git a/TelegramBotBase/Base/MessageClient.cs b/TelegramBotBase/Base/MessageClient.cs index 85195f9..4813d86 100644 --- a/TelegramBotBase/Base/MessageClient.cs +++ b/TelegramBotBase/Base/MessageClient.cs @@ -1,17 +1,14 @@ using System; using System.Collections.Generic; using System.ComponentModel; -using System.Linq; using System.Net; using System.Net.Http; -using System.Text; using System.Threading; using System.Threading.Tasks; -using Telegram.Bot.Exceptions; using Telegram.Bot; -using Telegram.Bot.Types; -using Telegram.Bot.Types.Enums; +using Telegram.Bot.Exceptions; using Telegram.Bot.Extensions.Polling; +using Telegram.Bot.Types; namespace TelegramBotBase.Base { @@ -22,13 +19,13 @@ namespace TelegramBotBase.Base { - public String APIKey { get; set; } + public string ApiKey { get; set; } public ITelegramBotClient TelegramClient { get; set; } - private EventHandlerList __Events { get; set; } = new EventHandlerList(); + private EventHandlerList Events { get; set; } = new EventHandlerList(); - private static object __evOnMessageLoop = new object(); + private static readonly object EvOnMessageLoop = new object(); private static object __evOnMessage = new object(); @@ -36,21 +33,21 @@ namespace TelegramBotBase.Base private static object __evCallbackQuery = new object(); - CancellationTokenSource __cancellationTokenSource; + private CancellationTokenSource _cancellationTokenSource; - public MessageClient(String APIKey) + public MessageClient(string apiKey) { - this.APIKey = APIKey; - this.TelegramClient = new Telegram.Bot.TelegramBotClient(APIKey); + this.ApiKey = apiKey; + TelegramClient = new TelegramBotClient(apiKey); Prepare(); } - public MessageClient(String APIKey, HttpClient proxy) + public MessageClient(string apiKey, HttpClient proxy) { - this.APIKey = APIKey; - this.TelegramClient = new Telegram.Bot.TelegramBotClient(APIKey, proxy); + this.ApiKey = apiKey; + TelegramClient = new TelegramBotClient(apiKey, proxy); Prepare(); @@ -58,9 +55,9 @@ namespace TelegramBotBase.Base - public MessageClient(String APIKey, Uri proxyUrl, NetworkCredential credential = null) + public MessageClient(string apiKey, Uri proxyUrl, NetworkCredential credential = null) { - this.APIKey = APIKey; + this.ApiKey = apiKey; var proxy = new WebProxy(proxyUrl) { @@ -71,7 +68,7 @@ namespace TelegramBotBase.Base new HttpClientHandler { Proxy = proxy, UseProxy = true } ); - this.TelegramClient = new Telegram.Bot.TelegramBotClient(APIKey, httpClient); + TelegramClient = new TelegramBotClient(apiKey, httpClient); Prepare(); } @@ -79,12 +76,12 @@ namespace TelegramBotBase.Base /// /// Initializes the client with a proxy /// - /// + /// /// i.e. 127.0.0.1 /// i.e. 10000 - public MessageClient(String APIKey, String proxyHost, int proxyPort) + public MessageClient(string apiKey, string proxyHost, int proxyPort) { - this.APIKey = APIKey; + this.ApiKey = apiKey; var proxy = new WebProxy(proxyHost, proxyPort); @@ -92,17 +89,17 @@ namespace TelegramBotBase.Base new HttpClientHandler { Proxy = proxy, UseProxy = true } ); - this.TelegramClient = new Telegram.Bot.TelegramBotClient(APIKey, httpClient); + TelegramClient = new TelegramBotClient(apiKey, httpClient); Prepare(); } - public MessageClient(String APIKey, Telegram.Bot.TelegramBotClient Client) + public MessageClient(string apiKey, TelegramBotClient client) { - this.APIKey = APIKey; - this.TelegramClient = Client; + this.ApiKey = apiKey; + TelegramClient = client; Prepare(); } @@ -110,7 +107,7 @@ namespace TelegramBotBase.Base public void Prepare() { - this.TelegramClient.Timeout = new TimeSpan(0, 0, 30); + TelegramClient.Timeout = new TimeSpan(0, 0, 30); } @@ -118,19 +115,16 @@ namespace TelegramBotBase.Base public void StartReceiving() { - __cancellationTokenSource = new CancellationTokenSource(); + _cancellationTokenSource = new CancellationTokenSource(); - var receiverOptions = new ReceiverOptions - { - AllowedUpdates = { } // receive all update types - }; + var receiverOptions = new ReceiverOptions(); - this.TelegramClient.StartReceiving(HandleUpdateAsync, HandleErrorAsync, receiverOptions, __cancellationTokenSource.Token); + TelegramClient.StartReceiving(HandleUpdateAsync, HandleErrorAsync, receiverOptions, _cancellationTokenSource.Token); } public void StopReceiving() { - __cancellationTokenSource.Cancel(); + _cancellationTokenSource.Cancel(); } @@ -143,9 +137,9 @@ namespace TelegramBotBase.Base public Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken) { - if (exception is ApiRequestException exAPI) + if (exception is ApiRequestException exApi) { - Console.WriteLine($"Telegram API Error:\n[{exAPI.ErrorCode}]\n{exAPI.Message}"); + Console.WriteLine($"Telegram API Error:\n[{exApi.ErrorCode}]\n{exApi.Message}"); } else { @@ -159,9 +153,9 @@ namespace TelegramBotBase.Base /// This will return the current list of bot commands. /// /// - public async Task GetBotCommands(BotCommandScope scope = null, String languageCode = null) + public async Task GetBotCommands(BotCommandScope scope = null, string languageCode = null) { - return await this.TelegramClient.GetMyCommandsAsync(scope, languageCode); + return await TelegramClient.GetMyCommandsAsync(scope, languageCode); } @@ -170,18 +164,18 @@ namespace TelegramBotBase.Base /// /// /// - public async Task SetBotCommands(List botcommands, BotCommandScope scope = null, String languageCode = null) + public async Task SetBotCommands(List botcommands, BotCommandScope scope = null, string languageCode = null) { - await this.TelegramClient.SetMyCommandsAsync(botcommands, scope, languageCode); + await TelegramClient.SetMyCommandsAsync(botcommands, scope, languageCode); } /// /// This will delete the current list of bot commands. /// /// - public async Task DeleteBotCommands(BotCommandScope scope = null, String languageCode = null) + public async Task DeleteBotCommands(BotCommandScope scope = null, string languageCode = null) { - await this.TelegramClient.DeleteMyCommandsAsync(scope, languageCode); + await TelegramClient.DeleteMyCommandsAsync(scope, languageCode); } @@ -191,19 +185,13 @@ namespace TelegramBotBase.Base public event Async.AsyncEventHandler MessageLoop { - add - { - this.__Events.AddHandler(__evOnMessageLoop, value); - } - remove - { - this.__Events.RemoveHandler(__evOnMessageLoop, value); - } + add => Events.AddHandler(EvOnMessageLoop, value); + remove => Events.RemoveHandler(EvOnMessageLoop, value); } public void OnMessageLoop(UpdateResult update) { - (this.__Events[__evOnMessageLoop] as Async.AsyncEventHandler)?.Invoke(this, update); + (Events[EvOnMessageLoop] as Async.AsyncEventHandler)?.Invoke(this, update); } diff --git a/TelegramBotBase/Base/MessageResult.cs b/TelegramBotBase/Base/MessageResult.cs index 2e6148b..7d39fe7 100644 --- a/TelegramBotBase/Base/MessageResult.cs +++ b/TelegramBotBase/Base/MessageResult.cs @@ -1,110 +1,56 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; -using Telegram.Bot; +using Newtonsoft.Json; using Telegram.Bot.Types; -using TelegramBotBase.Sessions; +using Telegram.Bot.Types.Enums; namespace TelegramBotBase.Base { public class MessageResult : ResultBase { - public Telegram.Bot.Types.Update UpdateData { get; set; } + public Update UpdateData { get; set; } /// /// Returns the Device/ChatId /// - public override long DeviceId - { - get - { - return this.UpdateData?.Message?.Chat?.Id - ?? this.UpdateData?.EditedMessage?.Chat.Id - ?? this.UpdateData?.CallbackQuery.Message?.Chat.Id - ?? Device?.DeviceId - ?? 0; - } - } + public override long DeviceId => + UpdateData?.Message?.Chat?.Id + ?? UpdateData?.EditedMessage?.Chat.Id + ?? UpdateData?.CallbackQuery.Message?.Chat.Id + ?? Device?.DeviceId + ?? 0; /// /// The message id /// - public new int MessageId - { - get - { - return this.UpdateData?.Message?.MessageId - ?? this.Message?.MessageId - ?? this.UpdateData?.CallbackQuery?.Message?.MessageId - ?? 0; - } - } + public new int MessageId => + UpdateData?.Message?.MessageId + ?? Message?.MessageId + ?? UpdateData?.CallbackQuery?.Message?.MessageId + ?? 0; - public String Command - { - get - { - return this.UpdateData?.Message?.Text ?? ""; - } - } + public string Command => UpdateData?.Message?.Text ?? ""; - public String MessageText - { - get - { - return this.UpdateData?.Message?.Text ?? ""; - } - } + public string MessageText => UpdateData?.Message?.Text ?? ""; - public Telegram.Bot.Types.Enums.MessageType MessageType - { - get - { - return Message?.Type ?? Telegram.Bot.Types.Enums.MessageType.Unknown; - } - } - - public Message Message - { - get - { - return this.UpdateData?.Message - ?? this.UpdateData?.EditedMessage - ?? this.UpdateData?.ChannelPost - ?? this.UpdateData?.EditedChannelPost - ?? this.UpdateData?.CallbackQuery?.Message; - } - } + public MessageType MessageType => Message?.Type ?? MessageType.Unknown; /// /// Is this an action ? (i.e. button click) /// - public bool IsAction - { - get - { - return (this.UpdateData.CallbackQuery != null); - } - } + public bool IsAction => (UpdateData.CallbackQuery != null); /// /// Is this a command ? Starts with a slash '/' and a command /// - public bool IsBotCommand - { - get - { - return (this.MessageText.StartsWith("/")); - } - } + public bool IsBotCommand => (MessageText.StartsWith("/")); /// /// Returns a List of all parameters which has been sent with the command itself (i.e. /start 123 456 789 => 123,456,789) /// - public List BotCommandParameters + public List BotCommandParameters { get { @@ -112,21 +58,21 @@ namespace TelegramBotBase.Base return new List(); //Split by empty space and skip first entry (command itself), return as list - return this.MessageText.Split(' ').Skip(1).ToList(); + return MessageText.Split(' ').Skip(1).ToList(); } } /// /// Returns just the command (i.e. /start 1 2 3 => /start) /// - public String BotCommand + public string BotCommand { get { if (!IsBotCommand) return null; - return this.MessageText.Split(' ')[0]; + return MessageText.Split(' ')[0]; } } @@ -137,13 +83,7 @@ namespace TelegramBotBase.Base public bool Handled { get; set; } = false; - public String RawData - { - get - { - return this.UpdateData?.CallbackQuery?.Data; - } - } + public string RawData => UpdateData?.CallbackQuery?.Data; public T GetData() where T : class @@ -151,7 +91,7 @@ namespace TelegramBotBase.Base T cd = null; try { - cd = Newtonsoft.Json.JsonConvert.DeserializeObject(this.RawData); + cd = JsonConvert.DeserializeObject(RawData); return cd; } @@ -168,16 +108,16 @@ namespace TelegramBotBase.Base /// /// /// - public async Task ConfirmAction(String message = "", bool showAlert = false, String urlToOpen = null) + public async Task ConfirmAction(string message = "", bool showAlert = false, string urlToOpen = null) { - await this.Device.ConfirmAction(this.UpdateData.CallbackQuery.Id, message, showAlert, urlToOpen); + await Device.ConfirmAction(UpdateData.CallbackQuery.Id, message, showAlert, urlToOpen); } public override async Task DeleteMessage() { try { - await base.DeleteMessage(this.MessageId); + await base.DeleteMessage(MessageId); } catch { @@ -190,9 +130,9 @@ namespace TelegramBotBase.Base } - public MessageResult(Telegram.Bot.Types.Update update) + public MessageResult(Update update) { - this.UpdateData = update; + UpdateData = update; } diff --git a/TelegramBotBase/Base/ResultBase.cs b/TelegramBotBase/Base/ResultBase.cs index adf8ecc..59a130f 100644 --- a/TelegramBotBase/Base/ResultBase.cs +++ b/TelegramBotBase/Base/ResultBase.cs @@ -1,9 +1,7 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading.Tasks; using Telegram.Bot; +using Telegram.Bot.Types; using TelegramBotBase.Sessions; namespace TelegramBotBase.Base @@ -18,15 +16,9 @@ namespace TelegramBotBase.Base public virtual long DeviceId { get; set; } - public int MessageId - { - get - { - return this.Message.MessageId; - } - } + public int MessageId => Message.MessageId; - public virtual Telegram.Bot.Types.Message Message { get; set; } + public virtual Message Message { get; set; } /// /// Deletes the current message @@ -35,7 +27,7 @@ namespace TelegramBotBase.Base /// public virtual async Task DeleteMessage() { - await DeleteMessage(this.MessageId); + await DeleteMessage(MessageId); } /// @@ -47,7 +39,7 @@ namespace TelegramBotBase.Base { try { - await Device.Client.TelegramClient.DeleteMessageAsync(this.DeviceId, (messageId == -1 ? this.MessageId : messageId)); + await Device.Client.TelegramClient.DeleteMessageAsync(DeviceId, (messageId == -1 ? MessageId : messageId)); } catch { diff --git a/TelegramBotBase/Base/StateContainer.cs b/TelegramBotBase/Base/StateContainer.cs index d4a12f0..7e74cc6 100644 --- a/TelegramBotBase/Base/StateContainer.cs +++ b/TelegramBotBase/Base/StateContainer.cs @@ -1,11 +1,9 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Text; namespace TelegramBotBase.Base { - public partial class StateContainer + public class StateContainer { public List States { get; set; } @@ -27,7 +25,7 @@ namespace TelegramBotBase.Base public StateContainer() { - this.States = new List(); + States = new List(); } } diff --git a/TelegramBotBase/Base/StateEntry.cs b/TelegramBotBase/Base/StateEntry.cs index 9a7e0c1..13e272f 100644 --- a/TelegramBotBase/Base/StateEntry.cs +++ b/TelegramBotBase/Base/StateEntry.cs @@ -1,8 +1,5 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Diagnostics; -using System.Runtime.Serialization; -using System.Text; namespace TelegramBotBase.Base { @@ -18,26 +15,26 @@ namespace TelegramBotBase.Base /// /// Contains the Username (on privat chats) or Group title on groups/channels. /// - public String ChatTitle { get; set; } + public string ChatTitle { get; set; } /// /// Contains additional values to save. /// - public Dictionary Values { get; set; } + public Dictionary Values { get; set; } /// /// Contains the full qualified namespace of the form to used for reload it via reflection. /// - public String FormUri {get;set;} + public string FormUri {get;set;} /// /// Contains the assembly, where to find that form. /// - public String QualifiedName { get; set; } + public string QualifiedName { get; set; } public StateEntry() { - this.Values = new Dictionary(); + Values = new Dictionary(); } } diff --git a/TelegramBotBase/Base/UpdateResult.cs b/TelegramBotBase/Base/UpdateResult.cs index f2341dd..4d8e430 100644 --- a/TelegramBotBase/Base/UpdateResult.cs +++ b/TelegramBotBase/Base/UpdateResult.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Telegram.Bot.Types; +using Telegram.Bot.Types; using TelegramBotBase.Sessions; namespace TelegramBotBase.Base @@ -14,46 +10,26 @@ namespace TelegramBotBase.Base RawData = rawData; Device = device; - + } /// /// Returns the Device/ChatId /// - public override long DeviceId - { - get - { - return this.RawData?.Message?.Chat?.Id - ?? this.RawData?.CallbackQuery?.Message?.Chat?.Id - ?? Device?.DeviceId - ?? 0; - } - } + public override long DeviceId => + RawData?.Message?.Chat?.Id + ?? RawData?.CallbackQuery?.Message?.Chat?.Id + ?? Device?.DeviceId + ?? 0; public Update RawData { get; set; } - public override Message Message - { - get - { - return RawData?.Message - ?? RawData?.EditedMessage - ?? RawData?.ChannelPost - ?? RawData?.EditedChannelPost - ?? RawData?.CallbackQuery?.Message; - } - } - - - - public DeviceSession Device - { - get; - set; - } - - + public override Message Message => + RawData?.Message + ?? RawData?.EditedMessage + ?? RawData?.ChannelPost + ?? RawData?.EditedChannelPost + ?? RawData?.CallbackQuery?.Message; } } diff --git a/TelegramBotBase/BotBase.cs b/TelegramBotBase/BotBase.cs index b5ebd84..45b8a92 100644 --- a/TelegramBotBase/BotBase.cs +++ b/TelegramBotBase/BotBase.cs @@ -31,7 +31,7 @@ namespace TelegramBotBase /// /// Your TelegramBot APIKey /// - public String APIKey { get; set; } = ""; + public string ApiKey { get; set; } = ""; /// /// List of all running/active sessions @@ -46,19 +46,19 @@ namespace TelegramBotBase #region "Events" - private EventHandlerList __Events = new EventHandlerList(); + private readonly EventHandlerList _events = new EventHandlerList(); - private static object __evSessionBegins = new object(); + private static readonly object EvSessionBegins = new object(); - private static object __evMessage = new object(); + private static readonly object EvMessage = new object(); private static object __evSystemCall = new object(); public delegate Task BotCommandEventHandler(object sender, BotCommandEventArgs e); - private static object __evException = new object(); + private static readonly object EvException = new object(); - private static object __evUnhandledCall = new object(); + private static readonly object EvUnhandledCall = new object(); #endregion @@ -81,22 +81,24 @@ namespace TelegramBotBase /// /// All internal used settings. /// - public Dictionary SystemSettings { get; private set; } + public Dictionary SystemSettings { get; private set; } public BotBase() { - this.SystemSettings = new Dictionary(); + SystemSettings = new Dictionary(); - SetSetting(eSettings.MaxNumberOfRetries, 5); - SetSetting(eSettings.NavigationMaximum, 10); - SetSetting(eSettings.LogAllMessages, false); - SetSetting(eSettings.SkipAllMessages, false); - SetSetting(eSettings.SaveSessionsOnConsoleExit, false); + SetSetting(ESettings.MaxNumberOfRetries, 5); + SetSetting(ESettings.NavigationMaximum, 10); + SetSetting(ESettings.LogAllMessages, false); + SetSetting(ESettings.SkipAllMessages, false); + SetSetting(ESettings.SaveSessionsOnConsoleExit, false); - this.BotCommandScopes = new Dictionary>(); + BotCommandScopes = new Dictionary>(); - this.Sessions = new SessionBase(); - this.Sessions.BotBase = this; + Sessions = new SessionBase + { + BotBase = this + }; } @@ -106,38 +108,38 @@ namespace TelegramBotBase /// public void Start() { - if (this.Client == null) + if (Client == null) return; - this.Client.MessageLoop += Client_MessageLoop; + Client.MessageLoop += Client_MessageLoop; - if (this.StateMachine != null) + if (StateMachine != null) { - this.Sessions.LoadSessionStates(this.StateMachine); + Sessions.LoadSessionStates(StateMachine); } //Enable auto session saving - if (this.GetSetting(eSettings.SaveSessionsOnConsoleExit, false)) + if (GetSetting(ESettings.SaveSessionsOnConsoleExit, false)) { - TelegramBotBase.Tools.Console.SetHandler(() => + Tools.Console.SetHandler(() => { - this.Sessions.SaveSessionStates(); + Sessions.SaveSessionStates(); }); } - DeviceSession.MaxNumberOfRetries = this.GetSetting(eSettings.MaxNumberOfRetries, 5); + DeviceSession.MaxNumberOfRetries = GetSetting(ESettings.MaxNumberOfRetries, 5); - this.Client.StartReceiving(); + Client.StartReceiving(); } private async Task Client_MessageLoop(object sender, UpdateResult e) { - DeviceSession ds = this.Sessions.GetSession(e.DeviceId); + var ds = Sessions.GetSession(e.DeviceId); if (ds == null) { - ds = this.Sessions.StartSession(e.DeviceId).GetAwaiter().GetResult(); + ds = Sessions.StartSession(e.DeviceId).GetAwaiter().GetResult(); e.Device = ds; ds.LastMessage = e.RawData.Message; @@ -146,7 +148,7 @@ namespace TelegramBotBase var mr = new MessageResult(e.RawData); - int i = 0; + var i = 0; //Should formulars get navigated (allow maximum of 10, to dont get loops) do @@ -160,7 +162,7 @@ namespace TelegramBotBase mr.IsFirstHandler = false; - } while (ds.FormSwitched && i < this.GetSetting(eSettings.NavigationMaximum, 10)); + } while (ds.FormSwitched && i < GetSetting(ESettings.NavigationMaximum, 10)); } @@ -169,15 +171,15 @@ namespace TelegramBotBase /// public void Stop() { - if (this.Client == null) + if (Client == null) return; - this.Client.MessageLoop -= Client_MessageLoop; + Client.MessageLoop -= Client_MessageLoop; - this.Client.StopReceiving(); + Client.StopReceiving(); - this.Sessions.SaveSessionStates(); + Sessions.SaveSessionStates(); } /// @@ -185,14 +187,14 @@ namespace TelegramBotBase /// /// /// - public async Task SentToAll(String message) + public async Task SentToAll(string message) { - if (this.Client == null) + if (Client == null) return; - foreach (var s in this.Sessions.SessionList) + foreach (var s in Sessions.SessionList) { - await this.Client.TelegramClient.SendTextMessageAsync(s.Key, message); + await Client.TelegramClient.SendTextMessageAsync(s.Key, message); } } @@ -201,29 +203,30 @@ namespace TelegramBotBase /// /// This will invoke the full message loop for the device even when no "userevent" like message or action has been raised. /// - /// Contains the device/chat id of the device to update. - public async Task InvokeMessageLoop(long DeviceId) + /// Contains the device/chat id of the device to update. + public async Task InvokeMessageLoop(long deviceId) { - var mr = new MessageResult(); - - mr.UpdateData = new Update() + var mr = new MessageResult { - Message = new Message() + UpdateData = new Update() + { + Message = new Message() + } }; - await InvokeMessageLoop(DeviceId, mr); + await InvokeMessageLoop(deviceId, mr); } /// /// This will invoke the full message loop for the device even when no "userevent" like message or action has been raised. /// - /// Contains the device/chat id of the device to update. + /// Contains the device/chat id of the device to update. /// - public async Task InvokeMessageLoop(long DeviceId, MessageResult e) + public async Task InvokeMessageLoop(long deviceId, MessageResult e) { try { - DeviceSession ds = this.Sessions.GetSession(DeviceId); + var ds = Sessions.GetSession(deviceId); e.Device = ds; await MessageLoopFactory.MessageLoop(this, ds, new UpdateResult(e.UpdateData, ds), e); @@ -231,8 +234,8 @@ namespace TelegramBotBase } catch (Exception ex) { - DeviceSession ds = this.Sessions.GetSession(DeviceId); - OnException(new SystemExceptionEventArgs(e.Message.Text, DeviceId, ds, ex)); + var ds = Sessions.GetSession(deviceId); + OnException(new SystemExceptionEventArgs(e.Message.Text, deviceId, ds, ex)); } } @@ -252,17 +255,17 @@ namespace TelegramBotBase /// public async Task UploadBotCommands() { - foreach (var bs in this.BotCommandScopes) + foreach (var bs in BotCommandScopes) { if(bs.Value !=null) { - await this.Client.SetBotCommands(bs.Value, bs.Key); + await Client.SetBotCommands(bs.Value, bs.Key); } else { - await this.Client.DeleteBotCommands(bs.Key); + await Client.DeleteBotCommands(bs.Key); } - + } } @@ -271,9 +274,9 @@ namespace TelegramBotBase /// /// /// - public bool IsKnownBotCommand(String command) + public bool IsKnownBotCommand(string command) { - foreach (var scope in this.BotCommandScopes) + foreach (var scope in BotCommandScopes) { if (scope.Value.Any(a => "/" + a.Command == command)) return true; @@ -286,20 +289,20 @@ namespace TelegramBotBase /// Could set a variety of settings to improve the bot handling. /// /// - /// - public void SetSetting(eSettings set, uint Value) + /// + public void SetSetting(ESettings set, uint value) { - this.SystemSettings[set] = Value; + SystemSettings[set] = value; } /// /// Could set a variety of settings to improve the bot handling. /// /// - /// - public void SetSetting(eSettings set, bool Value) + /// + public void SetSetting(ESettings set, bool value) { - this.SystemSettings[set] = (Value ? 1u : 0u); + SystemSettings[set] = (value ? 1u : 0u); } /// @@ -308,12 +311,12 @@ namespace TelegramBotBase /// /// /// - public uint GetSetting(eSettings set, uint defaultValue) + public uint GetSetting(ESettings set, uint defaultValue) { - if (!this.SystemSettings.ContainsKey(set)) + if (!SystemSettings.ContainsKey(set)) return defaultValue; - return this.SystemSettings[set]; + return SystemSettings[set]; } /// @@ -322,12 +325,12 @@ namespace TelegramBotBase /// /// /// - public bool GetSetting(eSettings set, bool defaultValue) + public bool GetSetting(ESettings set, bool defaultValue) { - if (!this.SystemSettings.ContainsKey(set)) + if (!SystemSettings.ContainsKey(set)) return defaultValue; - return this.SystemSettings[set] == 0u ? false : true; + return SystemSettings[set] == 0u ? false : true; } #region "Events" @@ -338,19 +341,13 @@ namespace TelegramBotBase public event EventHandler SessionBegins { - add - { - this.__Events.AddHandler(__evSessionBegins, value); - } - remove - { - this.__Events.RemoveHandler(__evSessionBegins, value); - } + add => _events.AddHandler(EvSessionBegins, value); + remove => _events.RemoveHandler(EvSessionBegins, value); } public void OnSessionBegins(SessionBeginEventArgs e) { - (this.__Events[__evSessionBegins] as EventHandler)?.Invoke(this, e); + (_events[EvSessionBegins] as EventHandler)?.Invoke(this, e); } @@ -359,19 +356,13 @@ namespace TelegramBotBase /// public event EventHandler Message { - add - { - this.__Events.AddHandler(__evMessage, value); - } - remove - { - this.__Events.RemoveHandler(__evMessage, value); - } + add => _events.AddHandler(EvMessage, value); + remove => _events.RemoveHandler(EvMessage, value); } public void OnMessage(MessageIncomeEventArgs e) { - (this.__Events[__evMessage] as EventHandler)?.Invoke(this, e); + (_events[EvMessage] as EventHandler)?.Invoke(this, e); } @@ -383,7 +374,7 @@ namespace TelegramBotBase public async Task OnBotCommand(BotCommandEventArgs e) { - if (this.BotCommand != null) + if (BotCommand != null) await BotCommand(this, e); } @@ -392,19 +383,13 @@ namespace TelegramBotBase /// public event EventHandler Exception { - add - { - this.__Events.AddHandler(__evException, value); - } - remove - { - this.__Events.RemoveHandler(__evException, value); - } + add => _events.AddHandler(EvException, value); + remove => _events.RemoveHandler(EvException, value); } public void OnException(SystemExceptionEventArgs e) { - (this.__Events[__evException] as EventHandler)?.Invoke(this, e); + (_events[EvException] as EventHandler)?.Invoke(this, e); } @@ -413,19 +398,13 @@ namespace TelegramBotBase /// public event EventHandler UnhandledCall { - add - { - this.__Events.AddHandler(__evUnhandledCall, value); - } - remove - { - this.__Events.RemoveHandler(__evUnhandledCall, value); - } + add => _events.AddHandler(EvUnhandledCall, value); + remove => _events.RemoveHandler(EvUnhandledCall, value); } public void OnUnhandledCall(UnhandledCallEventArgs e) { - (this.__Events[__evUnhandledCall] as EventHandler)?.Invoke(this, e); + (_events[EvUnhandledCall] as EventHandler)?.Invoke(this, e); } diff --git a/TelegramBotBase/Builder/BotBaseBuilder.cs b/TelegramBotBase/Builder/BotBaseBuilder.cs index 6ad24ee..216d09f 100644 --- a/TelegramBotBase/Builder/BotBaseBuilder.cs +++ b/TelegramBotBase/Builder/BotBaseBuilder.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Net.Http; -using System.Text; using Telegram.Bot; using Telegram.Bot.Types; using TelegramBotBase.Base; @@ -11,29 +10,27 @@ using TelegramBotBase.Factories; using TelegramBotBase.Form; using TelegramBotBase.Interfaces; using TelegramBotBase.Localizations; +using TelegramBotBase.MessageLoops; using TelegramBotBase.States; namespace TelegramBotBase.Builder { public class BotBaseBuilder : IAPIKeySelectionStage, IMessageLoopSelectionStage, IStartFormSelectionStage, IBuildingStage, INetworkingSelectionStage, IBotCommandsStage, ISessionSerializationStage, ILanguageSelectionStage { + private string _apiKey; - String _apiKey = null; + private IStartFormFactory _factory; - IStartFormFactory _factory = null; - - MessageClient _client = null; + private MessageClient _client; /// /// Contains different Botcommands for different areas. /// - Dictionary> _BotCommandScopes { get; set; } = new Dictionary>(); + private Dictionary> BotCommandScopes { get; set; } = new Dictionary>(); - //List _botcommands = new List(); + private IStateMachine _statemachine; - IStateMachine _statemachine = null; - - IMessageLoopFactory _messageloopfactory = null; + private IMessageLoopFactory _messageLoopFactory; private BotBaseBuilder() { @@ -49,15 +46,15 @@ namespace TelegramBotBase.Builder public IMessageLoopSelectionStage WithAPIKey(string apiKey) { - this._apiKey = apiKey; + _apiKey = apiKey; return this; } public IBuildingStage QuickStart(string apiKey, Type StartForm) { - this._apiKey = apiKey; - this._factory = new Factories.DefaultStartFormFactory(StartForm); + _apiKey = apiKey; + _factory = new DefaultStartFormFactory(StartForm); DefaultMessageLoop(); @@ -76,8 +73,8 @@ namespace TelegramBotBase.Builder public IBuildingStage QuickStart(string apiKey) where T : FormBase { - this._apiKey = apiKey; - this._factory = new Factories.DefaultStartFormFactory(typeof(T)); + _apiKey = apiKey; + _factory = new DefaultStartFormFactory(typeof(T)); DefaultMessageLoop(); @@ -94,8 +91,8 @@ namespace TelegramBotBase.Builder public IBuildingStage QuickStart(string apiKey, IStartFormFactory StartFormFactory) { - this._apiKey = apiKey; - this._factory = StartFormFactory; + _apiKey = apiKey; + _factory = StartFormFactory; DefaultMessageLoop(); @@ -117,7 +114,7 @@ namespace TelegramBotBase.Builder public IStartFormSelectionStage DefaultMessageLoop() { - _messageloopfactory = new MessageLoops.FormBaseMessageLoop(); + _messageLoopFactory = new FormBaseMessageLoop(); return this; } @@ -125,7 +122,7 @@ namespace TelegramBotBase.Builder public IStartFormSelectionStage MinimalMessageLoop() { - _messageloopfactory = new MessageLoops.MinimalMessageLoop(); + _messageLoopFactory = new MinimalMessageLoop(); return this; } @@ -133,7 +130,7 @@ namespace TelegramBotBase.Builder public IStartFormSelectionStage CustomMessageLoop(IMessageLoopFactory messageLoopClass) { - _messageloopfactory = messageLoopClass; + _messageLoopFactory = messageLoopClass; return this; } @@ -141,7 +138,7 @@ namespace TelegramBotBase.Builder public IStartFormSelectionStage CustomMessageLoop() where T : class, new() { - _messageloopfactory = typeof(T).GetConstructor(new Type[] { })?.Invoke(new object[] { }) as IMessageLoopFactory; + _messageLoopFactory = typeof(T).GetConstructor(new Type[] { })?.Invoke(new object[] { }) as IMessageLoopFactory; return this; } @@ -153,33 +150,33 @@ namespace TelegramBotBase.Builder public INetworkingSelectionStage WithStartForm(Type startFormClass) { - this._factory = new Factories.DefaultStartFormFactory(startFormClass); + _factory = new DefaultStartFormFactory(startFormClass); return this; } public INetworkingSelectionStage WithStartForm() where T : FormBase, new() { - this._factory = new Factories.DefaultStartFormFactory(typeof(T)); + _factory = new DefaultStartFormFactory(typeof(T)); return this; } public INetworkingSelectionStage WithServiceProvider(Type startFormClass, IServiceProvider serviceProvider) { - this._factory = new ServiceProviderStartFormFactory(startFormClass, serviceProvider); + _factory = new ServiceProviderStartFormFactory(startFormClass, serviceProvider); return this; } public INetworkingSelectionStage WithServiceProvider(IServiceProvider serviceProvider) where T : FormBase { - this._factory = new ServiceProviderStartFormFactory(serviceProvider); + _factory = new ServiceProviderStartFormFactory(serviceProvider); return this; } public INetworkingSelectionStage WithStartFormFactory(IStartFormFactory factory) { - this._factory = factory; + _factory = factory; return this; } @@ -191,39 +188,64 @@ namespace TelegramBotBase.Builder public IBotCommandsStage WithProxy(string proxyAddress) { var url = new Uri(proxyAddress); - _client = new MessageClient(_apiKey, url); - _client.TelegramClient.Timeout = new TimeSpan(0, 1, 0); + _client = new MessageClient(_apiKey, url) + { + TelegramClient = + { + Timeout = new TimeSpan(0, 1, 0) + } + }; return this; } public IBotCommandsStage NoProxy() { - _client = new MessageClient(_apiKey); - _client.TelegramClient.Timeout = new TimeSpan(0, 1, 0); + _client = new MessageClient(_apiKey) + { + TelegramClient = + { + Timeout = new TimeSpan(0, 1, 0) + } + }; return this; } public IBotCommandsStage WithBotClient(TelegramBotClient tgclient) { - _client = new MessageClient(_apiKey, tgclient); - _client.TelegramClient.Timeout = new TimeSpan(0, 1, 0); + _client = new MessageClient(_apiKey, tgclient) + { + TelegramClient = + { + Timeout = new TimeSpan(0, 1, 0) + } + }; return this; } public IBotCommandsStage WithHostAndPort(string proxyHost, int proxyPort) { - _client = new MessageClient(_apiKey, proxyHost, proxyPort); - _client.TelegramClient.Timeout = new TimeSpan(0, 1, 0); + _client = new MessageClient(_apiKey, proxyHost, proxyPort) + { + TelegramClient = + { + Timeout = new TimeSpan(0, 1, 0) + } + }; return this; } public IBotCommandsStage WithHttpClient(HttpClient tgclient) { - _client = new MessageClient(_apiKey, tgclient); - _client.TelegramClient.Timeout = new TimeSpan(0, 1, 0); + _client = new MessageClient(_apiKey, tgclient) + { + TelegramClient = + { + Timeout = new TimeSpan(0, 1, 0) + } + }; return this; } @@ -240,7 +262,7 @@ namespace TelegramBotBase.Builder public ISessionSerializationStage OnlyStart() { - _BotCommandScopes.Start("Starts the bot"); + BotCommandScopes.Start("Starts the bot"); return this; @@ -248,15 +270,15 @@ namespace TelegramBotBase.Builder public ISessionSerializationStage DefaultCommands() { - _BotCommandScopes.Start("Starts the bot"); - _BotCommandScopes.Help("Should show you some help"); - _BotCommandScopes.Settings("Should show you some settings"); + BotCommandScopes.Start("Starts the bot"); + BotCommandScopes.Help("Should show you some help"); + BotCommandScopes.Settings("Should show you some settings"); return this; } public ISessionSerializationStage CustomCommands(Action>> action) { - action?.Invoke(_BotCommandScopes); + action?.Invoke(BotCommandScopes); return this; } @@ -272,26 +294,26 @@ namespace TelegramBotBase.Builder public ILanguageSelectionStage UseSerialization(IStateMachine machine) { - this._statemachine = machine; + _statemachine = machine; return this; } public ILanguageSelectionStage UseJSON(string path) { - this._statemachine = new JSONStateMachine(path); + _statemachine = new JsonStateMachine(path); return this; } public ILanguageSelectionStage UseSimpleJSON(string path) { - this._statemachine = new SimpleJSONStateMachine(path); + _statemachine = new SimpleJsonStateMachine(path); return this; } public ILanguageSelectionStage UseXML(string path) { - this._statemachine = new XMLStateMachine(path); + _statemachine = new XmlStateMachine(path); return this; } @@ -307,19 +329,19 @@ namespace TelegramBotBase.Builder public IBuildingStage UseEnglish() { - Localizations.Default.Language = new Localizations.English(); + Default.Language = new English(); return this; } public IBuildingStage UseGerman() { - Localizations.Default.Language = new Localizations.German(); + Default.Language = new German(); return this; } public IBuildingStage Custom(Localization language) { - Localizations.Default.Language = language; + Default.Language = language; return this; } @@ -328,20 +350,20 @@ namespace TelegramBotBase.Builder public BotBase Build() { - var bb = new BotBase(); - - bb.APIKey = _apiKey; - bb.StartFormFactory = _factory; - - bb.Client = _client; + var bb = new BotBase + { + ApiKey = _apiKey, + StartFormFactory = _factory, + Client = _client + }; bb.Sessions.Client = bb.Client; - bb.BotCommandScopes = _BotCommandScopes; + bb.BotCommandScopes = BotCommandScopes; bb.StateMachine = _statemachine; - bb.MessageLoopFactory = _messageloopfactory; + bb.MessageLoopFactory = _messageLoopFactory; bb.MessageLoopFactory.UnhandledCall += bb.MessageLoopFactory_UnhandledCall; diff --git a/TelegramBotBase/Builder/Interfaces/IAPIKeySelectionStage.cs b/TelegramBotBase/Builder/Interfaces/IAPIKeySelectionStage.cs index bd6f05e..44a1bb8 100644 --- a/TelegramBotBase/Builder/Interfaces/IAPIKeySelectionStage.cs +++ b/TelegramBotBase/Builder/Interfaces/IAPIKeySelectionStage.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; using TelegramBotBase.Form; using TelegramBotBase.Interfaces; @@ -13,7 +11,7 @@ namespace TelegramBotBase.Builder.Interfaces /// /// /// - IMessageLoopSelectionStage WithAPIKey(String apiKey); + IMessageLoopSelectionStage WithAPIKey(string apiKey); /// @@ -23,7 +21,7 @@ namespace TelegramBotBase.Builder.Interfaces /// /// /// - IBuildingStage QuickStart(String apiKey, Type StartForm); + IBuildingStage QuickStart(string apiKey, Type StartForm); /// /// Quick and easy way to create a BotBase instance. @@ -31,7 +29,7 @@ namespace TelegramBotBase.Builder.Interfaces /// /// /// - IBuildingStage QuickStart(String apiKey) where T : FormBase; + IBuildingStage QuickStart(string apiKey) where T : FormBase; /// /// Quick and easy way to create a BotBase instance. @@ -40,6 +38,6 @@ namespace TelegramBotBase.Builder.Interfaces /// /// /// - IBuildingStage QuickStart(String apiKey, IStartFormFactory StartFormFactory); + IBuildingStage QuickStart(string apiKey, IStartFormFactory StartFormFactory); } } diff --git a/TelegramBotBase/Builder/Interfaces/IBotCommandsStage.cs b/TelegramBotBase/Builder/Interfaces/IBotCommandsStage.cs index a275090..2b83453 100644 --- a/TelegramBotBase/Builder/Interfaces/IBotCommandsStage.cs +++ b/TelegramBotBase/Builder/Interfaces/IBotCommandsStage.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Text; using Telegram.Bot.Types; namespace TelegramBotBase.Builder.Interfaces diff --git a/TelegramBotBase/Builder/Interfaces/IBuildingStage.cs b/TelegramBotBase/Builder/Interfaces/IBuildingStage.cs index 8313b0b..d5b70df 100644 --- a/TelegramBotBase/Builder/Interfaces/IBuildingStage.cs +++ b/TelegramBotBase/Builder/Interfaces/IBuildingStage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace TelegramBotBase.Builder.Interfaces +namespace TelegramBotBase.Builder.Interfaces { public interface IBuildingStage { diff --git a/TelegramBotBase/Builder/Interfaces/ILanguageSelectionStage.cs b/TelegramBotBase/Builder/Interfaces/ILanguageSelectionStage.cs index 2e5e01a..b7bbd28 100644 --- a/TelegramBotBase/Builder/Interfaces/ILanguageSelectionStage.cs +++ b/TelegramBotBase/Builder/Interfaces/ILanguageSelectionStage.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using TelegramBotBase.Localizations; +using TelegramBotBase.Localizations; namespace TelegramBotBase.Builder.Interfaces { diff --git a/TelegramBotBase/Builder/Interfaces/IMessageLoopSelectionStage.cs b/TelegramBotBase/Builder/Interfaces/IMessageLoopSelectionStage.cs index 429a81d..b9a8df0 100644 --- a/TelegramBotBase/Builder/Interfaces/IMessageLoopSelectionStage.cs +++ b/TelegramBotBase/Builder/Interfaces/IMessageLoopSelectionStage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using TelegramBotBase.Form; -using TelegramBotBase.Interfaces; +using TelegramBotBase.Interfaces; namespace TelegramBotBase.Builder.Interfaces { diff --git a/TelegramBotBase/Builder/Interfaces/INetworkingSelectionStage.cs b/TelegramBotBase/Builder/Interfaces/INetworkingSelectionStage.cs index 4b5bcce..a7b0d8e 100644 --- a/TelegramBotBase/Builder/Interfaces/INetworkingSelectionStage.cs +++ b/TelegramBotBase/Builder/Interfaces/INetworkingSelectionStage.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Net.Http; -using System.Text; +using System.Net.Http; using Telegram.Bot; namespace TelegramBotBase.Builder.Interfaces @@ -14,7 +11,7 @@ namespace TelegramBotBase.Builder.Interfaces /// /// /// - IBotCommandsStage WithProxy(String proxyAddress); + IBotCommandsStage WithProxy(string proxyAddress); /// /// Do not choose a proxy as network configuration. @@ -37,7 +34,7 @@ namespace TelegramBotBase.Builder.Interfaces /// /// /// - IBotCommandsStage WithHostAndPort(String proxyHost, int Port); + IBotCommandsStage WithHostAndPort(string proxyHost, int Port); /// /// Uses a custom http client. diff --git a/TelegramBotBase/Builder/Interfaces/ISessionSerializationStage.cs b/TelegramBotBase/Builder/Interfaces/ISessionSerializationStage.cs index a729da2..9adc70f 100644 --- a/TelegramBotBase/Builder/Interfaces/ISessionSerializationStage.cs +++ b/TelegramBotBase/Builder/Interfaces/ISessionSerializationStage.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using TelegramBotBase.Interfaces; +using TelegramBotBase.Interfaces; namespace TelegramBotBase.Builder.Interfaces { @@ -27,7 +24,7 @@ namespace TelegramBotBase.Builder.Interfaces /// /// /// - ILanguageSelectionStage UseJSON(String path); + ILanguageSelectionStage UseJSON(string path); /// @@ -35,7 +32,7 @@ namespace TelegramBotBase.Builder.Interfaces /// /// /// - ILanguageSelectionStage UseSimpleJSON(String path); + ILanguageSelectionStage UseSimpleJSON(string path); /// @@ -43,7 +40,7 @@ namespace TelegramBotBase.Builder.Interfaces /// /// /// - ILanguageSelectionStage UseXML(String path); + ILanguageSelectionStage UseXML(string path); } } diff --git a/TelegramBotBase/Builder/Interfaces/IStartFormSelectionStage.cs b/TelegramBotBase/Builder/Interfaces/IStartFormSelectionStage.cs index 78692ea..52c1890 100644 --- a/TelegramBotBase/Builder/Interfaces/IStartFormSelectionStage.cs +++ b/TelegramBotBase/Builder/Interfaces/IStartFormSelectionStage.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; using TelegramBotBase.Form; using TelegramBotBase.Interfaces; diff --git a/TelegramBotBase/Commands/Extensions.cs b/TelegramBotBase/Commands/Extensions.cs index 8237d4f..55721b8 100644 --- a/TelegramBotBase/Commands/Extensions.cs +++ b/TelegramBotBase/Commands/Extensions.cs @@ -1,8 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Data; +using System.Collections.Generic; using System.Linq; -using System.Text; using Telegram.Bot.Types; namespace TelegramBotBase.Commands @@ -15,7 +12,7 @@ namespace TelegramBotBase.Commands /// /// /// - public static void Add(this Dictionary> cmds, String command, String description, BotCommandScope scope = null) + public static void Add(this Dictionary> cmds, string command, string description, BotCommandScope scope = null) { if (scope == null) { @@ -26,11 +23,11 @@ namespace TelegramBotBase.Commands if (item.Value != null) { - item.Value.Add(new BotCommand() { Command = command, Description = description }); + item.Value.Add(new BotCommand { Command = command, Description = description }); } else { - cmds.Add(scope, new List { new BotCommand() { Command = command, Description = description } }); + cmds.Add(scope, new List { new BotCommand { Command = command, Description = description } }); } } @@ -64,33 +61,33 @@ namespace TelegramBotBase.Commands /// /// /// - public static void Start(this Dictionary> cmds, String description) => Add(cmds, "start", description, null); + public static void Start(this Dictionary> cmds, string description) => Add(cmds, "start", description); /// /// Adding the default /help command with a description. /// /// /// - public static void Help(this Dictionary> cmds, String description) => Add(cmds, "help", description, null); + public static void Help(this Dictionary> cmds, string description) => Add(cmds, "help", description); /// /// Adding the default /settings command with a description. /// /// /// - public static void Settings(this Dictionary> cmds, String description) => Add(cmds, "settings", description, null); + public static void Settings(this Dictionary> cmds, string description) => Add(cmds, "settings", description); /// /// Clears all default commands. /// /// - public static void ClearDefaultCommands(this Dictionary> cmds) => Clear(cmds, null); + public static void ClearDefaultCommands(this Dictionary> cmds) => Clear(cmds); /// /// Clears all commands of a specific device. /// /// - public static void ClearChatCommands(this Dictionary> cmds, long DeviceId) => Clear(cmds, new BotCommandScopeChat() { ChatId = DeviceId }); + public static void ClearChatCommands(this Dictionary> cmds, long deviceId) => Clear(cmds, new BotCommandScopeChat { ChatId = deviceId }); /// /// Adding a chat command with a description. @@ -98,7 +95,7 @@ namespace TelegramBotBase.Commands /// /// /// - public static void AddChatCommand(this Dictionary> cmds, long DeviceId, String command, String description) => Add(cmds, command, description, new BotCommandScopeChat() { ChatId = DeviceId }); + public static void AddChatCommand(this Dictionary> cmds, long deviceId, string command, string description) => Add(cmds, command, description, new BotCommandScopeChat { ChatId = deviceId }); /// /// Adding a group command with a description. @@ -106,7 +103,7 @@ namespace TelegramBotBase.Commands /// /// /// - public static void AddGroupCommand(this Dictionary> cmds, String command, String description) => Add(cmds, command, description, new BotCommandScopeAllGroupChats()); + public static void AddGroupCommand(this Dictionary> cmds, string command, string description) => Add(cmds, command, description, new BotCommandScopeAllGroupChats()); /// /// Clears all group commands. @@ -120,7 +117,7 @@ namespace TelegramBotBase.Commands /// /// /// - public static void AddGroupAdminCommand(this Dictionary> cmds, String command, String description) => Add(cmds, command, description, new BotCommandScopeAllChatAdministrators()); + public static void AddGroupAdminCommand(this Dictionary> cmds, string command, string description) => Add(cmds, command, description, new BotCommandScopeAllChatAdministrators()); /// /// Clears all group admin commands. @@ -134,7 +131,7 @@ namespace TelegramBotBase.Commands /// /// /// - public static void AddPrivateChatCommand(this Dictionary> cmds, String command, String description) => Add(cmds, command, description, new BotCommandScopeAllPrivateChats()); + public static void AddPrivateChatCommand(this Dictionary> cmds, string command, string description) => Add(cmds, command, description, new BotCommandScopeAllPrivateChats()); /// /// Clears all private commands. diff --git a/TelegramBotBase/Constants/Telegram.cs b/TelegramBotBase/Constants/Telegram.cs index d203123..a669022 100644 --- a/TelegramBotBase/Constants/Telegram.cs +++ b/TelegramBotBase/Constants/Telegram.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TelegramBotBase.Constants +namespace TelegramBotBase.Constants { public static class Telegram { diff --git a/TelegramBotBase/Controls/Hybrid/ButtonGrid.cs b/TelegramBotBase/Controls/Hybrid/ButtonGrid.cs index d62179f..f8662b2 100644 --- a/TelegramBotBase/Controls/Hybrid/ButtonGrid.cs +++ b/TelegramBotBase/Controls/Hybrid/ButtonGrid.cs @@ -1,50 +1,43 @@ using System; using System.Collections.Generic; using System.ComponentModel; -using System.Diagnostics.SymbolStore; using System.Linq; -using System.Text; using System.Threading.Tasks; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; using Telegram.Bot.Types.ReplyMarkups; using TelegramBotBase.Args; using TelegramBotBase.Base; -using TelegramBotBase.Datasources; +using TelegramBotBase.DataSources; using TelegramBotBase.Enums; using TelegramBotBase.Exceptions; using TelegramBotBase.Form; +using TelegramBotBase.Localizations; using static TelegramBotBase.Base.Async; namespace TelegramBotBase.Controls.Hybrid { - public class ButtonGrid : Base.ControlBase + public class ButtonGrid : ControlBase { - public String Title { get; set; } = Localizations.Default.Language["ButtonGrid_Title"]; + public string Title { get; set; } = Default.Language["ButtonGrid_Title"]; - public String ConfirmationText { get; set; } = ""; + public string ConfirmationText { get; set; } = ""; - private bool RenderNecessary = true; + private bool _renderNecessary = true; - private static readonly object __evButtonClicked = new object(); + private static readonly object EvButtonClicked = new object(); - private readonly EventHandlerList Events = new EventHandlerList(); + private readonly EventHandlerList _events = new EventHandlerList(); /// - /// + /// /// [Obsolete("This property is obsolete. Please use the DataSource property instead.")] public ButtonForm ButtonsForm { - get - { - return DataSource.ButtonForm; - } - set - { - DataSource = new ButtonFormDataSource(value); - } + get => DataSource.ButtonForm; + set => DataSource = new ButtonFormDataSource(value); } /// @@ -88,23 +81,23 @@ namespace TelegramBotBase.Controls.Hybrid /// public bool EnableSearch { get; set; } = false; - public String SearchQuery { get; set; } + public string SearchQuery { get; set; } - public eNavigationBarVisibility NavigationBarVisibility { get; set; } = eNavigationBarVisibility.always; + public ENavigationBarVisibility NavigationBarVisibility { get; set; } = ENavigationBarVisibility.always; /// /// Index of the current page /// - public int CurrentPageIndex { get; set; } = 0; + public int CurrentPageIndex { get; set; } - public String PreviousPageLabel = Localizations.Default.Language["ButtonGrid_PreviousPage"]; + public string PreviousPageLabel = Default.Language["ButtonGrid_PreviousPage"]; - public String NextPageLabel = Localizations.Default.Language["ButtonGrid_NextPage"]; + public string NextPageLabel = Default.Language["ButtonGrid_NextPage"]; - public String NoItemsLabel = Localizations.Default.Language["ButtonGrid_NoItems"]; + public string NoItemsLabel = Default.Language["ButtonGrid_NoItems"]; - public String SearchLabel = Localizations.Default.Language["ButtonGrid_SearchFeature"]; + public string SearchLabel = Default.Language["ButtonGrid_SearchFeature"]; /// /// Layout of the buttons which should be displayed always on top. @@ -119,89 +112,80 @@ namespace TelegramBotBase.Controls.Hybrid /// /// Defines which type of Button Keyboard should be rendered. /// - public eKeyboardType KeyboardType + public EKeyboardType KeyboardType { - get - { - return m_eKeyboardType; - } + get => _mEKeyboardType; set { - if (m_eKeyboardType != value) + if (_mEKeyboardType != value) { - this.RenderNecessary = true; + _renderNecessary = true; Cleanup().Wait(); - m_eKeyboardType = value; + _mEKeyboardType = value; } } } - private eKeyboardType m_eKeyboardType = eKeyboardType.ReplyKeyboard; + private EKeyboardType _mEKeyboardType = EKeyboardType.ReplyKeyboard; public ButtonGrid() { - this.DataSource = new ButtonFormDataSource(); + DataSource = new ButtonFormDataSource(); } - public ButtonGrid(eKeyboardType type) : this() + public ButtonGrid(EKeyboardType type) : this() { - m_eKeyboardType = type; + _mEKeyboardType = type; } public ButtonGrid(ButtonForm form) { - this.DataSource = new ButtonFormDataSource(form); + DataSource = new ButtonFormDataSource(form); } public event AsyncEventHandler ButtonClicked { - add - { - this.Events.AddHandler(__evButtonClicked, value); - } - remove - { - this.Events.RemoveHandler(__evButtonClicked, value); - } + add => _events.AddHandler(EvButtonClicked, value); + remove => _events.RemoveHandler(EvButtonClicked, value); } public async Task OnButtonClicked(ButtonClickedEventArgs e) { - var handler = this.Events[__evButtonClicked]?.GetInvocationList().Cast>(); + var handler = _events[EvButtonClicked]?.GetInvocationList().Cast>(); if (handler == null) return; foreach (var h in handler) { - await Async.InvokeAllAsync(h, this, e); + await h.InvokeAllAsync(this, e); } } public override void Init() { - this.Device.MessageDeleted += Device_MessageDeleted; + Device.MessageDeleted += Device_MessageDeleted; } private void Device_MessageDeleted(object sender, MessageDeletedEventArgs e) { - if (this.MessageId == null) + if (MessageId == null) return; - if (e.MessageId != this.MessageId) + if (e.MessageId != MessageId) return; - this.MessageId = null; + MessageId = null; } - public async override Task Load(MessageResult result) + public override async Task Load(MessageResult result) { - if (this.KeyboardType != eKeyboardType.ReplyKeyboard) + if (KeyboardType != EKeyboardType.ReplyKeyboard) return; if (!result.IsFirstHandler) @@ -212,7 +196,7 @@ namespace TelegramBotBase.Controls.Hybrid var matches = new List(); ButtonRow match = null; - int index = -1; + var index = -1; if (HeadLayoutButtonRow?.Matches(result.MessageText) ?? false) { @@ -244,7 +228,7 @@ namespace TelegramBotBase.Controls.Hybrid check: //Remove button click message - if (this.DeleteReplyMessage) + if (DeleteReplyMessage) await Device.DeleteMessage(result.MessageId); if (match != null) @@ -258,39 +242,39 @@ namespace TelegramBotBase.Controls.Hybrid if (result.MessageText == PreviousPageLabel) { - if (this.CurrentPageIndex > 0) - this.CurrentPageIndex--; + if (CurrentPageIndex > 0) + CurrentPageIndex--; - this.Updated(); + Updated(); } else if (result.MessageText == NextPageLabel) { - if (this.CurrentPageIndex < this.PageCount - 1) - this.CurrentPageIndex++; + if (CurrentPageIndex < PageCount - 1) + CurrentPageIndex++; - this.Updated(); + Updated(); } - else if (this.EnableSearch) + else if (EnableSearch) { if (result.MessageText.StartsWith("🔍")) { //Sent note about searching - if (this.SearchQuery == null) + if (SearchQuery == null) { - await this.Device.Send(this.SearchLabel); + await Device.Send(SearchLabel); } - this.SearchQuery = null; - this.Updated(); + SearchQuery = null; + Updated(); return; } - this.SearchQuery = result.MessageText; + SearchQuery = result.MessageText; - if (this.SearchQuery != null && this.SearchQuery != "") + if (SearchQuery != null && SearchQuery != "") { - this.CurrentPageIndex = 0; - this.Updated(); + CurrentPageIndex = 0; + Updated(); } } @@ -299,7 +283,7 @@ namespace TelegramBotBase.Controls.Hybrid } - public async override Task Action(MessageResult result, string value = null) + public override async Task Action(MessageResult result, string value = null) { if (result.Handled) return; @@ -308,13 +292,13 @@ namespace TelegramBotBase.Controls.Hybrid return; //Find clicked button depending on Text or Value (depending on markup type) - if (this.KeyboardType != eKeyboardType.InlineKeyBoard) + if (KeyboardType != EKeyboardType.InlineKeyBoard) return; - await result.ConfirmAction(this.ConfirmationText ?? ""); + await result.ConfirmAction(ConfirmationText ?? ""); ButtonRow match = null; - int index = -1; + var index = -1; if (HeadLayoutButtonRow?.Matches(result.RawData, false) ?? false) { @@ -358,18 +342,18 @@ namespace TelegramBotBase.Controls.Hybrid { case "$previous$": - if (this.CurrentPageIndex > 0) - this.CurrentPageIndex--; + if (CurrentPageIndex > 0) + CurrentPageIndex--; - this.Updated(); + Updated(); break; case "$next$": - if (this.CurrentPageIndex < this.PageCount - 1) - this.CurrentPageIndex++; + if (CurrentPageIndex < PageCount - 1) + CurrentPageIndex++; - this.Updated(); + Updated(); break; } @@ -381,49 +365,49 @@ namespace TelegramBotBase.Controls.Hybrid /// private void CheckGrid() { - switch (m_eKeyboardType) + switch (_mEKeyboardType) { - case eKeyboardType.InlineKeyBoard: + case EKeyboardType.InlineKeyBoard: - if (DataSource.RowCount > Constants.Telegram.MaxInlineKeyBoardRows && !this.EnablePaging) + if (DataSource.RowCount > Constants.Telegram.MaxInlineKeyBoardRows && !EnablePaging) { - throw new MaximumRowsReachedException() { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxInlineKeyBoardRows }; + throw new MaximumRowsReachedException { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxInlineKeyBoardRows }; } if (DataSource.ColumnCount > Constants.Telegram.MaxInlineKeyBoardCols) { - throw new MaximumColsException() { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxInlineKeyBoardCols }; + throw new MaximumColsException { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxInlineKeyBoardCols }; } break; - case eKeyboardType.ReplyKeyboard: + case EKeyboardType.ReplyKeyboard: - if (DataSource.RowCount > Constants.Telegram.MaxReplyKeyboardRows && !this.EnablePaging) + if (DataSource.RowCount > Constants.Telegram.MaxReplyKeyboardRows && !EnablePaging) { - throw new MaximumRowsReachedException() { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxReplyKeyboardRows }; + throw new MaximumRowsReachedException { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxReplyKeyboardRows }; } if (DataSource.ColumnCount > Constants.Telegram.MaxReplyKeyboardCols) { - throw new MaximumColsException() { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxReplyKeyboardCols }; + throw new MaximumColsException { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxReplyKeyboardCols }; } break; } } - public async override Task Render(MessageResult result) + public override async Task Render(MessageResult result) { - if (!this.RenderNecessary) + if (!_renderNecessary) return; //Check for rows and column limits CheckGrid(); - this.RenderNecessary = false; + _renderNecessary = false; - ButtonForm form = this.DataSource.PickItems(CurrentPageIndex * ItemRowsPerPage, ItemRowsPerPage, (this.EnableSearch ? this.SearchQuery : null)); + var form = DataSource.PickItems(CurrentPageIndex * ItemRowsPerPage, ItemRowsPerPage, (EnableSearch ? SearchQuery : null)); //if (this.EnableSearch && this.SearchQuery != null && this.SearchQuery != "") @@ -435,42 +419,42 @@ namespace TelegramBotBase.Controls.Hybrid // form = form.Duplicate(); //} - if (this.EnablePaging) + if (EnablePaging) { IntegratePagingView(form); } - if (this.HeadLayoutButtonRow != null && HeadLayoutButtonRow.Count > 0) + if (HeadLayoutButtonRow != null && HeadLayoutButtonRow.Count > 0) { - form.InsertButtonRow(0, this.HeadLayoutButtonRow); + form.InsertButtonRow(0, HeadLayoutButtonRow); } - if (this.SubHeadLayoutButtonRow != null && SubHeadLayoutButtonRow.Count > 0) + if (SubHeadLayoutButtonRow != null && SubHeadLayoutButtonRow.Count > 0) { - if (this.IsNavigationBarVisible) + if (IsNavigationBarVisible) { - form.InsertButtonRow(2, this.SubHeadLayoutButtonRow); + form.InsertButtonRow(2, SubHeadLayoutButtonRow); } else { - form.InsertButtonRow(1, this.SubHeadLayoutButtonRow); + form.InsertButtonRow(1, SubHeadLayoutButtonRow); } } Message m = null; - switch (this.KeyboardType) + switch (KeyboardType) { //Reply Keyboard could only be updated with a new keyboard. - case eKeyboardType.ReplyKeyboard: + case EKeyboardType.ReplyKeyboard: if (form.Count == 0) { - if (this.MessageId != null) + if (MessageId != null) { - await this.Device.HideReplyKeyboard(); - this.MessageId = null; + await Device.HideReplyKeyboard(); + MessageId = null; } return; @@ -491,39 +475,39 @@ namespace TelegramBotBase.Controls.Hybrid var rkm = (ReplyKeyboardMarkup)form; - rkm.ResizeKeyboard = this.ResizeKeyboard; - rkm.OneTimeKeyboard = this.OneTimeKeyboard; - m = await this.Device.Send(this.Title, rkm, disableNotification: true, parseMode: MessageParseMode, MarkdownV2AutoEscape: false); + rkm.ResizeKeyboard = ResizeKeyboard; + rkm.OneTimeKeyboard = OneTimeKeyboard; + m = await Device.Send(Title, rkm, disableNotification: true, parseMode: MessageParseMode, markdownV2AutoEscape: false); //Prevent flicker of keyboard - if (this.DeletePreviousMessage && this.MessageId != null) - await this.Device.DeleteMessage(this.MessageId.Value); + if (DeletePreviousMessage && MessageId != null) + await Device.DeleteMessage(MessageId.Value); break; - case eKeyboardType.InlineKeyBoard: + case EKeyboardType.InlineKeyBoard: //Try to edit message if message id is available //When the returned message is null then the message has been already deleted, resend it - if (this.MessageId != null) + if (MessageId != null) { - m = await this.Device.Edit(this.MessageId.Value, this.Title, (InlineKeyboardMarkup)form); + m = await Device.Edit(MessageId.Value, Title, (InlineKeyboardMarkup)form); if (m != null) { - this.MessageId = m.MessageId; + MessageId = m.MessageId; return; } } //When no message id is available or it has been deleted due the use of AutoCleanForm re-render automatically - m = await this.Device.Send(this.Title, (InlineKeyboardMarkup)form, disableNotification: true, parseMode: MessageParseMode, MarkdownV2AutoEscape: false); + m = await Device.Send(Title, (InlineKeyboardMarkup)form, disableNotification: true, parseMode: MessageParseMode, markdownV2AutoEscape: false); break; } if (m != null) { - this.MessageId = m.MessageId; + MessageId = m.MessageId; } @@ -531,23 +515,23 @@ namespace TelegramBotBase.Controls.Hybrid private void IntegratePagingView(ButtonForm dataForm) { - //No Items + //No Items if (dataForm.Rows == 0) { dataForm.AddButtonRow(new ButtonBase(NoItemsLabel, "$")); } - if (this.IsNavigationBarVisible) + if (IsNavigationBarVisible) { //🔍 - ButtonRow row = new ButtonRow(); + var row = new ButtonRow(); row.Add(new ButtonBase(PreviousPageLabel, "$previous$")); - row.Add(new ButtonBase(String.Format(Localizations.Default.Language["ButtonGrid_CurrentPage"], this.CurrentPageIndex + 1, this.PageCount), "$site$")); + row.Add(new ButtonBase(string.Format(Default.Language["ButtonGrid_CurrentPage"], CurrentPageIndex + 1, PageCount), "$site$")); row.Add(new ButtonBase(NextPageLabel, "$next$")); - if (this.EnableSearch) + if (EnableSearch) { - row.Insert(2, new ButtonBase("🔍 " + (this.SearchQuery ?? ""), "$search$")); + row.Insert(2, new ButtonBase("🔍 " + (SearchQuery ?? ""), "$search$")); } dataForm.InsertButtonRow(0, row); @@ -560,12 +544,12 @@ namespace TelegramBotBase.Controls.Hybrid { get { - if (this.KeyboardType == eKeyboardType.InlineKeyBoard && TotalRows > Constants.Telegram.MaxInlineKeyBoardRows) + if (KeyboardType == EKeyboardType.InlineKeyBoard && TotalRows > Constants.Telegram.MaxInlineKeyBoardRows) { return true; } - if (this.KeyboardType == eKeyboardType.ReplyKeyboard && TotalRows > Constants.Telegram.MaxReplyKeyboardRows) + if (KeyboardType == EKeyboardType.ReplyKeyboard && TotalRows > Constants.Telegram.MaxReplyKeyboardRows) { return true; } @@ -578,7 +562,7 @@ namespace TelegramBotBase.Controls.Hybrid { get { - if (this.NavigationBarVisibility == eNavigationBarVisibility.always | (this.NavigationBarVisibility == eNavigationBarVisibility.auto && PagingNecessary)) + if (NavigationBarVisibility == ENavigationBarVisibility.always | (NavigationBarVisibility == ENavigationBarVisibility.auto && PagingNecessary)) { return true; } @@ -594,30 +578,19 @@ namespace TelegramBotBase.Controls.Hybrid { get { - switch (this.KeyboardType) + return KeyboardType switch { - case eKeyboardType.InlineKeyBoard: - return Constants.Telegram.MaxInlineKeyBoardRows; - - case eKeyboardType.ReplyKeyboard: - return Constants.Telegram.MaxReplyKeyboardRows; - - default: - return 0; - } + EKeyboardType.InlineKeyBoard => Constants.Telegram.MaxInlineKeyBoardRows, + EKeyboardType.ReplyKeyboard => Constants.Telegram.MaxReplyKeyboardRows, + _ => 0 + }; } } /// /// Returns the number of all rows (layout + navigation + content); /// - public int TotalRows - { - get - { - return this.LayoutRows + DataSource.RowCount; - } - } + public int TotalRows => LayoutRows + DataSource.RowCount; /// @@ -627,15 +600,15 @@ namespace TelegramBotBase.Controls.Hybrid { get { - int layoutRows = 0; + var layoutRows = 0; - if (this.NavigationBarVisibility == eNavigationBarVisibility.always | this.NavigationBarVisibility == eNavigationBarVisibility.auto) + if (NavigationBarVisibility == ENavigationBarVisibility.always | NavigationBarVisibility == ENavigationBarVisibility.auto) layoutRows += 2; - if (this.HeadLayoutButtonRow != null && this.HeadLayoutButtonRow.Count > 0) + if (HeadLayoutButtonRow != null && HeadLayoutButtonRow.Count > 0) layoutRows++; - if (this.SubHeadLayoutButtonRow != null && this.SubHeadLayoutButtonRow.Count > 0) + if (SubHeadLayoutButtonRow != null && SubHeadLayoutButtonRow.Count > 0) layoutRows++; return layoutRows; @@ -645,13 +618,7 @@ namespace TelegramBotBase.Controls.Hybrid /// /// Returns the number of item rows per page. /// - public int ItemRowsPerPage - { - get - { - return this.MaximumRow - this.LayoutRows; - } - } + public int ItemRowsPerPage => MaximumRow - LayoutRows; /// /// Return the number of pages. @@ -665,7 +632,7 @@ namespace TelegramBotBase.Controls.Hybrid //var bf = this.DataSource.PickAllItems(this.EnableSearch ? this.SearchQuery : null); - var max = this.DataSource.CalculateMax(this.EnableSearch ? this.SearchQuery : null); + var max = DataSource.CalculateMax(EnableSearch ? SearchQuery : null); //if (this.EnableSearch && this.SearchQuery != null && this.SearchQuery != "") //{ @@ -675,22 +642,24 @@ namespace TelegramBotBase.Controls.Hybrid if (max == 0) return 1; - return (int)Math.Ceiling((decimal)((decimal)max / (decimal)ItemRowsPerPage)); + return (int)Math.Ceiling(max / (decimal)ItemRowsPerPage); } } - public override async Task Hidden(bool FormClose) + public override Task Hidden(bool formClose) { //Prepare for opening Modal, and comming back - if (!FormClose) + if (!formClose) { - this.Updated(); + Updated(); } else { //Remove event handler - this.Device.MessageDeleted -= Device_MessageDeleted; + Device.MessageDeleted -= Device_MessageDeleted; } + + return Task.CompletedTask; } /// @@ -698,31 +667,31 @@ namespace TelegramBotBase.Controls.Hybrid /// public void Updated() { - this.RenderNecessary = true; + _renderNecessary = true; } - public async override Task Cleanup() + public override async Task Cleanup() { - if (this.MessageId == null) + if (MessageId == null) return; - switch (this.KeyboardType) + switch (KeyboardType) { - case eKeyboardType.InlineKeyBoard: + case EKeyboardType.InlineKeyBoard: - await this.Device.DeleteMessage(this.MessageId.Value); + await Device.DeleteMessage(MessageId.Value); - this.MessageId = null; + MessageId = null; break; - case eKeyboardType.ReplyKeyboard: + case EKeyboardType.ReplyKeyboard: - if (this.HideKeyboardOnCleanup) + if (HideKeyboardOnCleanup) { - await this.Device.HideReplyKeyboard(); + await Device.HideReplyKeyboard(); } - this.MessageId = null; + MessageId = null; break; } diff --git a/TelegramBotBase/Controls/Hybrid/ButtonRow.cs b/TelegramBotBase/Controls/Hybrid/ButtonRow.cs index 2d0deab..c2ba68f 100644 --- a/TelegramBotBase/Controls/Hybrid/ButtonRow.cs +++ b/TelegramBotBase/Controls/Hybrid/ButtonRow.cs @@ -1,10 +1,7 @@ using System; -using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; using TelegramBotBase.Form; namespace TelegramBotBase.Controls.Hybrid @@ -12,8 +9,7 @@ namespace TelegramBotBase.Controls.Hybrid [DebuggerDisplay("{Count} columns")] public class ButtonRow { - - List __buttons = new List(); + private List _buttons = new List(); public ButtonRow() { @@ -23,59 +19,47 @@ namespace TelegramBotBase.Controls.Hybrid public ButtonRow(params ButtonBase[] buttons) { - __buttons = buttons.ToList(); + _buttons = buttons.ToList(); } - public ButtonBase this[int index] - { - get - { - return __buttons[index]; - } - } + public ButtonBase this[int index] => _buttons[index]; - public int Count - { - get - { - return __buttons.Count; - } - } + public int Count => _buttons.Count; public void Add(ButtonBase button) { - __buttons.Add(button); + _buttons.Add(button); } public void AddRange(ButtonBase button) { - __buttons.Add(button); + _buttons.Add(button); } public void Insert(int index, ButtonBase button) { - __buttons.Insert(index, button); + _buttons.Insert(index, button); } public IEnumerator GetEnumerator() { - return __buttons.GetEnumerator(); + return _buttons.GetEnumerator(); } public ButtonBase[] ToArray() { - return __buttons.ToArray(); + return _buttons.ToArray(); } public List ToList() { - return __buttons.ToList(); + return _buttons.ToList(); } - public bool Matches(String text, bool useText = true) + public bool Matches(string text, bool useText = true) { - foreach (var b in __buttons) + foreach (var b in _buttons) { if (useText && b.Text.Trim().Equals(text, StringComparison.InvariantCultureIgnoreCase)) return true; @@ -92,9 +76,9 @@ namespace TelegramBotBase.Controls.Hybrid /// /// /// - public ButtonBase GetButtonMatch(String text, bool useText = true) + public ButtonBase GetButtonMatch(string text, bool useText = true) { - foreach (var b in __buttons) + foreach (var b in _buttons) { if (useText && b.Text.Trim().Equals(text, StringComparison.InvariantCultureIgnoreCase)) return b; @@ -106,7 +90,7 @@ namespace TelegramBotBase.Controls.Hybrid public static implicit operator ButtonRow(List list) { - return new ButtonRow() { __buttons = list }; + return new ButtonRow { _buttons = list }; } } } diff --git a/TelegramBotBase/Controls/Hybrid/CheckedButtonList.cs b/TelegramBotBase/Controls/Hybrid/CheckedButtonList.cs index 12026b2..5da90dc 100644 --- a/TelegramBotBase/Controls/Hybrid/CheckedButtonList.cs +++ b/TelegramBotBase/Controls/Hybrid/CheckedButtonList.cs @@ -1,49 +1,42 @@ using System; using System.Collections.Generic; using System.ComponentModel; -using System.Diagnostics.SymbolStore; using System.Linq; -using System.Text; using System.Threading.Tasks; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; using Telegram.Bot.Types.ReplyMarkups; using TelegramBotBase.Args; using TelegramBotBase.Base; -using TelegramBotBase.Datasources; +using TelegramBotBase.DataSources; using TelegramBotBase.Enums; using TelegramBotBase.Exceptions; using TelegramBotBase.Form; +using TelegramBotBase.Localizations; using static TelegramBotBase.Base.Async; namespace TelegramBotBase.Controls.Hybrid { - public class CheckedButtonList : Base.ControlBase + public class CheckedButtonList : ControlBase { - public String Title { get; set; } = Localizations.Default.Language["ButtonGrid_Title"]; + public string Title { get; set; } = Default.Language["ButtonGrid_Title"]; - public String ConfirmationText { get; set; } = ""; + public string ConfirmationText { get; set; } = ""; - private bool RenderNecessary = true; + private bool _renderNecessary = true; - private static readonly object __evButtonClicked = new object(); + private static readonly object EvButtonClicked = new object(); - private static readonly object __evCheckedChanged = new object(); + private static readonly object EvCheckedChanged = new object(); - private readonly EventHandlerList Events = new EventHandlerList(); + private readonly EventHandlerList _events = new EventHandlerList(); [Obsolete("This property is obsolete. Please use the DataSource property instead.")] public ButtonForm ButtonsForm { - get - { - return DataSource.ButtonForm; - } - set - { - DataSource = new ButtonFormDataSource(value); - } + get => DataSource.ButtonForm; + set => DataSource = new ButtonFormDataSource(value); } /// @@ -51,7 +44,7 @@ namespace TelegramBotBase.Controls.Hybrid /// public ButtonFormDataSource DataSource { get; set; } - List CheckedRows { get; set; } = new List(); + private List CheckedRows { get; set; } = new List(); public int? MessageId { get; set; } @@ -91,25 +84,25 @@ namespace TelegramBotBase.Controls.Hybrid //public String SearchQuery { get; set; } - public eNavigationBarVisibility NavigationBarVisibility { get; set; } = eNavigationBarVisibility.always; + public ENavigationBarVisibility NavigationBarVisibility { get; set; } = ENavigationBarVisibility.always; /// /// Index of the current page /// - public int CurrentPageIndex { get; set; } = 0; + public int CurrentPageIndex { get; set; } - public String PreviousPageLabel = Localizations.Default.Language["ButtonGrid_PreviousPage"]; + public string PreviousPageLabel = Default.Language["ButtonGrid_PreviousPage"]; - public String NextPageLabel = Localizations.Default.Language["ButtonGrid_NextPage"]; + public string NextPageLabel = Default.Language["ButtonGrid_NextPage"]; - public String NoItemsLabel = Localizations.Default.Language["ButtonGrid_NoItems"]; + public string NoItemsLabel = Default.Language["ButtonGrid_NoItems"]; //public String SearchLabel = Localizations.Default.Language["ButtonGrid_SearchFeature"]; - public String CheckedIconLabel { get; set; } = "✅"; + public string CheckedIconLabel { get; set; } = "✅"; - public String UncheckedIconLabel { get; set; } = "◻️"; + public string UncheckedIconLabel { get; set; } = "◻️"; /// /// Layout of the buttons which should be displayed always on top. @@ -124,97 +117,82 @@ namespace TelegramBotBase.Controls.Hybrid /// /// Defines which type of Button Keyboard should be rendered. /// - public eKeyboardType KeyboardType + public EKeyboardType KeyboardType { - get - { - return m_eKeyboardType; - } + get => _mEKeyboardType; set { - if (m_eKeyboardType != value) + if (_mEKeyboardType != value) { - this.RenderNecessary = true; + _renderNecessary = true; Cleanup().Wait(); - m_eKeyboardType = value; + _mEKeyboardType = value; } } } - private eKeyboardType m_eKeyboardType = eKeyboardType.ReplyKeyboard; + private EKeyboardType _mEKeyboardType = EKeyboardType.ReplyKeyboard; public CheckedButtonList() { - this.DataSource = new ButtonFormDataSource(); + DataSource = new ButtonFormDataSource(); } - public CheckedButtonList(eKeyboardType type) : this() + public CheckedButtonList(EKeyboardType type) : this() { - m_eKeyboardType = type; + _mEKeyboardType = type; } public CheckedButtonList(ButtonForm form) { - this.DataSource = new ButtonFormDataSource(form); + DataSource = new ButtonFormDataSource(form); } public event AsyncEventHandler ButtonClicked { - add - { - this.Events.AddHandler(__evButtonClicked, value); - } - remove - { - this.Events.RemoveHandler(__evButtonClicked, value); - } + add => _events.AddHandler(EvButtonClicked, value); + remove => _events.RemoveHandler(EvButtonClicked, value); } public async Task OnButtonClicked(ButtonClickedEventArgs e) { - var handler = this.Events[__evButtonClicked]?.GetInvocationList().Cast>(); + var handler = _events[EvButtonClicked]?.GetInvocationList().Cast>(); if (handler == null) return; foreach (var h in handler) { - await Async.InvokeAllAsync(h, this, e); + await h.InvokeAllAsync(this, e); } } public event AsyncEventHandler CheckedChanged { - add - { - this.Events.AddHandler(__evCheckedChanged, value); - } - remove - { - this.Events.RemoveHandler(__evCheckedChanged, value); - } + add => _events.AddHandler(EvCheckedChanged, value); + remove => _events.RemoveHandler(EvCheckedChanged, value); } public async Task OnCheckedChanged(CheckedChangedEventArgs e) { - var handler = this.Events[__evCheckedChanged]?.GetInvocationList().Cast>(); + var handler = _events[EvCheckedChanged]?.GetInvocationList().Cast>(); if (handler == null) return; foreach (var h in handler) { - await Async.InvokeAllAsync(h, this, e); + await h.InvokeAllAsync(this, e); } } - public async override Task Load(MessageResult result) + public override async Task Load(MessageResult result) { - if (this.KeyboardType != eKeyboardType.ReplyKeyboard) + if (KeyboardType != EKeyboardType.ReplyKeyboard) return; if (!result.IsFirstHandler) @@ -225,7 +203,7 @@ namespace TelegramBotBase.Controls.Hybrid var matches = new List(); ButtonRow match = null; - int index = -1; + var index = -1; if (HeadLayoutButtonRow?.Matches(result.MessageText) ?? false) { @@ -260,36 +238,36 @@ namespace TelegramBotBase.Controls.Hybrid //Remove button click message - if (this.DeleteReplyMessage) + if (DeleteReplyMessage) await Device.DeleteMessage(result.MessageId); if (match == null) { if (result.MessageText == PreviousPageLabel) { - if (this.CurrentPageIndex > 0) - this.CurrentPageIndex--; + if (CurrentPageIndex > 0) + CurrentPageIndex--; - this.Updated(); + Updated(); } else if (result.MessageText == NextPageLabel) { - if (this.CurrentPageIndex < this.PageCount - 1) - this.CurrentPageIndex++; + if (CurrentPageIndex < PageCount - 1) + CurrentPageIndex++; - this.Updated(); + Updated(); } else if (result.MessageText.EndsWith(CheckedIconLabel)) { var s = result.MessageText.Split(' ', '.'); index = int.Parse(s[0]) - 1; - if (!this.CheckedRows.Contains(index)) + if (!CheckedRows.Contains(index)) return; - this.CheckedRows.Remove(index); + CheckedRows.Remove(index); - this.Updated(); + Updated(); await OnCheckedChanged(new CheckedChangedEventArgs(ButtonsForm[index], index, false)); @@ -299,13 +277,13 @@ namespace TelegramBotBase.Controls.Hybrid var s = result.MessageText.Split(' ', '.'); index = int.Parse(s[0]) - 1; - if (this.CheckedRows.Contains(index)) + if (CheckedRows.Contains(index)) return; - this.CheckedRows.Add(index); + CheckedRows.Add(index); - this.Updated(); + Updated(); await OnCheckedChanged(new CheckedChangedEventArgs(ButtonsForm[index], index, true)); @@ -355,7 +333,7 @@ namespace TelegramBotBase.Controls.Hybrid } - public async override Task Action(MessageResult result, string value = null) + public override async Task Action(MessageResult result, string value = null) { if (result.Handled) return; @@ -364,13 +342,13 @@ namespace TelegramBotBase.Controls.Hybrid return; //Find clicked button depending on Text or Value (depending on markup type) - if (this.KeyboardType != eKeyboardType.InlineKeyBoard) + if (KeyboardType != EKeyboardType.InlineKeyBoard) return; - await result.ConfirmAction(this.ConfirmationText ?? ""); + await result.ConfirmAction(ConfirmationText ?? ""); ButtonRow match = null; - int index = -1; + var index = -1; if (HeadLayoutButtonRow?.Matches(result.RawData, false) ?? false) { @@ -422,18 +400,18 @@ namespace TelegramBotBase.Controls.Hybrid { case "$previous$": - if (this.CurrentPageIndex > 0) - this.CurrentPageIndex--; + if (CurrentPageIndex > 0) + CurrentPageIndex--; - this.Updated(); + Updated(); break; case "$next$": - if (this.CurrentPageIndex < this.PageCount - 1) - this.CurrentPageIndex++; + if (CurrentPageIndex < PageCount - 1) + CurrentPageIndex++; - this.Updated(); + Updated(); break; @@ -448,11 +426,11 @@ namespace TelegramBotBase.Controls.Hybrid index = int.Parse(s[1]); - if (!this.CheckedRows.Contains(index)) + if (!CheckedRows.Contains(index)) { - this.CheckedRows.Add(index); + CheckedRows.Add(index); - this.Updated(); + Updated(); await OnCheckedChanged(new CheckedChangedEventArgs(ButtonsForm[index], index, true)); } @@ -463,11 +441,11 @@ namespace TelegramBotBase.Controls.Hybrid index = int.Parse(s[1]); - if (this.CheckedRows.Contains(index)) + if (CheckedRows.Contains(index)) { - this.CheckedRows.Remove(index); + CheckedRows.Remove(index); - this.Updated(); + Updated(); await OnCheckedChanged(new CheckedChangedEventArgs(ButtonsForm[index], index, false)); } @@ -487,51 +465,51 @@ namespace TelegramBotBase.Controls.Hybrid /// private void CheckGrid() { - switch (m_eKeyboardType) + switch (_mEKeyboardType) { - case eKeyboardType.InlineKeyBoard: + case EKeyboardType.InlineKeyBoard: - if (DataSource.RowCount > Constants.Telegram.MaxInlineKeyBoardRows && !this.EnablePaging) + if (DataSource.RowCount > Constants.Telegram.MaxInlineKeyBoardRows && !EnablePaging) { - throw new MaximumRowsReachedException() { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxInlineKeyBoardRows }; + throw new MaximumRowsReachedException { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxInlineKeyBoardRows }; } if (DataSource.ColumnCount > Constants.Telegram.MaxInlineKeyBoardCols) { - throw new MaximumColsException() { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxInlineKeyBoardCols }; + throw new MaximumColsException { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxInlineKeyBoardCols }; } break; - case eKeyboardType.ReplyKeyboard: + case EKeyboardType.ReplyKeyboard: - if (DataSource.RowCount > Constants.Telegram.MaxReplyKeyboardRows && !this.EnablePaging) + if (DataSource.RowCount > Constants.Telegram.MaxReplyKeyboardRows && !EnablePaging) { - throw new MaximumRowsReachedException() { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxReplyKeyboardRows }; + throw new MaximumRowsReachedException { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxReplyKeyboardRows }; } if (DataSource.ColumnCount > Constants.Telegram.MaxReplyKeyboardCols) { - throw new MaximumColsException() { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxReplyKeyboardCols }; + throw new MaximumColsException { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxReplyKeyboardCols }; } break; } } - public async override Task Render(MessageResult result) + public override async Task Render(MessageResult result) { - if (!this.RenderNecessary) + if (!_renderNecessary) return; //Check for rows and column limits CheckGrid(); - this.RenderNecessary = false; + _renderNecessary = false; Message m = null; - ButtonForm form = this.DataSource.PickItems(CurrentPageIndex * ItemRowsPerPage, ItemRowsPerPage, null); + var form = DataSource.PickItems(CurrentPageIndex * ItemRowsPerPage, ItemRowsPerPage); //if (this.EnableSearch && this.SearchQuery != null && this.SearchQuery != "") //{ @@ -542,7 +520,7 @@ namespace TelegramBotBase.Controls.Hybrid //form = form.Duplicate(); //} - if (this.EnablePaging) + if (EnablePaging) { IntegratePagingView(form); } @@ -551,34 +529,34 @@ namespace TelegramBotBase.Controls.Hybrid form = PrepareCheckableLayout(form); } - if (this.HeadLayoutButtonRow != null && HeadLayoutButtonRow.Count > 0) + if (HeadLayoutButtonRow != null && HeadLayoutButtonRow.Count > 0) { - form.InsertButtonRow(0, this.HeadLayoutButtonRow.ToArray()); + form.InsertButtonRow(0, HeadLayoutButtonRow.ToArray()); } - if (this.SubHeadLayoutButtonRow != null && SubHeadLayoutButtonRow.Count > 0) + if (SubHeadLayoutButtonRow != null && SubHeadLayoutButtonRow.Count > 0) { - if (this.IsNavigationBarVisible) + if (IsNavigationBarVisible) { - form.InsertButtonRow(2, this.SubHeadLayoutButtonRow.ToArray()); + form.InsertButtonRow(2, SubHeadLayoutButtonRow.ToArray()); } else { - form.InsertButtonRow(1, this.SubHeadLayoutButtonRow.ToArray()); + form.InsertButtonRow(1, SubHeadLayoutButtonRow.ToArray()); } } - switch (this.KeyboardType) + switch (KeyboardType) { //Reply Keyboard could only be updated with a new keyboard. - case eKeyboardType.ReplyKeyboard: + case EKeyboardType.ReplyKeyboard: if (form.Count == 0) { - if (this.MessageId != null) + if (MessageId != null) { - await this.Device.HideReplyKeyboard(); - this.MessageId = null; + await Device.HideReplyKeyboard(); + MessageId = null; } return; @@ -589,25 +567,25 @@ namespace TelegramBotBase.Controls.Hybrid var rkm = (ReplyKeyboardMarkup)form; - rkm.ResizeKeyboard = this.ResizeKeyboard; - rkm.OneTimeKeyboard = this.OneTimeKeyboard; - m = await this.Device.Send(this.Title, rkm, disableNotification: true, parseMode: MessageParseMode, MarkdownV2AutoEscape: false); + rkm.ResizeKeyboard = ResizeKeyboard; + rkm.OneTimeKeyboard = OneTimeKeyboard; + m = await Device.Send(Title, rkm, disableNotification: true, parseMode: MessageParseMode, markdownV2AutoEscape: false); //Prevent flicker of keyboard - if (this.DeletePreviousMessage && this.MessageId != null) - await this.Device.DeleteMessage(this.MessageId.Value); + if (DeletePreviousMessage && MessageId != null) + await Device.DeleteMessage(MessageId.Value); break; - case eKeyboardType.InlineKeyBoard: + case EKeyboardType.InlineKeyBoard: - if (this.MessageId != null) + if (MessageId != null) { - m = await this.Device.Edit(this.MessageId.Value, this.Title, (InlineKeyboardMarkup)form); + m = await Device.Edit(MessageId.Value, Title, (InlineKeyboardMarkup)form); } else { - m = await this.Device.Send(this.Title, (InlineKeyboardMarkup)form, disableNotification: true, parseMode: MessageParseMode, MarkdownV2AutoEscape: false); + m = await Device.Send(Title, (InlineKeyboardMarkup)form, disableNotification: true, parseMode: MessageParseMode, markdownV2AutoEscape: false); } break; @@ -615,7 +593,7 @@ namespace TelegramBotBase.Controls.Hybrid if (m != null) { - this.MessageId = m.MessageId; + MessageId = m.MessageId; } @@ -623,23 +601,23 @@ namespace TelegramBotBase.Controls.Hybrid private void IntegratePagingView(ButtonForm dataForm) { - //No Items + //No Items if (dataForm.Rows == 0) { dataForm.AddButtonRow(new ButtonBase(NoItemsLabel, "$")); } - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf = PrepareCheckableLayout(dataForm); - if (this.IsNavigationBarVisible) + if (IsNavigationBarVisible) { //🔍 - ButtonRow row = new ButtonRow(); + var row = new ButtonRow(); row.Add(new ButtonBase(PreviousPageLabel, "$previous$")); - row.Add(new ButtonBase(String.Format(Localizations.Default.Language["ButtonGrid_CurrentPage"], this.CurrentPageIndex + 1, this.PageCount), "$site$")); + row.Add(new ButtonBase(string.Format(Default.Language["ButtonGrid_CurrentPage"], CurrentPageIndex + 1, PageCount), "$site$")); row.Add(new ButtonBase(NextPageLabel, "$next$")); @@ -652,30 +630,30 @@ namespace TelegramBotBase.Controls.Hybrid private ButtonForm PrepareCheckableLayout(ButtonForm dataForm) { var bf = new ButtonForm(); - for (int i = 0; i < dataForm.Rows; i++) + for (var i = 0; i < dataForm.Rows; i++) { - int it = (this.CurrentPageIndex * (this.MaximumRow - LayoutRows)) + i; + var it = (CurrentPageIndex * (MaximumRow - LayoutRows)) + i; //if (it > dataForm.Rows - 1) // break; var r = dataForm[i]; - String s = CheckedRows.Contains(it) ? this.CheckedIconLabel : this.UncheckedIconLabel; + var s = CheckedRows.Contains(it) ? CheckedIconLabel : UncheckedIconLabel; //On reply keyboards we need a unique text. - if (this.KeyboardType == eKeyboardType.ReplyKeyboard) + if (KeyboardType == EKeyboardType.ReplyKeyboard) { s = $"{it + 1}. " + s; } if (CheckedRows.Contains(it)) { - r.Insert(0, new ButtonBase(s, "uncheck$" + it.ToString())); + r.Insert(0, new ButtonBase(s, "uncheck$" + it)); } else { - r.Insert(0, new ButtonBase(s, "check$" + it.ToString())); + r.Insert(0, new ButtonBase(s, "check$" + it)); } bf.AddButtonRow(r); @@ -688,12 +666,12 @@ namespace TelegramBotBase.Controls.Hybrid { get { - if (this.KeyboardType == eKeyboardType.InlineKeyBoard && TotalRows > Constants.Telegram.MaxInlineKeyBoardRows) + if (KeyboardType == EKeyboardType.InlineKeyBoard && TotalRows > Constants.Telegram.MaxInlineKeyBoardRows) { return true; } - if (this.KeyboardType == eKeyboardType.ReplyKeyboard && TotalRows > Constants.Telegram.MaxReplyKeyboardRows) + if (KeyboardType == EKeyboardType.ReplyKeyboard && TotalRows > Constants.Telegram.MaxReplyKeyboardRows) { return true; } @@ -706,7 +684,7 @@ namespace TelegramBotBase.Controls.Hybrid { get { - if (this.NavigationBarVisibility == eNavigationBarVisibility.always | (this.NavigationBarVisibility == eNavigationBarVisibility.auto && PagingNecessary)) + if (NavigationBarVisibility == ENavigationBarVisibility.always | (NavigationBarVisibility == ENavigationBarVisibility.auto && PagingNecessary)) { return true; } @@ -722,30 +700,19 @@ namespace TelegramBotBase.Controls.Hybrid { get { - switch (this.KeyboardType) + return KeyboardType switch { - case eKeyboardType.InlineKeyBoard: - return Constants.Telegram.MaxInlineKeyBoardRows; - - case eKeyboardType.ReplyKeyboard: - return Constants.Telegram.MaxReplyKeyboardRows; - - default: - return 0; - } + EKeyboardType.InlineKeyBoard => Constants.Telegram.MaxInlineKeyBoardRows, + EKeyboardType.ReplyKeyboard => Constants.Telegram.MaxReplyKeyboardRows, + _ => 0 + }; } } /// /// Returns the number of all rows (layout + navigation + content); /// - public int TotalRows - { - get - { - return this.LayoutRows + DataSource.RowCount; - } - } + public int TotalRows => LayoutRows + DataSource.RowCount; /// @@ -755,15 +722,15 @@ namespace TelegramBotBase.Controls.Hybrid { get { - int layoutRows = 0; + var layoutRows = 0; - if (this.NavigationBarVisibility == eNavigationBarVisibility.always | this.NavigationBarVisibility == eNavigationBarVisibility.auto) + if (NavigationBarVisibility == ENavigationBarVisibility.always | NavigationBarVisibility == ENavigationBarVisibility.auto) layoutRows += 2; - if (this.HeadLayoutButtonRow != null && this.HeadLayoutButtonRow.Count > 0) + if (HeadLayoutButtonRow != null && HeadLayoutButtonRow.Count > 0) layoutRows++; - if (this.SubHeadLayoutButtonRow != null && this.SubHeadLayoutButtonRow.Count > 0) + if (SubHeadLayoutButtonRow != null && SubHeadLayoutButtonRow.Count > 0) layoutRows++; return layoutRows; @@ -773,13 +740,7 @@ namespace TelegramBotBase.Controls.Hybrid /// /// Returns the number of item rows per page. /// - public int ItemRowsPerPage - { - get - { - return this.MaximumRow - this.LayoutRows; - } - } + public int ItemRowsPerPage => MaximumRow - LayoutRows; public int PageCount { @@ -790,7 +751,7 @@ namespace TelegramBotBase.Controls.Hybrid //var bf = this.DataSource.PickAllItems(this.EnableSearch ? this.SearchQuery : null); - var max = this.DataSource.RowCount; + var max = DataSource.RowCount; //if (this.EnableSearch && this.SearchQuery != null && this.SearchQuery != "") //{ @@ -800,28 +761,30 @@ namespace TelegramBotBase.Controls.Hybrid if (max == 0) return 1; - return (int)Math.Ceiling((decimal)((decimal)max / (decimal)ItemRowsPerPage)); + return (int)Math.Ceiling(max / (decimal)ItemRowsPerPage); } } - public override async Task Hidden(bool FormClose) + public override Task Hidden(bool formClose) { //Prepare for opening Modal, and comming back - if (!FormClose) + if (!formClose) { - this.Updated(); + Updated(); } + + return Task.CompletedTask; } public List CheckedItems { get { - List lst = new List(); + var lst = new List(); foreach (var c in CheckedRows) { - lst.Add(this.ButtonsForm[c][0]); + lst.Add(ButtonsForm[c][0]); } return lst; @@ -834,31 +797,31 @@ namespace TelegramBotBase.Controls.Hybrid /// public void Updated() { - this.RenderNecessary = true; + _renderNecessary = true; } - public async override Task Cleanup() + public override async Task Cleanup() { - if (this.MessageId == null) + if (MessageId == null) return; - switch (this.KeyboardType) + switch (KeyboardType) { - case eKeyboardType.InlineKeyBoard: + case EKeyboardType.InlineKeyBoard: - await this.Device.DeleteMessage(this.MessageId.Value); + await Device.DeleteMessage(MessageId.Value); - this.MessageId = null; + MessageId = null; break; - case eKeyboardType.ReplyKeyboard: + case EKeyboardType.ReplyKeyboard: - if (this.HideKeyboardOnCleanup) + if (HideKeyboardOnCleanup) { - await this.Device.HideReplyKeyboard(); + await Device.HideReplyKeyboard(); } - this.MessageId = null; + MessageId = null; break; } diff --git a/TelegramBotBase/Controls/Hybrid/MultiView.cs b/TelegramBotBase/Controls/Hybrid/MultiView.cs index 83eb0e6..5008b73 100644 --- a/TelegramBotBase/Controls/Hybrid/MultiView.cs +++ b/TelegramBotBase/Controls/Hybrid/MultiView.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; +using System.Collections.Generic; using System.Threading.Tasks; using TelegramBotBase.Args; using TelegramBotBase.Base; @@ -13,33 +9,30 @@ namespace TelegramBotBase.Controls.Hybrid /// /// This Control is for having a basic form content switching control. /// - public abstract class MultiView : Base.ControlBase + public abstract class MultiView : ControlBase { /// /// Index of the current View. /// public int SelectedViewIndex { - get - { - return m_iSelectedViewIndex; - } + get => _mISelectedViewIndex; set { - m_iSelectedViewIndex = value; + _mISelectedViewIndex = value; //Already rendered? Re-Render - if (_Rendered) + if (_rendered) ForceRender().Wait(); } } - private int m_iSelectedViewIndex = 0; + private int _mISelectedViewIndex; /// /// Hold if the View has been rendered already. /// - private bool _Rendered = false; + private bool _rendered; private List Messages { get; set; } @@ -50,12 +43,13 @@ namespace TelegramBotBase.Controls.Hybrid } - private async Task Device_MessageSent(object sender, MessageSentEventArgs e) + private Task Device_MessageSent(object sender, MessageSentEventArgs e) { if (e.Origin == null || !e.Origin.IsSubclassOf(typeof(MultiView))) - return; + return Task.CompletedTask; - this.Messages.Add(e.MessageId); + Messages.Add(e.MessageId); + return Task.CompletedTask; } public override void Init() @@ -63,23 +57,24 @@ namespace TelegramBotBase.Controls.Hybrid Device.MessageSent += Device_MessageSent; } - public override async Task Load(MessageResult result) + public override Task Load(MessageResult result) { - _Rendered = false; + _rendered = false; + return Task.CompletedTask; } public override async Task Render(MessageResult result) { //When already rendered, skip rendering - if (_Rendered) + if (_rendered) return; await CleanUpView(); - await RenderView(new RenderViewEventArgs(this.SelectedViewIndex)); + await RenderView(new RenderViewEventArgs(SelectedViewIndex)); - _Rendered = true; + _rendered = true; } @@ -87,25 +82,24 @@ namespace TelegramBotBase.Controls.Hybrid /// Will get invoked on rendering the current controls view. /// /// - public virtual async Task RenderView(RenderViewEventArgs e) + public virtual Task RenderView(RenderViewEventArgs e) { - - + return Task.CompletedTask; } - async Task CleanUpView() + private async Task CleanUpView() { var tasks = new List(); - foreach (var msg in this.Messages) + foreach (var msg in Messages) { - tasks.Add(this.Device.DeleteMessage(msg)); + tasks.Add(Device.DeleteMessage(msg)); } await Task.WhenAll(tasks); - this.Messages.Clear(); + Messages.Clear(); } @@ -116,9 +110,9 @@ namespace TelegramBotBase.Controls.Hybrid { await CleanUpView(); - await RenderView(new RenderViewEventArgs(this.SelectedViewIndex)); + await RenderView(new RenderViewEventArgs(SelectedViewIndex)); - _Rendered = true; + _rendered = true; } public override async Task Cleanup() diff --git a/TelegramBotBase/Controls/Hybrid/TaggedButtonGrid.cs b/TelegramBotBase/Controls/Hybrid/TaggedButtonGrid.cs index cf0bc90..1270b8f 100644 --- a/TelegramBotBase/Controls/Hybrid/TaggedButtonGrid.cs +++ b/TelegramBotBase/Controls/Hybrid/TaggedButtonGrid.cs @@ -1,20 +1,18 @@ using System; using System.Collections.Generic; using System.ComponentModel; -using System.Diagnostics.SymbolStore; using System.Linq; -using System.Text; using System.Threading.Tasks; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; -using Telegram.Bot.Types.InlineQueryResults; using Telegram.Bot.Types.ReplyMarkups; using TelegramBotBase.Args; using TelegramBotBase.Base; -using TelegramBotBase.Datasources; +using TelegramBotBase.DataSources; using TelegramBotBase.Enums; using TelegramBotBase.Exceptions; using TelegramBotBase.Form; +using TelegramBotBase.Localizations; using static TelegramBotBase.Base.Async; namespace TelegramBotBase.Controls.Hybrid @@ -22,27 +20,21 @@ namespace TelegramBotBase.Controls.Hybrid public class TaggedButtonGrid : MultiView { - public String Title { get; set; } = Localizations.Default.Language["ButtonGrid_Title"]; + public string Title { get; set; } = Default.Language["ButtonGrid_Title"]; - public String ConfirmationText { get; set; } + public string ConfirmationText { get; set; } - private bool RenderNecessary = true; + private bool _renderNecessary = true; - private static readonly object __evButtonClicked = new object(); + private static readonly object EvButtonClicked = new object(); - private readonly EventHandlerList Events = new EventHandlerList(); + private readonly EventHandlerList _events = new EventHandlerList(); [Obsolete("This property is obsolete. Please use the DataSource property instead.")] public ButtonForm ButtonsForm { - get - { - return DataSource.ButtonForm; - } - set - { - DataSource = new ButtonFormDataSource(value); - } + get => DataSource.ButtonForm; + set => DataSource = new ButtonFormDataSource(value); } /// @@ -90,29 +82,29 @@ namespace TelegramBotBase.Controls.Hybrid /// public bool EnableSearch { get; set; } = false; - public String SearchQuery { get; set; } + public string SearchQuery { get; set; } - public eNavigationBarVisibility NavigationBarVisibility { get; set; } = eNavigationBarVisibility.always; + public ENavigationBarVisibility NavigationBarVisibility { get; set; } = ENavigationBarVisibility.always; /// /// Index of the current page /// - public int CurrentPageIndex { get; set; } = 0; + public int CurrentPageIndex { get; set; } - public String PreviousPageLabel = Localizations.Default.Language["ButtonGrid_PreviousPage"]; + public string PreviousPageLabel = Default.Language["ButtonGrid_PreviousPage"]; - public String NextPageLabel = Localizations.Default.Language["ButtonGrid_NextPage"]; + public string NextPageLabel = Default.Language["ButtonGrid_NextPage"]; - public String NoItemsLabel = Localizations.Default.Language["ButtonGrid_NoItems"]; + public string NoItemsLabel = Default.Language["ButtonGrid_NoItems"]; - public String SearchLabel = Localizations.Default.Language["ButtonGrid_SearchFeature"]; + public string SearchLabel = Default.Language["ButtonGrid_SearchFeature"]; - public String BackLabel = Localizations.Default.Language["ButtonGrid_Back"]; + public string BackLabel = Default.Language["ButtonGrid_Back"]; - public String CheckAllLabel = Localizations.Default.Language["ButtonGrid_CheckAll"]; + public string CheckAllLabel = Default.Language["ButtonGrid_CheckAll"]; - public String UncheckAllLabel = Localizations.Default.Language["ButtonGrid_UncheckAll"]; + public string UncheckAllLabel = Default.Language["ButtonGrid_UncheckAll"]; /// /// Layout of the buttons which should be displayed always on top. @@ -132,100 +124,91 @@ namespace TelegramBotBase.Controls.Hybrid /// /// List of Tags which will be allowed to filter by. /// - public List Tags { get; set; } + public List Tags { get; set; } /// /// List of Tags selected by the User. /// - public List SelectedTags { get; set; } + public List SelectedTags { get; set; } /// /// Defines which type of Button Keyboard should be rendered. /// - public eKeyboardType KeyboardType + public EKeyboardType KeyboardType { - get - { - return m_eKeyboardType; - } + get => _mEKeyboardType; set { - if (m_eKeyboardType != value) + if (_mEKeyboardType != value) { - this.RenderNecessary = true; + _renderNecessary = true; Cleanup().Wait(); - m_eKeyboardType = value; + _mEKeyboardType = value; } } } - private eKeyboardType m_eKeyboardType = eKeyboardType.ReplyKeyboard; + private EKeyboardType _mEKeyboardType = EKeyboardType.ReplyKeyboard; public TaggedButtonGrid() { - this.DataSource = new ButtonFormDataSource(); + DataSource = new ButtonFormDataSource(); - this.SelectedViewIndex = 0; + SelectedViewIndex = 0; } - public TaggedButtonGrid(eKeyboardType type) : this() + public TaggedButtonGrid(EKeyboardType type) : this() { - m_eKeyboardType = type; + _mEKeyboardType = type; } public TaggedButtonGrid(ButtonForm form) { - this.DataSource = new ButtonFormDataSource(form); + DataSource = new ButtonFormDataSource(form); } public event AsyncEventHandler ButtonClicked { - add - { - this.Events.AddHandler(__evButtonClicked, value); - } - remove - { - this.Events.RemoveHandler(__evButtonClicked, value); - } + add => _events.AddHandler(EvButtonClicked, value); + remove => _events.RemoveHandler(EvButtonClicked, value); } public async Task OnButtonClicked(ButtonClickedEventArgs e) { - var handler = this.Events[__evButtonClicked]?.GetInvocationList().Cast>(); + var handler = _events[EvButtonClicked]?.GetInvocationList().Cast>(); if (handler == null) return; foreach (var h in handler) { - await Async.InvokeAllAsync(h, this, e); + await h.InvokeAllAsync(this, e); } } public override void Init() { - this.Device.MessageDeleted += Device_MessageDeleted; + Device.MessageDeleted += Device_MessageDeleted; } private void Device_MessageDeleted(object sender, MessageDeletedEventArgs e) { - if (this.MessageId == null) + if (MessageId == null) return; - if (e.MessageId != this.MessageId) + if (e.MessageId != MessageId) return; - this.MessageId = null; + MessageId = null; } - public async override Task Load(MessageResult result) + public override async Task Load(MessageResult result) { - if (this.KeyboardType != eKeyboardType.ReplyKeyboard) + if (KeyboardType != EKeyboardType.ReplyKeyboard) return; if (!result.IsFirstHandler) @@ -236,7 +219,7 @@ namespace TelegramBotBase.Controls.Hybrid var matches = new List(); ButtonRow match = null; - int index = -1; + var index = -1; if (HeadLayoutButtonRow?.Matches(result.MessageText) ?? false) { @@ -275,12 +258,12 @@ namespace TelegramBotBase.Controls.Hybrid - switch (this.SelectedViewIndex) + switch (SelectedViewIndex) { case 0: //Remove button click message - if (this.DeleteReplyMessage) + if (DeleteReplyMessage) await Device.DeleteMessage(result.MessageId); if (match != null) @@ -293,59 +276,57 @@ namespace TelegramBotBase.Controls.Hybrid if (result.MessageText == PreviousPageLabel) { - if (this.CurrentPageIndex > 0) - this.CurrentPageIndex--; + if (CurrentPageIndex > 0) + CurrentPageIndex--; - this.Updated(); + Updated(); result.Handled = true; } else if (result.MessageText == NextPageLabel) { - if (this.CurrentPageIndex < this.PageCount - 1) - this.CurrentPageIndex++; + if (CurrentPageIndex < PageCount - 1) + CurrentPageIndex++; - this.Updated(); + Updated(); result.Handled = true; } - else if (this.EnableSearch) + else if (EnableSearch) { if (result.MessageText.StartsWith("🔍")) { //Sent note about searching - if (this.SearchQuery == null) + if (SearchQuery == null) { - await this.Device.Send(this.SearchLabel); + await Device.Send(SearchLabel); } - this.SearchQuery = null; - this.Updated(); + SearchQuery = null; + Updated(); result.Handled = true; return; } - this.SearchQuery = result.MessageText; + SearchQuery = result.MessageText; - if (this.SearchQuery != null && this.SearchQuery != "") + if (SearchQuery != null && SearchQuery != "") { - this.CurrentPageIndex = 0; - this.Updated(); + CurrentPageIndex = 0; + Updated(); result.Handled = true; - return; } } - else if (this.Tags != null) + else if (Tags != null) { if (result.MessageText == "📁") { //Remove button click message - if (this.DeletePreviousMessage) + if (DeletePreviousMessage) await Device.DeleteMessage(result.MessageId); - this.SelectedViewIndex = 1; - this.Updated(); + SelectedViewIndex = 1; + Updated(); result.Handled = true; - return; } } @@ -353,23 +334,24 @@ namespace TelegramBotBase.Controls.Hybrid case 1: //Remove button click message - if (this.DeleteReplyMessage) + if (DeleteReplyMessage) await Device.DeleteMessage(result.MessageId); - if (result.MessageText == this.BackLabel) + if (result.MessageText == BackLabel) { - this.SelectedViewIndex = 0; - this.Updated(); + SelectedViewIndex = 0; + Updated(); result.Handled = true; return; } - else if (result.MessageText == this.CheckAllLabel) + + if (result.MessageText == CheckAllLabel) { - this.CheckAllTags(); + CheckAllTags(); } - else if (result.MessageText == this.UncheckAllLabel) + else if (result.MessageText == UncheckAllLabel) { - this.UncheckAllTags(); + UncheckAllTags(); } var i = result.MessageText.LastIndexOf(" "); @@ -378,16 +360,16 @@ namespace TelegramBotBase.Controls.Hybrid var t = result.MessageText.Substring(0, i); - if (this.SelectedTags.Contains(t)) + if (SelectedTags.Contains(t)) { - this.SelectedTags.Remove(t); + SelectedTags.Remove(t); } else { - this.SelectedTags.Add(t); + SelectedTags.Add(t); } - this.Updated(); + Updated(); result.Handled = true; @@ -399,7 +381,7 @@ namespace TelegramBotBase.Controls.Hybrid } - public async override Task Action(MessageResult result, string value = null) + public override async Task Action(MessageResult result, string value = null) { if (result.Handled) return; @@ -408,13 +390,13 @@ namespace TelegramBotBase.Controls.Hybrid return; //Find clicked button depending on Text or Value (depending on markup type) - if (this.KeyboardType != eKeyboardType.InlineKeyBoard) + if (KeyboardType != EKeyboardType.InlineKeyBoard) return; - await result.ConfirmAction(this.ConfirmationText ?? ""); + await result.ConfirmAction(ConfirmationText ?? ""); ButtonRow match = null; - int index = -1; + var index = -1; if (HeadLayoutButtonRow?.Matches(result.RawData, false) ?? false) { @@ -464,45 +446,45 @@ namespace TelegramBotBase.Controls.Hybrid { case "$previous$": - if (this.CurrentPageIndex > 0) - this.CurrentPageIndex--; + if (CurrentPageIndex > 0) + CurrentPageIndex--; - this.Updated(); + Updated(); break; case "$next$": - if (this.CurrentPageIndex < this.PageCount - 1) - this.CurrentPageIndex++; + if (CurrentPageIndex < PageCount - 1) + CurrentPageIndex++; - this.Updated(); + Updated(); break; case "$filter$": - this.SelectedViewIndex = 1; - this.Updated(); + SelectedViewIndex = 1; + Updated(); break; case "$back$": - this.SelectedViewIndex = 0; - this.Updated(); + SelectedViewIndex = 0; + Updated(); break; case "$checkall$": - this.CheckAllTags(); + CheckAllTags(); break; case "$uncheckall$": - this.UncheckAllTags(); + UncheckAllTags(); break; } @@ -514,49 +496,49 @@ namespace TelegramBotBase.Controls.Hybrid /// private void CheckGrid() { - switch (m_eKeyboardType) + switch (_mEKeyboardType) { - case eKeyboardType.InlineKeyBoard: + case EKeyboardType.InlineKeyBoard: - if (DataSource.RowCount > Constants.Telegram.MaxInlineKeyBoardRows && !this.EnablePaging) + if (DataSource.RowCount > Constants.Telegram.MaxInlineKeyBoardRows && !EnablePaging) { - throw new MaximumRowsReachedException() { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxInlineKeyBoardRows }; + throw new MaximumRowsReachedException { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxInlineKeyBoardRows }; } if (DataSource.ColumnCount > Constants.Telegram.MaxInlineKeyBoardCols) { - throw new MaximumColsException() { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxInlineKeyBoardCols }; + throw new MaximumColsException { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxInlineKeyBoardCols }; } break; - case eKeyboardType.ReplyKeyboard: + case EKeyboardType.ReplyKeyboard: - if (DataSource.RowCount > Constants.Telegram.MaxReplyKeyboardRows && !this.EnablePaging) + if (DataSource.RowCount > Constants.Telegram.MaxReplyKeyboardRows && !EnablePaging) { - throw new MaximumRowsReachedException() { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxReplyKeyboardRows }; + throw new MaximumRowsReachedException { Value = DataSource.RowCount, Maximum = Constants.Telegram.MaxReplyKeyboardRows }; } if (DataSource.ColumnCount > Constants.Telegram.MaxReplyKeyboardCols) { - throw new MaximumColsException() { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxReplyKeyboardCols }; + throw new MaximumColsException { Value = DataSource.ColumnCount, Maximum = Constants.Telegram.MaxReplyKeyboardCols }; } break; } } - public async override Task Render(MessageResult result) + public override async Task Render(MessageResult result) { - if (!this.RenderNecessary) + if (!_renderNecessary) return; //Check for rows and column limits CheckGrid(); - this.RenderNecessary = false; + _renderNecessary = false; - switch (this.SelectedViewIndex) + switch (SelectedViewIndex) { case 0: @@ -586,7 +568,7 @@ namespace TelegramBotBase.Controls.Hybrid { Message m = null; - ButtonForm form = this.DataSource.PickItems(CurrentPageIndex * ItemRowsPerPage, ItemRowsPerPage, (this.EnableSearch ? this.SearchQuery : null)); + var form = DataSource.PickItems(CurrentPageIndex * ItemRowsPerPage, ItemRowsPerPage, (EnableSearch ? SearchQuery : null)); //if (this.EnableSearch && this.SearchQuery != null && this.SearchQuery != "") //{ @@ -597,111 +579,111 @@ namespace TelegramBotBase.Controls.Hybrid // form = form.Duplicate(); //} - if (this.Tags != null && this.SelectedTags != null) + if (Tags != null && SelectedTags != null) { - form = form.TagDuplicate(this.SelectedTags); + form = form.TagDuplicate(SelectedTags); } - if (this.EnablePaging) + if (EnablePaging) { IntegratePagingView(form); } - if (this.HeadLayoutButtonRow != null && HeadLayoutButtonRow.Count > 0) + if (HeadLayoutButtonRow != null && HeadLayoutButtonRow.Count > 0) { - form.InsertButtonRow(0, this.HeadLayoutButtonRow.ToArray()); + form.InsertButtonRow(0, HeadLayoutButtonRow.ToArray()); } - if (this.SubHeadLayoutButtonRow != null && SubHeadLayoutButtonRow.Count > 0) + if (SubHeadLayoutButtonRow != null && SubHeadLayoutButtonRow.Count > 0) { - if (this.IsNavigationBarVisible) + if (IsNavigationBarVisible) { - form.InsertButtonRow(2, this.SubHeadLayoutButtonRow.ToArray()); + form.InsertButtonRow(2, SubHeadLayoutButtonRow.ToArray()); } else { - form.InsertButtonRow(1, this.SubHeadLayoutButtonRow.ToArray()); + form.InsertButtonRow(1, SubHeadLayoutButtonRow.ToArray()); } } - switch (this.KeyboardType) + switch (KeyboardType) { //Reply Keyboard could only be updated with a new keyboard. - case eKeyboardType.ReplyKeyboard: + case EKeyboardType.ReplyKeyboard: if (form.Count == 0) { - if (this.MessageId != null) + if (MessageId != null) { - await this.Device.HideReplyKeyboard(); - this.MessageId = null; + await Device.HideReplyKeyboard(); + MessageId = null; } return; } var rkm = (ReplyKeyboardMarkup)form; - rkm.ResizeKeyboard = this.ResizeKeyboard; - rkm.OneTimeKeyboard = this.OneTimeKeyboard; - m = await this.Device.Send(this.Title, rkm, disableNotification: true, parseMode: MessageParseMode, MarkdownV2AutoEscape: false); + rkm.ResizeKeyboard = ResizeKeyboard; + rkm.OneTimeKeyboard = OneTimeKeyboard; + m = await Device.Send(Title, rkm, disableNotification: true, parseMode: MessageParseMode, markdownV2AutoEscape: false); //Prevent flicker of keyboard - if (this.DeletePreviousMessage && this.MessageId != null) - await this.Device.DeleteMessage(this.MessageId.Value); + if (DeletePreviousMessage && MessageId != null) + await Device.DeleteMessage(MessageId.Value); break; - case eKeyboardType.InlineKeyBoard: + case EKeyboardType.InlineKeyBoard: //Try to edit message if message id is available //When the returned message is null then the message has been already deleted, resend it - if (this.MessageId != null) + if (MessageId != null) { - m = await this.Device.Edit(this.MessageId.Value, this.Title, (InlineKeyboardMarkup)form); + m = await Device.Edit(MessageId.Value, Title, (InlineKeyboardMarkup)form); if (m != null) { - this.MessageId = m.MessageId; + MessageId = m.MessageId; return; } } //When no message id is available or it has been deleted due the use of AutoCleanForm re-render automatically - m = await this.Device.Send(this.Title, (InlineKeyboardMarkup)form, disableNotification: true, parseMode: MessageParseMode, MarkdownV2AutoEscape: false); + m = await Device.Send(Title, (InlineKeyboardMarkup)form, disableNotification: true, parseMode: MessageParseMode, markdownV2AutoEscape: false); break; } if (m != null) { - this.MessageId = m.MessageId; + MessageId = m.MessageId; } } private void IntegratePagingView(ButtonForm dataForm) { - //No Items + //No Items if (dataForm.Rows == 0) { dataForm.AddButtonRow(new ButtonBase(NoItemsLabel, "$")); } - if (this.IsNavigationBarVisible) + if (IsNavigationBarVisible) { //🔍 - ButtonRow row = new ButtonRow(); + var row = new ButtonRow(); row.Add(new ButtonBase(PreviousPageLabel, "$previous$")); - row.Add(new ButtonBase(String.Format(Localizations.Default.Language["ButtonGrid_CurrentPage"], this.CurrentPageIndex + 1, this.PageCount), "$site$")); + row.Add(new ButtonBase(string.Format(Default.Language["ButtonGrid_CurrentPage"], CurrentPageIndex + 1, PageCount), "$site$")); - if (this.Tags != null && this.Tags.Count > 0) + if (Tags != null && Tags.Count > 0) { row.Add(new ButtonBase("📁", "$filter$")); } row.Add(new ButtonBase(NextPageLabel, "$next$")); - if (this.EnableSearch) + if (EnableSearch) { - row.Insert(2, new ButtonBase("🔍 " + (this.SearchQuery ?? ""), "$search$")); + row.Insert(2, new ButtonBase("🔍 " + (SearchQuery ?? ""), "$search$")); } dataForm.InsertButtonRow(0, row); @@ -719,22 +701,22 @@ namespace TelegramBotBase.Controls.Hybrid private async Task RenderTagView() { Message m = null; - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); - bf.AddButtonRow(this.BackLabel, "$back$"); + bf.AddButtonRow(BackLabel, "$back$"); if (EnableCheckAllTools) { - this.TagsSubHeadLayoutButtonRow = new ButtonRow(new ButtonBase(CheckAllLabel, "$checkall$"), new ButtonBase(UncheckAllLabel, "$uncheckall$")); + TagsSubHeadLayoutButtonRow = new ButtonRow(new ButtonBase(CheckAllLabel, "$checkall$"), new ButtonBase(UncheckAllLabel, "$uncheckall$")); bf.AddButtonRow(TagsSubHeadLayoutButtonRow); } - foreach (var t in this.Tags) + foreach (var t in Tags) { - String s = t; + var s = t; - if (this.SelectedTags?.Contains(t) ?? false) + if (SelectedTags?.Contains(t) ?? false) { s += " ✅"; } @@ -743,17 +725,17 @@ namespace TelegramBotBase.Controls.Hybrid } - switch (this.KeyboardType) + switch (KeyboardType) { //Reply Keyboard could only be updated with a new keyboard. - case eKeyboardType.ReplyKeyboard: + case EKeyboardType.ReplyKeyboard: if (bf.Count == 0) { - if (this.MessageId != null) + if (MessageId != null) { - await this.Device.HideReplyKeyboard(); - this.MessageId = null; + await Device.HideReplyKeyboard(); + MessageId = null; } return; } @@ -763,25 +745,25 @@ namespace TelegramBotBase.Controls.Hybrid var rkm = (ReplyKeyboardMarkup)bf; - rkm.ResizeKeyboard = this.ResizeKeyboard; - rkm.OneTimeKeyboard = this.OneTimeKeyboard; - m = await this.Device.Send("Choose category", rkm, disableNotification: true, parseMode: MessageParseMode, MarkdownV2AutoEscape: false); + rkm.ResizeKeyboard = ResizeKeyboard; + rkm.OneTimeKeyboard = OneTimeKeyboard; + m = await Device.Send("Choose category", rkm, disableNotification: true, parseMode: MessageParseMode, markdownV2AutoEscape: false); //Prevent flicker of keyboard - if (this.DeletePreviousMessage && this.MessageId != null) - await this.Device.DeleteMessage(this.MessageId.Value); + if (DeletePreviousMessage && MessageId != null) + await Device.DeleteMessage(MessageId.Value); break; - case eKeyboardType.InlineKeyBoard: + case EKeyboardType.InlineKeyBoard: - if (this.MessageId != null) + if (MessageId != null) { - m = await this.Device.Edit(this.MessageId.Value, "Choose category", (InlineKeyboardMarkup)bf); + m = await Device.Edit(MessageId.Value, "Choose category", (InlineKeyboardMarkup)bf); } else { - m = await this.Device.Send("Choose category", (InlineKeyboardMarkup)bf, disableNotification: true, parseMode: MessageParseMode, MarkdownV2AutoEscape: false); + m = await Device.Send("Choose category", (InlineKeyboardMarkup)bf, disableNotification: true, parseMode: MessageParseMode, markdownV2AutoEscape: false); } break; @@ -790,7 +772,7 @@ namespace TelegramBotBase.Controls.Hybrid if (m != null) - this.MessageId = m.MessageId; + MessageId = m.MessageId; } @@ -802,12 +784,12 @@ namespace TelegramBotBase.Controls.Hybrid { get { - if (this.KeyboardType == eKeyboardType.InlineKeyBoard && TotalRows > Constants.Telegram.MaxInlineKeyBoardRows) + if (KeyboardType == EKeyboardType.InlineKeyBoard && TotalRows > Constants.Telegram.MaxInlineKeyBoardRows) { return true; } - if (this.KeyboardType == eKeyboardType.ReplyKeyboard && TotalRows > Constants.Telegram.MaxReplyKeyboardRows) + if (KeyboardType == EKeyboardType.ReplyKeyboard && TotalRows > Constants.Telegram.MaxReplyKeyboardRows) { return true; } @@ -820,7 +802,7 @@ namespace TelegramBotBase.Controls.Hybrid { get { - if (this.NavigationBarVisibility == eNavigationBarVisibility.always | (this.NavigationBarVisibility == eNavigationBarVisibility.auto && PagingNecessary)) + if (NavigationBarVisibility == ENavigationBarVisibility.always | (NavigationBarVisibility == ENavigationBarVisibility.auto && PagingNecessary)) { return true; } @@ -836,30 +818,19 @@ namespace TelegramBotBase.Controls.Hybrid { get { - switch (this.KeyboardType) + return KeyboardType switch { - case eKeyboardType.InlineKeyBoard: - return Constants.Telegram.MaxInlineKeyBoardRows; - - case eKeyboardType.ReplyKeyboard: - return Constants.Telegram.MaxReplyKeyboardRows; - - default: - return 0; - } + EKeyboardType.InlineKeyBoard => Constants.Telegram.MaxInlineKeyBoardRows, + EKeyboardType.ReplyKeyboard => Constants.Telegram.MaxReplyKeyboardRows, + _ => 0 + }; } } /// /// Returns the number of all rows (layout + navigation + content); /// - public int TotalRows - { - get - { - return this.LayoutRows + DataSource.RowCount; - } - } + public int TotalRows => LayoutRows + DataSource.RowCount; /// @@ -869,18 +840,18 @@ namespace TelegramBotBase.Controls.Hybrid { get { - int layoutRows = 0; + var layoutRows = 0; - if (this.NavigationBarVisibility == eNavigationBarVisibility.always | this.NavigationBarVisibility == eNavigationBarVisibility.auto) + if (NavigationBarVisibility == ENavigationBarVisibility.always | NavigationBarVisibility == ENavigationBarVisibility.auto) layoutRows += 2; - if (this.HeadLayoutButtonRow != null && this.HeadLayoutButtonRow.Count > 0) + if (HeadLayoutButtonRow != null && HeadLayoutButtonRow.Count > 0) layoutRows++; - if (this.SubHeadLayoutButtonRow != null && this.SubHeadLayoutButtonRow.Count > 0) + if (SubHeadLayoutButtonRow != null && SubHeadLayoutButtonRow.Count > 0) layoutRows++; - if (EnableCheckAllTools && this.SelectedViewIndex == 1) + if (EnableCheckAllTools && SelectedViewIndex == 1) { layoutRows++; } @@ -892,13 +863,7 @@ namespace TelegramBotBase.Controls.Hybrid /// /// Returns the number of item rows per page. /// - public int ItemRowsPerPage - { - get - { - return this.MaximumRow - this.LayoutRows; - } - } + public int ItemRowsPerPage => MaximumRow - LayoutRows; public int PageCount { @@ -909,7 +874,7 @@ namespace TelegramBotBase.Controls.Hybrid //var bf = this.DataSource.PickAllItems(this.EnableSearch ? this.SearchQuery : null); - var max = this.DataSource.CalculateMax(this.EnableSearch ? this.SearchQuery : null); + var max = DataSource.CalculateMax(EnableSearch ? SearchQuery : null); //if (this.EnableSearch && this.SearchQuery != null && this.SearchQuery != "") //{ @@ -919,22 +884,24 @@ namespace TelegramBotBase.Controls.Hybrid if (max == 0) return 1; - return (int)Math.Ceiling((decimal)((decimal)max / (decimal)ItemRowsPerPage)); + return (int)Math.Ceiling(max / (decimal)ItemRowsPerPage); } } - public override async Task Hidden(bool FormClose) + public override Task Hidden(bool formClose) { //Prepare for opening Modal, and comming back - if (!FormClose) + if (!formClose) { - this.Updated(); + Updated(); } else { //Remove event handler - this.Device.MessageDeleted -= Device_MessageDeleted; + Device.MessageDeleted -= Device_MessageDeleted; } + + return Task.CompletedTask; } /// @@ -942,31 +909,31 @@ namespace TelegramBotBase.Controls.Hybrid /// public void Updated() { - this.RenderNecessary = true; + _renderNecessary = true; } - public async override Task Cleanup() + public override async Task Cleanup() { - if (this.MessageId == null) + if (MessageId == null) return; - switch (this.KeyboardType) + switch (KeyboardType) { - case eKeyboardType.InlineKeyBoard: + case EKeyboardType.InlineKeyBoard: - await this.Device.DeleteMessage(this.MessageId.Value); + await Device.DeleteMessage(MessageId.Value); - this.MessageId = null; + MessageId = null; break; - case eKeyboardType.ReplyKeyboard: + case EKeyboardType.ReplyKeyboard: - if (this.HideKeyboardOnCleanup) + if (HideKeyboardOnCleanup) { - await this.Device.HideReplyKeyboard(); + await Device.HideReplyKeyboard(); } - this.MessageId = null; + MessageId = null; break; } @@ -979,11 +946,11 @@ namespace TelegramBotBase.Controls.Hybrid /// public void CheckAllTags() { - this.SelectedTags.Clear(); + SelectedTags.Clear(); - this.SelectedTags = this.Tags.Select(a => a).ToList(); + SelectedTags = Tags.Select(a => a).ToList(); - this.Updated(); + Updated(); } @@ -992,9 +959,9 @@ namespace TelegramBotBase.Controls.Hybrid /// public void UncheckAllTags() { - this.SelectedTags.Clear(); + SelectedTags.Clear(); - this.Updated(); + Updated(); } } diff --git a/TelegramBotBase/Controls/Inline/CalendarPicker.cs b/TelegramBotBase/Controls/Inline/CalendarPicker.cs index 0fc968d..ccdd1db 100644 --- a/TelegramBotBase/Controls/Inline/CalendarPicker.cs +++ b/TelegramBotBase/Controls/Inline/CalendarPicker.cs @@ -2,18 +2,17 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Enums; using TelegramBotBase.Form; -using TelegramBotBase.Tools; +using TelegramBotBase.Localizations; using static TelegramBotBase.Tools.Arrays; using static TelegramBotBase.Tools.Time; namespace TelegramBotBase.Controls.Inline { - public class CalendarPicker : Base.ControlBase + public class CalendarPicker : ControlBase { public DateTime SelectedDate { get; set; } @@ -27,31 +26,31 @@ namespace TelegramBotBase.Controls.Inline private int? MessageId { get; set; } - public String Title { get; set; } = Localizations.Default.Language["CalendarPicker_Title"]; + public string Title { get; set; } = Default.Language["CalendarPicker_Title"]; - public eMonthPickerMode PickerMode { get; set; } + public EMonthPickerMode PickerMode { get; set; } public bool EnableDayView { get; set; } = true; public bool EnableMonthView { get; set; } = true; public bool EnableYearView { get; set; } = true; - + public CalendarPicker(CultureInfo culture) { - this.SelectedDate = DateTime.Today; - this.VisibleMonth = DateTime.Today; - this.FirstDayOfWeek = DayOfWeek.Monday; - this.Culture = culture; - this.PickerMode = eMonthPickerMode.day; + SelectedDate = DateTime.Today; + VisibleMonth = DateTime.Today; + FirstDayOfWeek = DayOfWeek.Monday; + Culture = culture; + PickerMode = EMonthPickerMode.day; } - + public CalendarPicker() : this(new CultureInfo("en-en")) { } - public override async Task Action(MessageResult result, String value = null) + public override async Task Action(MessageResult result, string value = null) { await result.ConfirmAction(); @@ -59,99 +58,84 @@ namespace TelegramBotBase.Controls.Inline { case "$next$": - switch (this.PickerMode) + VisibleMonth = PickerMode switch { - case eMonthPickerMode.day: - this.VisibleMonth = this.VisibleMonth.AddMonths(1); - break; - - case eMonthPickerMode.month: - this.VisibleMonth = this.VisibleMonth.AddYears(1); - break; - - case eMonthPickerMode.year: - this.VisibleMonth = this.VisibleMonth.AddYears(10); - break; - } - + EMonthPickerMode.day => VisibleMonth.AddMonths(1), + EMonthPickerMode.month => VisibleMonth.AddYears(1), + EMonthPickerMode.year => VisibleMonth.AddYears(10), + _ => VisibleMonth + }; break; case "$prev$": - switch (this.PickerMode) + VisibleMonth = PickerMode switch { - case eMonthPickerMode.day: - this.VisibleMonth = this.VisibleMonth.AddMonths(-1); - break; - - case eMonthPickerMode.month: - this.VisibleMonth = this.VisibleMonth.AddYears(-1); - break; - - case eMonthPickerMode.year: - this.VisibleMonth = this.VisibleMonth.AddYears(-10); - break; - } + EMonthPickerMode.day => VisibleMonth.AddMonths(-1), + EMonthPickerMode.month => VisibleMonth.AddYears(-1), + EMonthPickerMode.year => VisibleMonth.AddYears(-10), + _ => VisibleMonth + }; break; case "$monthtitle$": - if (this.EnableMonthView) + if (EnableMonthView) { - this.PickerMode = eMonthPickerMode.month; + PickerMode = EMonthPickerMode.month; } break; case "$yeartitle$": - if (this.EnableYearView) + if (EnableYearView) { - this.PickerMode = eMonthPickerMode.year; + PickerMode = EMonthPickerMode.year; } break; case "$yearstitle$": - if (this.EnableMonthView) + if (EnableMonthView) { - this.PickerMode = eMonthPickerMode.month; + PickerMode = EMonthPickerMode.month; } - this.VisibleMonth = this.SelectedDate; + VisibleMonth = SelectedDate; break; default: - int day = 0; - if (result.RawData.StartsWith("d-") && TryParseDay(result.RawData.Split('-')[1], this.SelectedDate, out day)) + var day = 0; + if (result.RawData.StartsWith("d-") && TryParseDay(result.RawData.Split('-')[1], SelectedDate, out day)) { - this.SelectedDate = new DateTime(this.VisibleMonth.Year, this.VisibleMonth.Month, day); + SelectedDate = new DateTime(VisibleMonth.Year, VisibleMonth.Month, day); } - int month = 0; + var month = 0; if (result.RawData.StartsWith("m-") && TryParseMonth(result.RawData.Split('-')[1], out month)) { - this.SelectedDate = new DateTime(this.VisibleMonth.Year, month, 1); - this.VisibleMonth = this.SelectedDate; + SelectedDate = new DateTime(VisibleMonth.Year, month, 1); + VisibleMonth = SelectedDate; - if (this.EnableDayView) + if (EnableDayView) { - this.PickerMode = eMonthPickerMode.day; + PickerMode = EMonthPickerMode.day; } } - int year = 0; + var year = 0; if (result.RawData.StartsWith("y-") && TryParseYear(result.RawData.Split('-')[1], out year)) { - this.SelectedDate = new DateTime(year, SelectedDate.Month, SelectedDate.Day); - this.VisibleMonth = this.SelectedDate; + SelectedDate = new DateTime(year, SelectedDate.Month, SelectedDate.Day); + VisibleMonth = SelectedDate; - if (this.EnableMonthView) + if (EnableMonthView) { - this.PickerMode = eMonthPickerMode.month; + PickerMode = EMonthPickerMode.month; } } @@ -170,18 +154,18 @@ namespace TelegramBotBase.Controls.Inline - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); - switch (this.PickerMode) + switch (PickerMode) { - case eMonthPickerMode.day: + case EMonthPickerMode.day: - var month = this.VisibleMonth; + var month = VisibleMonth; - string[] dayNamesNormal = this.Culture.DateTimeFormat.ShortestDayNames; - string[] dayNamesShifted = Shift(dayNamesNormal, (int)this.FirstDayOfWeek); + var dayNamesNormal = Culture.DateTimeFormat.ShortestDayNames; + var dayNamesShifted = Shift(dayNamesNormal, (int)FirstDayOfWeek); - bf.AddButtonRow(new ButtonBase(Localizations.Default.Language["CalendarPicker_PreviousPage"], "$prev$"), new ButtonBase(this.Culture.DateTimeFormat.MonthNames[month.Month - 1] + " " + month.Year.ToString(), "$monthtitle$"), new ButtonBase(Localizations.Default.Language["CalendarPicker_NextPage"], "$next$")); + bf.AddButtonRow(new ButtonBase(Default.Language["CalendarPicker_PreviousPage"], "$prev$"), new ButtonBase(Culture.DateTimeFormat.MonthNames[month.Month - 1] + " " + month.Year, "$monthtitle$"), new ButtonBase(Default.Language["CalendarPicker_NextPage"], "$next$")); bf.AddButtonRow(dayNamesShifted.Select(a => new ButtonBase(a, a)).ToList()); @@ -192,20 +176,20 @@ namespace TelegramBotBase.Controls.Inline var lastDay = firstDay.LastDayOfMonth(); //Start of Week where first day of month is (left border) - var start = firstDay.StartOfWeek(this.FirstDayOfWeek); + var start = firstDay.StartOfWeek(FirstDayOfWeek); //End of week where last day of month is (right border) - var end = lastDay.EndOfWeek(this.FirstDayOfWeek); + var end = lastDay.EndOfWeek(FirstDayOfWeek); - for (int i = 0; i <= ((end - start).Days / 7); i++) + for (var i = 0; i <= ((end - start).Days / 7); i++) { var lst = new List(); - for (int id = 0; id < 7; id++) + for (var id = 0; id < 7; id++) { var d = start.AddDays((i * 7) + id); if (d < firstDay | d > lastDay) { - lst.Add(new ButtonBase("-", "m-" + d.Day.ToString())); + lst.Add(new ButtonBase("-", "m-" + d.Day)); continue; } @@ -216,35 +200,35 @@ namespace TelegramBotBase.Controls.Inline day = "(" + day + ")"; } - lst.Add(new ButtonBase((this.SelectedDate == d ? "[" + day + "]" : day), "d-" + d.Day.ToString())); + lst.Add(new ButtonBase((SelectedDate == d ? "[" + day + "]" : day), "d-" + d.Day)); } bf.AddButtonRow(lst); } break; - case eMonthPickerMode.month: + case EMonthPickerMode.month: - bf.AddButtonRow(new ButtonBase(Localizations.Default.Language["CalendarPicker_PreviousPage"], "$prev$"), new ButtonBase(this.VisibleMonth.Year.ToString("0000"), "$yeartitle$"), new ButtonBase(Localizations.Default.Language["CalendarPicker_NextPage"], "$next$")); + bf.AddButtonRow(new ButtonBase(Default.Language["CalendarPicker_PreviousPage"], "$prev$"), new ButtonBase(VisibleMonth.Year.ToString("0000"), "$yeartitle$"), new ButtonBase(Default.Language["CalendarPicker_NextPage"], "$next$")); - var months = this.Culture.DateTimeFormat.MonthNames; + var months = Culture.DateTimeFormat.MonthNames; - var buttons = months.Select((a, b) => new ButtonBase((b == this.SelectedDate.Month - 1 && this.SelectedDate.Year == this.VisibleMonth.Year ? "[ " + a + " ]" : a), "m-" + (b + 1).ToString())); + var buttons = months.Select((a, b) => new ButtonBase((b == SelectedDate.Month - 1 && SelectedDate.Year == VisibleMonth.Year ? "[ " + a + " ]" : a), "m-" + (b + 1))); - bf.AddSplitted(buttons, 2); + bf.AddSplitted(buttons); break; - case eMonthPickerMode.year: + case EMonthPickerMode.year: - bf.AddButtonRow(new ButtonBase(Localizations.Default.Language["CalendarPicker_PreviousPage"], "$prev$"), new ButtonBase("Year", "$yearstitle$"), new ButtonBase(Localizations.Default.Language["CalendarPicker_NextPage"], "$next$")); + bf.AddButtonRow(new ButtonBase(Default.Language["CalendarPicker_PreviousPage"], "$prev$"), new ButtonBase("Year", "$yearstitle$"), new ButtonBase(Default.Language["CalendarPicker_NextPage"], "$next$")); - var starti = Math.Floor(this.VisibleMonth.Year / 10f) * 10; + var starti = Math.Floor(VisibleMonth.Year / 10f) * 10; - for (int i = 0; i < 10; i++) + for (var i = 0; i < 10; i++) { var m = starti + (i * 2); - bf.AddButtonRow(new ButtonBase((this.SelectedDate.Year == m ? "[ " + m.ToString() + " ]" : m.ToString()), "y-" + m.ToString()), new ButtonBase((this.SelectedDate.Year == (m + 1) ? "[ " + (m + 1).ToString() + " ]" : (m + 1).ToString()), "y-" + (m + 1).ToString())); + bf.AddButtonRow(new ButtonBase((SelectedDate.Year == m ? "[ " + m + " ]" : m.ToString()), "y-" + m), new ButtonBase((SelectedDate.Year == (m + 1) ? "[ " + (m + 1) + " ]" : (m + 1).ToString()), "y-" + (m + 1))); } break; @@ -252,14 +236,14 @@ namespace TelegramBotBase.Controls.Inline } - if (this.MessageId != null) + if (MessageId != null) { - var m = await this.Device.Edit(this.MessageId.Value, this.Title, bf); + var m = await Device.Edit(MessageId.Value, Title, bf); } else { - var m = await this.Device.Send(this.Title, bf); - this.MessageId = m.MessageId; + var m = await Device.Send(Title, bf); + MessageId = m.MessageId; } } @@ -268,9 +252,9 @@ namespace TelegramBotBase.Controls.Inline public override async Task Cleanup() { - if (this.MessageId != null) + if (MessageId != null) { - await this.Device.DeleteMessage(this.MessageId.Value); + await Device.DeleteMessage(MessageId.Value); } } diff --git a/TelegramBotBase/Controls/Inline/MonthPicker.cs b/TelegramBotBase/Controls/Inline/MonthPicker.cs index 78c6fc2..a5032b1 100644 --- a/TelegramBotBase/Controls/Inline/MonthPicker.cs +++ b/TelegramBotBase/Controls/Inline/MonthPicker.cs @@ -1,12 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using TelegramBotBase.Base; -using TelegramBotBase.Enums; -using TelegramBotBase.Form; +using TelegramBotBase.Enums; namespace TelegramBotBase.Controls.Inline { @@ -17,8 +9,8 @@ namespace TelegramBotBase.Controls.Inline public MonthPicker() { - this.PickerMode = eMonthPickerMode.month; - this.EnableDayView = false; + PickerMode = EMonthPickerMode.month; + EnableDayView = false; } diff --git a/TelegramBotBase/Controls/Inline/MultiToggleButton.cs b/TelegramBotBase/Controls/Inline/MultiToggleButton.cs index 1828f2b..fa8f159 100644 --- a/TelegramBotBase/Controls/Inline/MultiToggleButton.cs +++ b/TelegramBotBase/Controls/Inline/MultiToggleButton.cs @@ -1,11 +1,10 @@ using System; using System.Collections.Generic; using System.ComponentModel; -using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; +using TelegramBotBase.Localizations; namespace TelegramBotBase.Controls.Inline { @@ -14,25 +13,25 @@ namespace TelegramBotBase.Controls.Inline /// /// This contains the selected icon. /// - public String SelectedIcon { get; set; } = Localizations.Default.Language["MultiToggleButton_SelectedIcon"]; + public string SelectedIcon { get; set; } = Default.Language["MultiToggleButton_SelectedIcon"]; /// /// This will appear on the ConfirmAction message (if not empty) /// - public String ChangedString { get; set; } = Localizations.Default.Language["MultiToggleButton_Changed"]; + public string ChangedString { get; set; } = Default.Language["MultiToggleButton_Changed"]; /// /// This holds the title of the control. /// - public String Title { get; set; } = Localizations.Default.Language["MultiToggleButton_Title"]; + public string Title { get; set; } = Default.Language["MultiToggleButton_Title"]; public int? MessageId { get; set; } - private bool RenderNecessary = true; + private bool _renderNecessary = true; - private static readonly object __evToggled = new object(); + private static readonly object EvToggled = new object(); - private readonly EventHandlerList Events = new EventHandlerList(); + private readonly EventHandlerList _events = new EventHandlerList(); /// /// This will hold all options available. @@ -52,27 +51,21 @@ namespace TelegramBotBase.Controls.Inline public event EventHandler Toggled { - add - { - this.Events.AddHandler(__evToggled, value); - } - remove - { - this.Events.RemoveHandler(__evToggled, value); - } + add => _events.AddHandler(EvToggled, value); + remove => _events.RemoveHandler(EvToggled, value); } public void OnToggled(EventArgs e) { - (this.Events[__evToggled] as EventHandler)?.Invoke(this, e); + (_events[EvToggled] as EventHandler)?.Invoke(this, e); } - public override async Task Action(MessageResult result, String value = null) + public override async Task Action(MessageResult result, string value = null) { if (result.Handled) return; - await result.ConfirmAction(this.ChangedString); + await result.ConfirmAction(ChangedString); switch (value ?? "unknown") { @@ -82,30 +75,30 @@ namespace TelegramBotBase.Controls.Inline if (s[0] == "check" && s.Length > 1) { - int index = 0; + var index = 0; if (!int.TryParse(s[1], out index)) { return; } - if(SelectedOption== null || SelectedOption != this.Options[index]) + if(SelectedOption== null || SelectedOption != Options[index]) { - this.SelectedOption = this.Options[index]; - OnToggled(new EventArgs()); + SelectedOption = Options[index]; + OnToggled(EventArgs.Empty); } - else if(this.AllowEmptySelection) + else if(AllowEmptySelection) { - this.SelectedOption = null; - OnToggled(new EventArgs()); + SelectedOption = null; + OnToggled(EventArgs.Empty); } - RenderNecessary = true; + _renderNecessary = true; return; } - RenderNecessary = false; + _renderNecessary = false; break; @@ -117,16 +110,16 @@ namespace TelegramBotBase.Controls.Inline public override async Task Render(MessageResult result) { - if (!RenderNecessary) + if (!_renderNecessary) return; var bf = new ButtonForm(this); var lst = new List(); - foreach (var o in this.Options) + foreach (var o in Options) { - var index = this.Options.IndexOf(o); - if (o == this.SelectedOption) + var index = Options.IndexOf(o); + if (o == SelectedOption) { lst.Add(new ButtonBase(SelectedIcon + " " + o.Text, "check$" + index)); continue; @@ -137,20 +130,20 @@ namespace TelegramBotBase.Controls.Inline bf.AddButtonRow(lst); - if (this.MessageId != null) + if (MessageId != null) { - var m = await this.Device.Edit(this.MessageId.Value, this.Title, bf); + var m = await Device.Edit(MessageId.Value, Title, bf); } else { - var m = await this.Device.Send(this.Title, bf, disableNotification: true); + var m = await Device.Send(Title, bf, disableNotification: true); if (m != null) { - this.MessageId = m.MessageId; + MessageId = m.MessageId; } } - this.RenderNecessary = false; + _renderNecessary = false; } diff --git a/TelegramBotBase/Controls/Inline/ProgressBar.cs b/TelegramBotBase/Controls/Inline/ProgressBar.cs index 14dd585..2dde19a 100644 --- a/TelegramBotBase/Controls/Inline/ProgressBar.cs +++ b/TelegramBotBase/Controls/Inline/ProgressBar.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Base; @@ -10,9 +7,9 @@ namespace TelegramBotBase.Controls.Inline /// /// A simple control for show and managing progress. /// - public class ProgressBar : Base.ControlBase + public class ProgressBar : ControlBase { - public enum eProgressStyle + public enum EProgressStyle { standard = 0, squares = 1, @@ -22,104 +19,78 @@ namespace TelegramBotBase.Controls.Inline custom = 10 } - public eProgressStyle ProgressStyle + public EProgressStyle ProgressStyle { - get - { - return m_eStyle; - } + get => _mEStyle; set { - m_eStyle = value; + _mEStyle = value; LoadStyle(); } } - private eProgressStyle m_eStyle = eProgressStyle.standard; + private EProgressStyle _mEStyle = EProgressStyle.standard; public int Value { - get - { - return this.m_iValue; - } + get => _mIValue; set { - if (value > this.Max) + if (value > Max) { return; } - if (this.m_iValue != value) + if (_mIValue != value) { - this.RenderNecessary = true; + RenderNecessary = true; } - this.m_iValue = value; + _mIValue = value; } } - private int m_iValue = 0; + private int _mIValue; public int Max { - get - { - return this.m_iMax; - } + get => _mIMax; set { - if (this.m_iMax != value) + if (_mIMax != value) { - this.RenderNecessary = true; + RenderNecessary = true; } - this.m_iMax = value; + _mIMax = value; } } - private int m_iMax = 100; + private int _mIMax = 100; public int? MessageId { get; set; } - private bool RenderNecessary { get; set; } = false; + private bool RenderNecessary { get; set; } public int Steps { get { - switch (this.ProgressStyle) + return ProgressStyle switch { - case eProgressStyle.standard: - - return 1; - - case eProgressStyle.squares: - - return 10; - - case eProgressStyle.circles: - - return 10; - - case eProgressStyle.lines: - - return 5; - - case eProgressStyle.squaredLines: - - return 5; - - default: - - return 1; - } + EProgressStyle.standard => 1, + EProgressStyle.squares => 10, + EProgressStyle.circles => 10, + EProgressStyle.lines => 5, + EProgressStyle.squaredLines => 5, + _ => 1 + }; } } /// /// Filled block (reached percentage) /// - public String BlockChar + public string BlockChar { get; set; } @@ -127,7 +98,7 @@ namespace TelegramBotBase.Controls.Inline /// /// Unfilled block (not reached yet) /// - public String EmptyBlockChar + public string EmptyBlockChar { get; set; } @@ -135,7 +106,7 @@ namespace TelegramBotBase.Controls.Inline /// /// String at the beginning of the progress bar /// - public String StartChar + public string StartChar { get; set; } @@ -143,133 +114,133 @@ namespace TelegramBotBase.Controls.Inline /// /// String at the end of the progress bar /// - public String EndChar + public string EndChar { get; set; } public ProgressBar() { - this.ProgressStyle = eProgressStyle.standard; + ProgressStyle = EProgressStyle.standard; - this.Value = 0; - this.Max = 100; + Value = 0; + Max = 100; - this.RenderNecessary = true; + RenderNecessary = true; } - public ProgressBar(int Value, int Max, eProgressStyle Style) + public ProgressBar(int value, int max, EProgressStyle style) { - this.Value = Value; - this.Max = Max; - this.ProgressStyle = Style; + this.Value = value; + this.Max = max; + ProgressStyle = style; - this.RenderNecessary = true; + RenderNecessary = true; } public override async Task Cleanup() { - if (this.MessageId == null || this.MessageId == -1) + if (MessageId == null || MessageId == -1) return; - await this.Device.DeleteMessage(this.MessageId.Value); + await Device.DeleteMessage(MessageId.Value); } public void LoadStyle() { - this.StartChar = ""; - this.EndChar = ""; + StartChar = ""; + EndChar = ""; - switch (this.ProgressStyle) + switch (ProgressStyle) { - case eProgressStyle.circles: + case EProgressStyle.circles: - this.BlockChar = "⚫️ "; - this.EmptyBlockChar = "⚪️ "; + BlockChar = "⚫️ "; + EmptyBlockChar = "⚪️ "; break; - case eProgressStyle.squares: + case EProgressStyle.squares: - this.BlockChar = "⬛️ "; - this.EmptyBlockChar = "⬜️ "; + BlockChar = "⬛️ "; + EmptyBlockChar = "⬜️ "; break; - case eProgressStyle.lines: + case EProgressStyle.lines: - this.BlockChar = "█"; - this.EmptyBlockChar = "▁"; + BlockChar = "█"; + EmptyBlockChar = "▁"; break; - case eProgressStyle.squaredLines: + case EProgressStyle.squaredLines: - this.BlockChar = "▇"; - this.EmptyBlockChar = "—"; + BlockChar = "▇"; + EmptyBlockChar = "—"; - this.StartChar = "["; - this.EndChar = "]"; + StartChar = "["; + EndChar = "]"; break; - case eProgressStyle.standard: - case eProgressStyle.custom: + case EProgressStyle.standard: + case EProgressStyle.custom: - this.BlockChar = ""; - this.EmptyBlockChar = ""; + BlockChar = ""; + EmptyBlockChar = ""; break; } } - public async override Task Render(MessageResult result) + public override async Task Render(MessageResult result) { - if (!this.RenderNecessary) + if (!RenderNecessary) { return; } - if (this.Device == null) + if (Device == null) { return; } - String message = ""; - int blocks = 0; - int maxBlocks = 0; + var message = ""; + var blocks = 0; + var maxBlocks = 0; - switch (this.ProgressStyle) + switch (ProgressStyle) { - case eProgressStyle.standard: + case EProgressStyle.standard: - message = this.Value.ToString("0") + "%"; + message = Value.ToString("0") + "%"; break; - case eProgressStyle.squares: - case eProgressStyle.circles: - case eProgressStyle.lines: - case eProgressStyle.squaredLines: - case eProgressStyle.custom: + case EProgressStyle.squares: + case EProgressStyle.circles: + case EProgressStyle.lines: + case EProgressStyle.squaredLines: + case EProgressStyle.custom: - blocks = (int)Math.Floor((decimal)this.Value / this.Steps); + blocks = (int)Math.Floor((decimal)Value / Steps); - maxBlocks = (this.Max / this.Steps); + maxBlocks = (Max / Steps); - message += this.StartChar; + message += StartChar; - for (int i = 0; i < blocks; i++) + for (var i = 0; i < blocks; i++) { - message += this.BlockChar; + message += BlockChar; } - for (int i = 0; i < (maxBlocks - blocks); i++) + for (var i = 0; i < (maxBlocks - blocks); i++) { - message += this.EmptyBlockChar; + message += EmptyBlockChar; } - message += this.EndChar; + message += EndChar; - message += " " + this.Value.ToString("0") + "%"; + message += " " + Value.ToString("0") + "%"; break; @@ -278,18 +249,18 @@ namespace TelegramBotBase.Controls.Inline return; } - if (this.MessageId == null) + if (MessageId == null) { - var m = await this.Device.Send(message); + var m = await Device.Send(message); - this.MessageId = m.MessageId; + MessageId = m.MessageId; } else { - await this.Device.Edit(this.MessageId.Value, message); + await Device.Edit(MessageId.Value, message); } - this.RenderNecessary = false; + RenderNecessary = false; } } diff --git a/TelegramBotBase/Controls/Inline/ToggleButton.cs b/TelegramBotBase/Controls/Inline/ToggleButton.cs index 5343f7b..8f27415 100644 --- a/TelegramBotBase/Controls/Inline/ToggleButton.cs +++ b/TelegramBotBase/Controls/Inline/ToggleButton.cs @@ -1,38 +1,36 @@ using System; -using System.Collections.Generic; using System.ComponentModel; -using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; +using TelegramBotBase.Localizations; namespace TelegramBotBase.Controls.Inline { public class ToggleButton : ControlBase { - public String UncheckedIcon { get; set; } = Localizations.Default.Language["ToggleButton_OffIcon"]; + public string UncheckedIcon { get; set; } = Default.Language["ToggleButton_OffIcon"]; - public String CheckedIcon { get; set; } = Localizations.Default.Language["ToggleButton_OnIcon"]; + public string CheckedIcon { get; set; } = Default.Language["ToggleButton_OnIcon"]; - public String CheckedString { get; set; } = Localizations.Default.Language["ToggleButton_On"]; + public string CheckedString { get; set; } = Default.Language["ToggleButton_On"]; - public String UncheckedString { get; set; } = Localizations.Default.Language["ToggleButton_Off"]; + public string UncheckedString { get; set; } = Default.Language["ToggleButton_Off"]; - public String ChangedString { get; set; } = Localizations.Default.Language["ToggleButton_Changed"]; + public string ChangedString { get; set; } = Default.Language["ToggleButton_Changed"]; - public String Title { get; set; } = Localizations.Default.Language["ToggleButton_Title"]; + public string Title { get; set; } = Default.Language["ToggleButton_Title"]; public int? MessageId { get; set; } public bool Checked { get; set; } - private bool RenderNecessary = true; + private bool _renderNecessary = true; - private static readonly object __evToggled = new object(); + private static readonly object EvToggled = new object(); - private readonly EventHandlerList Events = new EventHandlerList(); + private readonly EventHandlerList _events = new EventHandlerList(); public ToggleButton() @@ -41,68 +39,62 @@ namespace TelegramBotBase.Controls.Inline } - public ToggleButton(String CheckedString, String UncheckedString) + public ToggleButton(string checkedString, string uncheckedString) { - this.CheckedString = CheckedString; - this.UncheckedString = UncheckedString; + this.CheckedString = checkedString; + this.UncheckedString = uncheckedString; } public event EventHandler Toggled { - add - { - this.Events.AddHandler(__evToggled, value); - } - remove - { - this.Events.RemoveHandler(__evToggled, value); - } + add => _events.AddHandler(EvToggled, value); + remove => _events.RemoveHandler(EvToggled, value); } public void OnToggled(EventArgs e) { - (this.Events[__evToggled] as EventHandler)?.Invoke(this, e); + (_events[EvToggled] as EventHandler)?.Invoke(this, e); } - public override async Task Action(MessageResult result, String value = null) + public override async Task Action(MessageResult result, string value = null) { if (result.Handled) return; - await result.ConfirmAction(this.ChangedString); + await result.ConfirmAction(ChangedString); switch (value ?? "unknown") { case "on": - if (this.Checked) + if (Checked) return; - RenderNecessary = true; + _renderNecessary = true; - this.Checked = true; + Checked = true; - OnToggled(new EventArgs()); + OnToggled(EventArgs.Empty); break; case "off": - if (!this.Checked) + if (!Checked) return; - RenderNecessary = true; + _renderNecessary = true; - this.Checked = false; + Checked = false; - OnToggled(new EventArgs()); + OnToggled(EventArgs.Empty); break; default: - RenderNecessary = false; + _renderNecessary = false; break; @@ -114,31 +106,31 @@ namespace TelegramBotBase.Controls.Inline public override async Task Render(MessageResult result) { - if (!RenderNecessary) + if (!_renderNecessary) return; var bf = new ButtonForm(this); - ButtonBase bOn = new ButtonBase((this.Checked ? CheckedIcon : UncheckedIcon) + " " + CheckedString, "on"); + var bOn = new ButtonBase((Checked ? CheckedIcon : UncheckedIcon) + " " + CheckedString, "on"); - ButtonBase bOff = new ButtonBase((!this.Checked ? CheckedIcon : UncheckedIcon) + " " + UncheckedString, "off"); + var bOff = new ButtonBase((!Checked ? CheckedIcon : UncheckedIcon) + " " + UncheckedString, "off"); bf.AddButtonRow(bOn, bOff); - if (this.MessageId != null) + if (MessageId != null) { - var m = await this.Device.Edit(this.MessageId.Value, this.Title, bf); + var m = await Device.Edit(MessageId.Value, Title, bf); } else { - var m = await this.Device.Send(this.Title, bf, disableNotification: true); + var m = await Device.Send(Title, bf, disableNotification: true); if (m != null) { - this.MessageId = m.MessageId; + MessageId = m.MessageId; } } - this.RenderNecessary = false; + _renderNecessary = false; } diff --git a/TelegramBotBase/Controls/Inline/TreeView.cs b/TelegramBotBase/Controls/Inline/TreeView.cs index 65c8f4f..e3b6612 100644 --- a/TelegramBotBase/Controls/Inline/TreeView.cs +++ b/TelegramBotBase/Controls/Inline/TreeView.cs @@ -1,10 +1,9 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Base; using TelegramBotBase.Form; +using TelegramBotBase.Localizations; namespace TelegramBotBase.Controls.Inline { @@ -16,20 +15,20 @@ namespace TelegramBotBase.Controls.Inline public TreeViewNode VisibleNode { get; set; } - public String Title { get; set; } + public string Title { get; set; } private int? MessageId { get; set; } - public String MoveUpIcon { get; set; } = Localizations.Default.Language["TreeView_LevelUp"]; + public string MoveUpIcon { get; set; } = Default.Language["TreeView_LevelUp"]; public TreeView() { - this.Nodes = new List(); - this.Title = Localizations.Default.Language["TreeView_Title"]; + Nodes = new List(); + Title = Default.Language["TreeView_Title"]; } - public override async Task Action(MessageResult result, String value = null) + public override async Task Action(MessageResult result, string value = null) { await result.ConfirmAction(); @@ -43,14 +42,14 @@ namespace TelegramBotBase.Controls.Inline case "up": case "parent": - this.VisibleNode = (this.VisibleNode?.ParentNode); + VisibleNode = (VisibleNode?.ParentNode); result.Handled = true; break; default: - var n = (this.VisibleNode != null ? this.VisibleNode.FindNodeByValue(val) : this.Nodes.FirstOrDefault(a => a.Value == val)); + var n = (VisibleNode != null ? VisibleNode.FindNodeByValue(val) : Nodes.FirstOrDefault(a => a.Value == val)); if (n == null) return; @@ -58,11 +57,11 @@ namespace TelegramBotBase.Controls.Inline if (n.ChildNodes.Count > 0) { - this.VisibleNode = n; + VisibleNode = n; } else { - this.SelectedNode = (this.SelectedNode != n ? n : null); + SelectedNode = (SelectedNode != n ? n : null); } result.Handled = true; @@ -77,21 +76,21 @@ namespace TelegramBotBase.Controls.Inline public override async Task Render(MessageResult result) { - var startnode = this.VisibleNode; + var startnode = VisibleNode; - var nodes = (startnode?.ChildNodes ?? this.Nodes); + var nodes = (startnode?.ChildNodes ?? Nodes); - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); if (startnode != null) { - bf.AddButtonRow(new ButtonBase(this.MoveUpIcon, "up"), new ButtonBase(startnode.Text, "parent")); + bf.AddButtonRow(new ButtonBase(MoveUpIcon, "up"), new ButtonBase(startnode.Text, "parent")); } foreach (var n in nodes) { var s = n.Text; - if (this.SelectedNode == n) + if (SelectedNode == n) { s = "[ " + s + " ]"; } @@ -101,20 +100,20 @@ namespace TelegramBotBase.Controls.Inline - if (this.MessageId != null) + if (MessageId != null) { - var m = await this.Device.Edit(this.MessageId.Value, this.Title, bf); + var m = await Device.Edit(MessageId.Value, Title, bf); } else { - var m = await this.Device.Send(this.Title, bf); - this.MessageId = m.MessageId; + var m = await Device.Send(Title, bf); + MessageId = m.MessageId; } } - public String GetPath() + public string GetPath() { - return (this.VisibleNode?.GetPath() ?? "\\"); + return (VisibleNode?.GetPath() ?? "\\"); } diff --git a/TelegramBotBase/Controls/Inline/TreeViewNode.cs b/TelegramBotBase/Controls/Inline/TreeViewNode.cs index a871aae..4219f49 100644 --- a/TelegramBotBase/Controls/Inline/TreeViewNode.cs +++ b/TelegramBotBase/Controls/Inline/TreeViewNode.cs @@ -1,35 +1,32 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace TelegramBotBase.Controls.Inline { public class TreeViewNode { - public String Text { get; set; } + public string Text { get; set; } - public String Value { get; set; } + public string Value { get; set; } - public String Url { get; set; } + public string Url { get; set; } public List ChildNodes { get; set; } = new List(); public TreeViewNode ParentNode { get; set; } - public TreeViewNode(String Text, String Value) + public TreeViewNode(string text, string value) { - this.Text = Text; - this.Value = Value; + this.Text = text; + this.Value = value; } - public TreeViewNode(String Text, String Value, String Url) : this(Text, Value) + public TreeViewNode(string text, string value, string url) : this(text, value) { - this.Url = Url; + this.Url = url; } - public TreeViewNode(String Text, String Value, params TreeViewNode[] childnodes) : this(Text, Value) + public TreeViewNode(string text, string value, params TreeViewNode[] childnodes) : this(text, value) { foreach(var c in childnodes) { @@ -44,14 +41,14 @@ namespace TelegramBotBase.Controls.Inline ChildNodes.Add(node); } - public TreeViewNode FindNodeByValue(String Value) + public TreeViewNode FindNodeByValue(string value) { - return this.ChildNodes.FirstOrDefault(a => a.Value == Value); + return ChildNodes.FirstOrDefault(a => a.Value == value); } - public String GetPath() + public string GetPath() { - String s = "\\" + this.Value; + var s = "\\" + Value; var p = this; while (p.ParentNode != null) { diff --git a/TelegramBotBase/Datasources/ButtonFormDataSource.cs b/TelegramBotBase/DataSources/ButtonFormDataSource.cs similarity index 78% rename from TelegramBotBase/Datasources/ButtonFormDataSource.cs rename to TelegramBotBase/DataSources/ButtonFormDataSource.cs index e8fbfd4..3b90ec8 100644 --- a/TelegramBotBase/Datasources/ButtonFormDataSource.cs +++ b/TelegramBotBase/DataSources/ButtonFormDataSource.cs @@ -1,36 +1,29 @@ using System; using System.Collections.Generic; -using System.Text; using TelegramBotBase.Controls.Hybrid; using TelegramBotBase.Form; using TelegramBotBase.Interfaces; -namespace TelegramBotBase.Datasources +namespace TelegramBotBase.DataSources { - public class ButtonFormDataSource : Interfaces.IDataSource + public class ButtonFormDataSource : IDataSource { public virtual ButtonForm ButtonForm { - get - { - return __buttonform; - } - set - { - __buttonform = value; - } + get => _buttonform; + set => _buttonform = value; } - private ButtonForm __buttonform = null; + private ButtonForm _buttonform; public ButtonFormDataSource() { - __buttonform = new ButtonForm(); + _buttonform = new ButtonForm(); } public ButtonFormDataSource(ButtonForm bf) { - __buttonform = bf; + _buttonform = bf; } @@ -71,9 +64,9 @@ namespace TelegramBotBase.Datasources return ButtonForm.ToArray(); } - public virtual ButtonForm PickItems(int start, int count, String filter = null) + public virtual ButtonForm PickItems(int start, int count, string filter = null) { - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); ButtonForm dataForm = null; if (filter == null) @@ -85,9 +78,9 @@ namespace TelegramBotBase.Datasources dataForm = ButtonForm.FilterDuplicate(filter, true); } - for (int i = 0; i < count; i++) + for (var i = 0; i < count; i++) { - int it = start + i; + var it = start + i; if (it > dataForm.Rows - 1) break; @@ -98,7 +91,7 @@ namespace TelegramBotBase.Datasources return bf; } - public virtual ButtonForm PickAllItems(String filter = null) + public virtual ButtonForm PickAllItems(string filter = null) { if (filter == null) return ButtonForm.Duplicate(); @@ -107,7 +100,7 @@ namespace TelegramBotBase.Datasources return ButtonForm.FilterDuplicate(filter, true); } - public virtual Tuple FindRow(String text, bool useText = true) + public virtual Tuple FindRow(string text, bool useText = true) { return ButtonForm.FindRow(text, useText); } @@ -117,7 +110,7 @@ namespace TelegramBotBase.Datasources /// /// /// - public virtual int CalculateMax(String filter = null) + public virtual int CalculateMax(string filter = null) { return PickAllItems(filter).Rows; } diff --git a/TelegramBotBase/Datasources/StaticDataSource.cs b/TelegramBotBase/DataSources/StaticDataSource.cs similarity index 56% rename from TelegramBotBase/Datasources/StaticDataSource.cs rename to TelegramBotBase/DataSources/StaticDataSource.cs index 19ff96c..59e400e 100644 --- a/TelegramBotBase/Datasources/StaticDataSource.cs +++ b/TelegramBotBase/DataSources/StaticDataSource.cs @@ -1,13 +1,12 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Text; +using TelegramBotBase.Interfaces; -namespace TelegramBotBase.Datasources +namespace TelegramBotBase.DataSources { - public class StaticDataSource : Interfaces.IDataSource + public class StaticDataSource : IDataSource { - List Data { get; set; } + private List Data { get; set; } public StaticDataSource() { @@ -16,17 +15,11 @@ namespace TelegramBotBase.Datasources public StaticDataSource(List data) { - this.Data = data; + Data = data; } - public int Count - { - get - { - return Data.Count; - } - } + public int Count => Data.Count; public T ItemAt(int index) { diff --git a/TelegramBotBase/Enums/eDeleteMode.cs b/TelegramBotBase/Enums/eDeleteMode.cs index 1596678..b4d190a 100644 --- a/TelegramBotBase/Enums/eDeleteMode.cs +++ b/TelegramBotBase/Enums/eDeleteMode.cs @@ -1,12 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TelegramBotBase.Enums +namespace TelegramBotBase.Enums { - public enum eDeleteMode + public enum EDeleteMode { /// /// Don't delete any message. diff --git a/TelegramBotBase/Enums/eDeleteSide.cs b/TelegramBotBase/Enums/eDeleteSide.cs index 6803291..1b91ea1 100644 --- a/TelegramBotBase/Enums/eDeleteSide.cs +++ b/TelegramBotBase/Enums/eDeleteSide.cs @@ -1,12 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TelegramBotBase.Enums +namespace TelegramBotBase.Enums { - public enum eDeleteSide + public enum EDeleteSide { /// /// Delete only messages from this bot. diff --git a/TelegramBotBase/Enums/eKeyboardType.cs b/TelegramBotBase/Enums/eKeyboardType.cs index 3cd255e..ed808a0 100644 --- a/TelegramBotBase/Enums/eKeyboardType.cs +++ b/TelegramBotBase/Enums/eKeyboardType.cs @@ -1,12 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TelegramBotBase.Enums +namespace TelegramBotBase.Enums { - public enum eKeyboardType + public enum EKeyboardType { /// /// Uses a ReplyKeyboardMarkup diff --git a/TelegramBotBase/Enums/eMonthPickerMode.cs b/TelegramBotBase/Enums/eMonthPickerMode.cs index be2a1c3..b5f318f 100644 --- a/TelegramBotBase/Enums/eMonthPickerMode.cs +++ b/TelegramBotBase/Enums/eMonthPickerMode.cs @@ -1,12 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TelegramBotBase.Enums +namespace TelegramBotBase.Enums { - public enum eMonthPickerMode + public enum EMonthPickerMode { /// /// Shows the calendar with day picker mode diff --git a/TelegramBotBase/Enums/eNavigationBarVisibility.cs b/TelegramBotBase/Enums/eNavigationBarVisibility.cs index d10e027..00b4d57 100644 --- a/TelegramBotBase/Enums/eNavigationBarVisibility.cs +++ b/TelegramBotBase/Enums/eNavigationBarVisibility.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace TelegramBotBase.Enums +namespace TelegramBotBase.Enums { - public enum eNavigationBarVisibility + public enum ENavigationBarVisibility { /// /// Shows it depending on the amount of items. diff --git a/TelegramBotBase/Enums/eSettings.cs b/TelegramBotBase/Enums/eSettings.cs index 7e55710..da63d21 100644 --- a/TelegramBotBase/Enums/eSettings.cs +++ b/TelegramBotBase/Enums/eSettings.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace TelegramBotBase.Enums +namespace TelegramBotBase.Enums { - public enum eSettings + public enum ESettings { /// /// How often could a form navigate to another (within one user action/call/message) diff --git a/TelegramBotBase/Exceptions/MaxLengthException.cs b/TelegramBotBase/Exceptions/MaxLengthException.cs index 4263a65..86d811a 100644 --- a/TelegramBotBase/Exceptions/MaxLengthException.cs +++ b/TelegramBotBase/Exceptions/MaxLengthException.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace TelegramBotBase.Exceptions { diff --git a/TelegramBotBase/Exceptions/MaximumColsException.cs b/TelegramBotBase/Exceptions/MaximumColsException.cs index de7cffc..8ddf203 100644 --- a/TelegramBotBase/Exceptions/MaximumColsException.cs +++ b/TelegramBotBase/Exceptions/MaximumColsException.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace TelegramBotBase.Exceptions { @@ -11,12 +9,6 @@ namespace TelegramBotBase.Exceptions public int Maximum { get; set; } - public override string Message - { - get - { - return $"You have exceeded the maximum of columns by {Value.ToString()} / {Maximum.ToString()}"; - } - } + public override string Message => $"You have exceeded the maximum of columns by {Value.ToString()} / {Maximum.ToString()}"; } } diff --git a/TelegramBotBase/Exceptions/MaximumRowsException.cs b/TelegramBotBase/Exceptions/MaximumRowsException.cs index 1d00f18..10f5140 100644 --- a/TelegramBotBase/Exceptions/MaximumRowsException.cs +++ b/TelegramBotBase/Exceptions/MaximumRowsException.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace TelegramBotBase.Exceptions { @@ -11,12 +9,6 @@ namespace TelegramBotBase.Exceptions public int Maximum { get; set; } - public override string Message - { - get - { - return $"You have exceeded the maximum of rows by {Value.ToString()} / {Maximum.ToString()}"; - } - } + public override string Message => $"You have exceeded the maximum of rows by {Value.ToString()} / {Maximum.ToString()}"; } } diff --git a/TelegramBotBase/Factories/DefaultStartFormFactory.cs b/TelegramBotBase/Factories/DefaultStartFormFactory.cs index e3c7c20..969d446 100644 --- a/TelegramBotBase/Factories/DefaultStartFormFactory.cs +++ b/TelegramBotBase/Factories/DefaultStartFormFactory.cs @@ -1,11 +1,10 @@ using System; -using System.Collections.Generic; -using System.Text; using TelegramBotBase.Form; +using TelegramBotBase.Interfaces; namespace TelegramBotBase.Factories { - public class DefaultStartFormFactory : Interfaces.IStartFormFactory + public class DefaultStartFormFactory : IStartFormFactory { private readonly Type _startFormClass; diff --git a/TelegramBotBase/Factories/LambdaStartFormFactory.cs b/TelegramBotBase/Factories/LambdaStartFormFactory.cs index c748b20..563e03e 100644 --- a/TelegramBotBase/Factories/LambdaStartFormFactory.cs +++ b/TelegramBotBase/Factories/LambdaStartFormFactory.cs @@ -1,11 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Text; -using TelegramBotBase.Form; +using TelegramBotBase.Form; +using TelegramBotBase.Interfaces; namespace TelegramBotBase.Factories { - public class LambdaStartFormFactory : Interfaces.IStartFormFactory + public class LambdaStartFormFactory : IStartFormFactory { public delegate FormBase CreateFormDelegate(); diff --git a/TelegramBotBase/Form/AlertDialog.cs b/TelegramBotBase/Form/AlertDialog.cs index d0a9731..fe7f472 100644 --- a/TelegramBotBase/Form/AlertDialog.cs +++ b/TelegramBotBase/Form/AlertDialog.cs @@ -1,11 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using TelegramBotBase.Attributes; -using TelegramBotBase.Base; +using TelegramBotBase.Attributes; namespace TelegramBotBase.Form { @@ -15,12 +8,12 @@ namespace TelegramBotBase.Form [IgnoreState] public class AlertDialog : ConfirmDialog { - public String ButtonText { get; set; } + public string ButtonText { get; set; } - public AlertDialog(String Message, String ButtonText) : base(Message) + public AlertDialog(string message, string buttonText) : base(message) { - this.Buttons.Add(new ButtonBase(ButtonText, "ok")); - this.ButtonText = ButtonText; + Buttons.Add(new ButtonBase(buttonText, "ok")); + this.ButtonText = buttonText; } diff --git a/TelegramBotBase/Form/ArrayPromptDialog.cs b/TelegramBotBase/Form/ArrayPromptDialog.cs index 42749fe..4ce663c 100644 --- a/TelegramBotBase/Form/ArrayPromptDialog.cs +++ b/TelegramBotBase/Form/ArrayPromptDialog.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.ComponentModel; using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Args; using TelegramBotBase.Attributes; @@ -19,7 +18,7 @@ namespace TelegramBotBase.Form /// /// The message the users sees. /// - public String Message { get; set; } + public string Message { get; set; } /// /// An additional optional value. @@ -29,26 +28,24 @@ namespace TelegramBotBase.Form public ButtonBase[][] Buttons { get; set; } [Obsolete] - public Dictionary ButtonForms { get; set; } = new Dictionary(); + public Dictionary ButtonForms { get; set; } = new Dictionary(); - private EventHandlerList __Events { get; set; } = new EventHandlerList(); - - private static object __evButtonClicked { get; } = new object(); + private static object EvButtonClicked { get; } = new object(); public ArrayPromptDialog() { } - public ArrayPromptDialog(String Message) + public ArrayPromptDialog(string message) { - this.Message = Message; + this.Message = message; } - public ArrayPromptDialog(String Message, params ButtonBase[][] Buttons) + public ArrayPromptDialog(string message, params ButtonBase[][] buttons) { - this.Message = Message; - this.Buttons = Buttons; + this.Message = message; + this.Buttons = buttons; } public override async Task Action(MessageResult message) @@ -64,59 +61,53 @@ namespace TelegramBotBase.Form await message.DeleteMessage(); - var buttons = this.Buttons.Aggregate((a, b) => a.Union(b).ToArray()).ToList(); + var buttons = Buttons.Aggregate((a, b) => a.Union(b).ToArray()).ToList(); if(call==null) { return; } - ButtonBase button = buttons.FirstOrDefault(a => a.Value == call.Value); + var button = buttons.FirstOrDefault(a => a.Value == call.Value); if (button == null) { return; } - OnButtonClicked(new ButtonClickedEventArgs(button) { Tag = this.Tag }); + OnButtonClicked(new ButtonClickedEventArgs(button) { Tag = Tag }); - FormBase fb = ButtonForms.ContainsKey(call.Value) ? ButtonForms[call.Value] : null; + var fb = ButtonForms.ContainsKey(call.Value) ? ButtonForms[call.Value] : null; if (fb != null) { - await this.NavigateTo(fb); + await NavigateTo(fb); } } public override async Task Render(MessageResult message) { - ButtonForm btn = new ButtonForm(); + var btn = new ButtonForm(); - foreach(var bl in this.Buttons) + foreach(var bl in Buttons) { btn.AddButtonRow(bl.Select(a => new ButtonBase(a.Text, CallbackData.Create("action", a.Value))).ToList()); } - await this.Device.Send(this.Message, btn); + await Device.Send(Message, btn); } public event EventHandler ButtonClicked { - add - { - this.__Events.AddHandler(__evButtonClicked, value); - } - remove - { - this.__Events.RemoveHandler(__evButtonClicked, value); - } + add => Events.AddHandler(EvButtonClicked, value); + remove => Events.RemoveHandler(EvButtonClicked, value); } public void OnButtonClicked(ButtonClickedEventArgs e) { - (this.__Events[__evButtonClicked] as EventHandler)?.Invoke(this, e); + (Events[EvButtonClicked] as EventHandler)?.Invoke(this, e); } } } diff --git a/TelegramBotBase/Form/AutoCleanForm.cs b/TelegramBotBase/Form/AutoCleanForm.cs index b05938e..be2ff1e 100644 --- a/TelegramBotBase/Form/AutoCleanForm.cs +++ b/TelegramBotBase/Form/AutoCleanForm.cs @@ -22,35 +22,36 @@ namespace TelegramBotBase.Form public List OldMessages { get; set; } [SaveState] - public eDeleteMode DeleteMode { get; set; } + public EDeleteMode DeleteMode { get; set; } [SaveState] - public eDeleteSide DeleteSide { get; set; } + public EDeleteSide DeleteSide { get; set; } public AutoCleanForm() { - this.OldMessages = new List(); - this.DeleteMode = eDeleteMode.OnEveryCall; - this.DeleteSide = eDeleteSide.BotOnly; + OldMessages = new List(); + DeleteMode = EDeleteMode.OnEveryCall; + DeleteSide = EDeleteSide.BotOnly; - this.Init += AutoCleanForm_Init; + Init += AutoCleanForm_Init; - this.Closed += AutoCleanForm_Closed; + Closed += AutoCleanForm_Closed; } - private async Task AutoCleanForm_Init(object sender, InitEventArgs e) + private Task AutoCleanForm_Init(object sender, InitEventArgs e) { - if (this.Device == null) - return; + if (Device == null) + return Task.CompletedTask; - this.Device.MessageSent += Device_MessageSent; + Device.MessageSent += Device_MessageSent; - this.Device.MessageReceived += Device_MessageReceived; + Device.MessageReceived += Device_MessageReceived; - this.Device.MessageDeleted += Device_MessageDeleted; + Device.MessageDeleted += Device_MessageDeleted; + return Task.CompletedTask; } private void Device_MessageDeleted(object sender, MessageDeletedEventArgs e) @@ -61,23 +62,24 @@ namespace TelegramBotBase.Form private void Device_MessageReceived(object sender, MessageReceivedEventArgs e) { - if (this.DeleteSide == eDeleteSide.BotOnly) + if (DeleteSide == EDeleteSide.BotOnly) return; - this.OldMessages.Add(e.Message.MessageId); + OldMessages.Add(e.Message.MessageId); } - private async Task Device_MessageSent(object sender, MessageSentEventArgs e) + private Task Device_MessageSent(object sender, MessageSentEventArgs e) { - if (this.DeleteSide == eDeleteSide.UserOnly) - return; + if (DeleteSide == EDeleteSide.UserOnly) + return Task.CompletedTask; - this.OldMessages.Add(e.Message.MessageId); + OldMessages.Add(e.Message.MessageId); + return Task.CompletedTask; } public override async Task PreLoad(MessageResult message) { - if (this.DeleteMode != eDeleteMode.OnEveryCall) + if (DeleteMode != EDeleteMode.OnEveryCall) return; await MessageCleanup(); @@ -89,7 +91,7 @@ namespace TelegramBotBase.Form /// public void AddMessage(Message m) { - this.OldMessages.Add(m.MessageId); + OldMessages.Add(m.MessageId); } @@ -99,16 +101,16 @@ namespace TelegramBotBase.Form /// public void AddMessage(int messageId) { - this.OldMessages.Add(messageId); + OldMessages.Add(messageId); } /// /// Keeps the message by removing it from the list /// - /// - public void LeaveMessage(int Id) + /// + public void LeaveMessage(int id) { - this.OldMessages.Remove(Id); + OldMessages.Remove(id); } /// @@ -116,18 +118,19 @@ namespace TelegramBotBase.Form /// public void LeaveLastMessage() { - if (this.OldMessages.Count == 0) + if (OldMessages.Count == 0) return; - this.OldMessages.RemoveAt(this.OldMessages.Count - 1); + OldMessages.RemoveAt(OldMessages.Count - 1); } - private async Task AutoCleanForm_Closed(object sender, EventArgs e) + private Task AutoCleanForm_Closed(object sender, EventArgs e) { - if (this.DeleteMode != eDeleteMode.OnLeavingForm) - return; + if (DeleteMode != EDeleteMode.OnLeavingForm) + return Task.CompletedTask; MessageCleanup().Wait(); + return Task.CompletedTask; } /// @@ -167,7 +170,7 @@ namespace TelegramBotBase.Form var retryAfterSeconds = ex.InnerExceptions .Where(e => e is ApiRequestException apiEx && apiEx.ErrorCode == 429) - .Max(e => (int?)((ApiRequestException)e).Parameters.RetryAfter) ?? 0; + .Max(e => ((ApiRequestException)e).Parameters.RetryAfter) ?? 0; retryAfterTask = Task.Delay(retryAfterSeconds * 1000); } @@ -207,7 +210,7 @@ namespace TelegramBotBase.Form var retryAfterSeconds = ex.InnerExceptions .Where(e => e is ApiRequestException apiEx && apiEx.ErrorCode == 429) - .Max(e => (int?)((ApiRequestException)e).Parameters.RetryAfter) ?? 0; + .Max(e => ((ApiRequestException)e).Parameters.RetryAfter) ?? 0; retryAfterTask = Task.Delay(retryAfterSeconds * 1000); } diff --git a/TelegramBotBase/Form/ButtonBase.cs b/TelegramBotBase/Form/ButtonBase.cs index efb4466..a068774 100644 --- a/TelegramBotBase/Form/ButtonBase.cs +++ b/TelegramBotBase/Form/ButtonBase.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Diagnostics; using Telegram.Bot.Types.ReplyMarkups; namespace TelegramBotBase.Form @@ -14,22 +9,22 @@ namespace TelegramBotBase.Form /// public class ButtonBase { - public virtual String Text { get; set; } + public virtual string Text { get; set; } - public String Value { get; set; } + public string Value { get; set; } - public String Url { get; set; } + public string Url { get; set; } public ButtonBase() { } - public ButtonBase(String Text, String Value, String Url = null) + public ButtonBase(string text, string value, string url = null) { - this.Text = Text; - this.Value = Value; - this.Url = Url; + this.Text = text; + this.Value = value; + this.Url = url; } @@ -40,16 +35,17 @@ namespace TelegramBotBase.Form /// public virtual InlineKeyboardButton ToInlineButton(ButtonForm form) { - String id = (form.DependencyControl != null ? form.DependencyControl.ControlID + "_" : ""); - if (this.Url == null) + var id = (form.DependencyControl != null ? form.DependencyControl.ControlId + "_" : ""); + if (Url == null) { - return InlineKeyboardButton.WithCallbackData(this.Text, id + this.Value); + return InlineKeyboardButton.WithCallbackData(Text, id + Value); } - var ikb = new InlineKeyboardButton(this.Text); - - //ikb.Text = this.Text; - ikb.Url = this.Url; + var ikb = new InlineKeyboardButton(Text) + { + //ikb.Text = this.Text; + Url = Url + }; return ikb; @@ -63,7 +59,7 @@ namespace TelegramBotBase.Form /// public virtual KeyboardButton ToKeyboardButton(ButtonForm form) { - return new KeyboardButton(this.Text); + return new KeyboardButton(Text); } } diff --git a/TelegramBotBase/Form/ButtonForm.cs b/TelegramBotBase/Form/ButtonForm.cs index c477b37..fea7fb9 100644 --- a/TelegramBotBase/Form/ButtonForm.cs +++ b/TelegramBotBase/Form/ButtonForm.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using Telegram.Bot.Types.ReplyMarkups; using TelegramBotBase.Base; using TelegramBotBase.Controls.Hybrid; @@ -14,7 +12,7 @@ namespace TelegramBotBase.Form /// public class ButtonForm { - List Buttons = new List(); + private List _buttons = new List(); public IReplyMarkup Markup { get; set; } @@ -24,13 +22,7 @@ namespace TelegramBotBase.Form /// /// Contains the number of rows. /// - public int Rows - { - get - { - return Buttons.Count; - } - } + public int Rows => _buttons.Count; /// /// Contains the highest number of columns in an row. @@ -39,18 +31,12 @@ namespace TelegramBotBase.Form { get { - return Buttons.Select(a => a.Count).OrderByDescending(a => a).FirstOrDefault(); + return _buttons.Select(a => a.Count).OrderByDescending(a => a).FirstOrDefault(); } } - public ButtonRow this[int row] - { - get - { - return Buttons[row]; - } - } + public ButtonRow this[int row] => _buttons[row]; public ButtonForm() { @@ -59,12 +45,12 @@ namespace TelegramBotBase.Form public ButtonForm(ControlBase control) { - this.DependencyControl = control; + DependencyControl = control; } - public void AddButtonRow(String Text, String Value, String Url = null) + public void AddButtonRow(string text, string value, string url = null) { - Buttons.Add(new List() { new ButtonBase(Text, Value, Url) }); + _buttons.Add(new List { new ButtonBase(text, value, url) }); } //public void AddButtonRow(ButtonRow row) @@ -74,7 +60,7 @@ namespace TelegramBotBase.Form public void AddButtonRow(ButtonRow row) { - Buttons.Add(row); + _buttons.Add(row); } public void AddButtonRow(params ButtonBase[] row) @@ -84,17 +70,17 @@ namespace TelegramBotBase.Form public void AddButtonRows(IEnumerable rows) { - Buttons.AddRange(rows); + _buttons.AddRange(rows); } public void InsertButtonRow(int index, IEnumerable row) { - Buttons.Insert(index, row.ToList()); + _buttons.Insert(index, row.ToList()); } public void InsertButtonRow(int index, ButtonRow row) { - Buttons.Insert(index, row); + _buttons.Insert(index, row); } //public void InsertButtonRow(int index, params ButtonBase[] row) @@ -104,7 +90,7 @@ namespace TelegramBotBase.Form public static T[][] SplitTo(IEnumerable items, int itemsPerRow = 2) { - T[][] splitted = default(T[][]); + var splitted = default(T[][]); try { @@ -126,10 +112,10 @@ namespace TelegramBotBase.Form { get { - if (this.Buttons.Count == 0) + if (_buttons.Count == 0) return 0; - return this.Buttons.Select(a => a.ToArray()).ToList().Aggregate((a, b) => a.Union(b).ToArray()).Length; + return _buttons.Select(a => a.ToArray()).ToList().Aggregate((a, b) => a.Union(b).ToArray()).Length; } } @@ -140,7 +126,7 @@ namespace TelegramBotBase.Form /// public void AddSplitted(IEnumerable buttons, int buttonsPerRow = 2) { - var sp = SplitTo(buttons, buttonsPerRow); + var sp = SplitTo(buttons, buttonsPerRow); foreach (var bl in sp) { @@ -156,50 +142,50 @@ namespace TelegramBotBase.Form /// public List GetRange(int start, int count) { - return Buttons.Skip(start).Take(count).ToList(); + return _buttons.Skip(start).Take(count).ToList(); } public List ToList() { - return this.Buttons.DefaultIfEmpty(new List()).Select(a => a.ToList()).Aggregate((a, b) => a.Union(b).ToList()); + return _buttons.DefaultIfEmpty(new List()).Select(a => a.ToList()).Aggregate((a, b) => a.Union(b).ToList()); } public InlineKeyboardButton[][] ToInlineButtonArray() { - var ikb = this.Buttons.Select(a => a.ToArray().Select(b => b.ToInlineButton(this)).ToArray()).ToArray(); + var ikb = _buttons.Select(a => a.ToArray().Select(b => b.ToInlineButton(this)).ToArray()).ToArray(); return ikb; } public KeyboardButton[][] ToReplyButtonArray() { - var ikb = this.Buttons.Select(a => a.ToArray().Select(b => b.ToKeyboardButton(this)).ToArray()).ToArray(); + var ikb = _buttons.Select(a => a.ToArray().Select(b => b.ToKeyboardButton(this)).ToArray()).ToArray(); return ikb; } public List ToArray() { - return Buttons; + return _buttons; } public int FindRowByButton(ButtonBase button) { - var row = this.Buttons.FirstOrDefault(a => a.ToArray().Count(b => b == button) > 0); + var row = _buttons.FirstOrDefault(a => a.ToArray().Count(b => b == button) > 0); if (row == null) return -1; - return this.Buttons.IndexOf(row); + return _buttons.IndexOf(row); } - public Tuple FindRow(String text, bool useText = true) + public Tuple FindRow(string text, bool useText = true) { - var r = this.Buttons.FirstOrDefault(a => a.Matches(text, useText)); + var r = _buttons.FirstOrDefault(a => a.Matches(text, useText)); if (r == null) return null; - var i = this.Buttons.IndexOf(r); + var i = _buttons.IndexOf(r); return new Tuple(r, i); } @@ -209,9 +195,9 @@ namespace TelegramBotBase.Form /// /// /// - public ButtonBase GetButtonByValue(String value) + public ButtonBase GetButtonByValue(string value) { - return this.ToList().Where(a => a.Value == value).FirstOrDefault(); + return ToList().Where(a => a.Value == value).FirstOrDefault(); } public static implicit operator InlineKeyboardMarkup(ButtonForm form) @@ -219,7 +205,7 @@ namespace TelegramBotBase.Form if (form == null) return null; - InlineKeyboardMarkup ikm = new InlineKeyboardMarkup(form.ToInlineButtonArray()); + var ikm = new InlineKeyboardMarkup(form.ToInlineButtonArray()); return ikm; } @@ -229,7 +215,7 @@ namespace TelegramBotBase.Form if (form == null) return null; - ReplyKeyboardMarkup ikm = new ReplyKeyboardMarkup(form.ToReplyButtonArray()); + var ikm = new ReplyKeyboardMarkup(form.ToReplyButtonArray()); return ikm; } @@ -240,20 +226,20 @@ namespace TelegramBotBase.Form /// public ButtonForm Duplicate() { - var bf = new ButtonForm() + var bf = new ButtonForm { - Markup = this.Markup, - DependencyControl = this.DependencyControl + Markup = Markup, + DependencyControl = DependencyControl }; - foreach (var b in Buttons) + foreach (var b in _buttons) { var lst = new ButtonRow(); foreach (var b2 in b) { lst.Add(b2); } - bf.Buttons.Add(lst); + bf._buttons.Add(lst); } return bf; @@ -263,15 +249,15 @@ namespace TelegramBotBase.Form /// Creates a copy of this form and filters by the parameter. /// /// - public ButtonForm FilterDuplicate(String filter, bool ByRow = false) + public ButtonForm FilterDuplicate(string filter, bool byRow = false) { - var bf = new ButtonForm() + var bf = new ButtonForm { - Markup = this.Markup, - DependencyControl = this.DependencyControl + Markup = Markup, + DependencyControl = DependencyControl }; - foreach (var b in Buttons) + foreach (var b in _buttons) { var lst = new ButtonRow(); foreach (var b2 in b) @@ -280,19 +266,17 @@ namespace TelegramBotBase.Form continue; //Copy full row, when at least one match has found. - if (ByRow) + if (byRow) { lst = b; break; } - else - { - lst.Add(b2); - } + + lst.Add(b2); } if (lst.Count > 0) - bf.Buttons.Add(lst); + bf._buttons.Add(lst); } return bf; @@ -302,15 +286,15 @@ namespace TelegramBotBase.Form /// Creates a copy of this form and filters by the parameter. /// /// - public ButtonForm TagDuplicate(List tags, bool ByRow = false) + public ButtonForm TagDuplicate(List tags, bool byRow = false) { - var bf = new ButtonForm() + var bf = new ButtonForm { - Markup = this.Markup, - DependencyControl = this.DependencyControl + Markup = Markup, + DependencyControl = DependencyControl }; - foreach (var b in Buttons) + foreach (var b in _buttons) { var lst = new ButtonRow(); foreach (var b2 in b) @@ -322,19 +306,17 @@ namespace TelegramBotBase.Form continue; //Copy full row, when at least one match has found. - if (ByRow) + if (byRow) { lst = b; break; } - else - { - lst.Add(b2); - } + + lst.Add(b2); } if (lst.Count > 0) - bf.Buttons.Add(lst); + bf._buttons.Add(lst); } return bf; diff --git a/TelegramBotBase/Form/CallbackData.cs b/TelegramBotBase/Form/CallbackData.cs index 3b50e31..9cca33d 100644 --- a/TelegramBotBase/Form/CallbackData.cs +++ b/TelegramBotBase/Form/CallbackData.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Newtonsoft.Json; -using Newtonsoft.Json.Serialization; +using Newtonsoft.Json; namespace TelegramBotBase.Form { @@ -14,10 +8,10 @@ namespace TelegramBotBase.Form public class CallbackData { [JsonProperty("m")] - public String Method { get; set; } + public string Method { get; set; } [JsonProperty("v")] - public String Value { get; set; } + public string Value { get; set; } public CallbackData() @@ -25,13 +19,13 @@ namespace TelegramBotBase.Form } - public CallbackData(String method, String value) + public CallbackData(string method, string value) { - this.Method = method; - this.Value = value; + Method = method; + Value = value; } - public static String Create(String method, String value) + public static string Create(string method, string value) { return new CallbackData(method, value).Serialize(); } @@ -40,13 +34,13 @@ namespace TelegramBotBase.Form /// Serializes data to json string /// /// - public String Serialize() + public string Serialize() { - String s = ""; + var s = ""; try { - s = Newtonsoft.Json.JsonConvert.SerializeObject(this); + s = JsonConvert.SerializeObject(this); } catch { @@ -61,12 +55,12 @@ namespace TelegramBotBase.Form /// /// /// - public static CallbackData Deserialize(String data) + public static CallbackData Deserialize(string data) { CallbackData cd = null; try { - cd = Newtonsoft.Json.JsonConvert.DeserializeObject(data); + cd = JsonConvert.DeserializeObject(data); return cd; } diff --git a/TelegramBotBase/Form/ConfirmDialog.cs b/TelegramBotBase/Form/ConfirmDialog.cs index dc791db..0621fcb 100644 --- a/TelegramBotBase/Form/ConfirmDialog.cs +++ b/TelegramBotBase/Form/ConfirmDialog.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.ComponentModel; using System.Linq; -using System.Text; using System.Threading.Tasks; using TelegramBotBase.Args; using TelegramBotBase.Attributes; @@ -16,7 +15,7 @@ namespace TelegramBotBase.Form /// /// The message the users sees. /// - public String Message { get; set; } + public string Message { get; set; } /// /// An additional optional value. @@ -30,25 +29,23 @@ namespace TelegramBotBase.Form public List Buttons { get; set; } - private EventHandlerList __Events { get; set; } = new EventHandlerList(); - - private static object __evButtonClicked { get; } = new object(); + private static object EvButtonClicked { get; } = new object(); public ConfirmDialog() { } - public ConfirmDialog(String Message) + public ConfirmDialog(string message) { - this.Message = Message; - this.Buttons = new List(); + this.Message = message; + Buttons = new List(); } - public ConfirmDialog(String Message, params ButtonBase[] Buttons) + public ConfirmDialog(string message, params ButtonBase[] buttons) { - this.Message = Message; - this.Buttons = Buttons.ToList(); + this.Message = message; + this.Buttons = buttons.ToList(); } /// @@ -57,7 +54,7 @@ namespace TelegramBotBase.Form /// public void AddButton(ButtonBase button) { - this.Buttons.Add(button); + Buttons.Add(button); } public override async Task Action(MessageResult message) @@ -78,14 +75,14 @@ namespace TelegramBotBase.Form await message.DeleteMessage(); - ButtonBase button = this.Buttons.FirstOrDefault(a => a.Value == call.Value); + var button = Buttons.FirstOrDefault(a => a.Value == call.Value); if (button == null) { return; } - OnButtonClicked(new ButtonClickedEventArgs(button) { Tag = this.Tag }); + OnButtonClicked(new ButtonClickedEventArgs(button) { Tag = Tag }); if (AutoCloseOnClick) await CloseForm(); @@ -94,30 +91,24 @@ namespace TelegramBotBase.Form public override async Task Render(MessageResult message) { - ButtonForm btn = new ButtonForm(); + var btn = new ButtonForm(); - var buttons = this.Buttons.Select(a => new ButtonBase(a.Text, CallbackData.Create("action", a.Value))).ToList(); + var buttons = Buttons.Select(a => new ButtonBase(a.Text, CallbackData.Create("action", a.Value))).ToList(); btn.AddButtonRow(buttons); - await this.Device.Send(this.Message, btn); + await Device.Send(Message, btn); } public event EventHandler ButtonClicked { - add - { - this.__Events.AddHandler(__evButtonClicked, value); - } - remove - { - this.__Events.RemoveHandler(__evButtonClicked, value); - } + add => Events.AddHandler(EvButtonClicked, value); + remove => Events.RemoveHandler(EvButtonClicked, value); } public void OnButtonClicked(ButtonClickedEventArgs e) { - (this.__Events[__evButtonClicked] as EventHandler)?.Invoke(this, e); + (Events[EvButtonClicked] as EventHandler)?.Invoke(this, e); } } diff --git a/TelegramBotBase/Form/DynamicButton.cs b/TelegramBotBase/Form/DynamicButton.cs index 4935514..9dcc89b 100644 --- a/TelegramBotBase/Form/DynamicButton.cs +++ b/TelegramBotBase/Form/DynamicButton.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace TelegramBotBase.Form { @@ -8,32 +6,26 @@ namespace TelegramBotBase.Form { public override string Text { - get - { - return GetText?.Invoke() ?? m_text; - } - set - { - m_text = value; - } + get => _getText?.Invoke() ?? _mText; + set => _mText = value; } - private String m_text = ""; + private string _mText = ""; - private Func GetText; + private Func _getText; - public DynamicButton(String Text, String Value, String Url = null) + public DynamicButton(string text, string value, string url = null) { - this.Text = Text; - this.Value = Value; - this.Url = Url; + this.Text = text; + this.Value = value; + this.Url = url; } - public DynamicButton(Func GetText, String Value, String Url = null) + public DynamicButton(Func getText, string value, string url = null) { - this.GetText = GetText; - this.Value = Value; - this.Url = Url; + this._getText = getText; + this.Value = value; + this.Url = url; } diff --git a/TelegramBotBase/Form/GroupForm.cs b/TelegramBotBase/Form/GroupForm.cs index ecdc01f..6134a43 100644 --- a/TelegramBotBase/Form/GroupForm.cs +++ b/TelegramBotBase/Form/GroupForm.cs @@ -1,8 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; +using Telegram.Bot.Types.Enums; using TelegramBotBase.Args; using TelegramBotBase.Base; @@ -10,38 +7,30 @@ namespace TelegramBotBase.Form { public class GroupForm : FormBase { - - - public GroupForm() - { - - - } - public override async Task Load(MessageResult message) { switch (message.MessageType) { - case Telegram.Bot.Types.Enums.MessageType.ChatMembersAdded: + case MessageType.ChatMembersAdded: - await OnMemberChanges(new MemberChangeEventArgs(Telegram.Bot.Types.Enums.MessageType.ChatMembersAdded, message, message.Message.NewChatMembers)); + await OnMemberChanges(new MemberChangeEventArgs(MessageType.ChatMembersAdded, message, message.Message.NewChatMembers)); break; - case Telegram.Bot.Types.Enums.MessageType.ChatMemberLeft: + case MessageType.ChatMemberLeft: - await OnMemberChanges(new MemberChangeEventArgs(Telegram.Bot.Types.Enums.MessageType.ChatMemberLeft, message, message.Message.LeftChatMember)); + await OnMemberChanges(new MemberChangeEventArgs(MessageType.ChatMemberLeft, message, message.Message.LeftChatMember)); break; - case Telegram.Bot.Types.Enums.MessageType.ChatPhotoChanged: - case Telegram.Bot.Types.Enums.MessageType.ChatPhotoDeleted: - case Telegram.Bot.Types.Enums.MessageType.ChatTitleChanged: - case Telegram.Bot.Types.Enums.MessageType.MigratedFromGroup: - case Telegram.Bot.Types.Enums.MessageType.MigratedToSupergroup: - case Telegram.Bot.Types.Enums.MessageType.MessagePinned: - case Telegram.Bot.Types.Enums.MessageType.GroupCreated: - case Telegram.Bot.Types.Enums.MessageType.SupergroupCreated: - case Telegram.Bot.Types.Enums.MessageType.ChannelCreated: + case MessageType.ChatPhotoChanged: + case MessageType.ChatPhotoDeleted: + case MessageType.ChatTitleChanged: + case MessageType.MigratedFromGroup: + case MessageType.MigratedToSupergroup: + case MessageType.MessagePinned: + case MessageType.GroupCreated: + case MessageType.SupergroupCreated: + case MessageType.ChannelCreated: await OnGroupChanged(new GroupChangedEventArgs(message.MessageType, message)); @@ -61,26 +50,26 @@ namespace TelegramBotBase.Form await OnMessageEdit(message); } - public virtual async Task OnMemberChanges(MemberChangeEventArgs e) + public virtual Task OnMemberChanges(MemberChangeEventArgs e) { - + return Task.CompletedTask; } - public virtual async Task OnGroupChanged(GroupChangedEventArgs e) + public virtual Task OnGroupChanged(GroupChangedEventArgs e) { - + return Task.CompletedTask; } - public virtual async Task OnMessage(MessageResult e) + public virtual Task OnMessage(MessageResult e) { - + return Task.CompletedTask; } - public virtual async Task OnMessageEdit(MessageResult e) + public virtual Task OnMessageEdit(MessageResult e) { - + return Task.CompletedTask; } } } diff --git a/TelegramBotBase/Form/ModalDialog.cs b/TelegramBotBase/Form/ModalDialog.cs index a3c8faa..06d7b7b 100644 --- a/TelegramBotBase/Form/ModalDialog.cs +++ b/TelegramBotBase/Form/ModalDialog.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Threading.Tasks; namespace TelegramBotBase.Form @@ -17,12 +15,12 @@ namespace TelegramBotBase.Form /// public async Task CloseForm() { - await this.CloseControls(); + await CloseControls(); - await this.OnClosed(new EventArgs()); + await OnClosed(EventArgs.Empty); - await this.ParentForm?.ReturnFromModal(this); + await ParentForm?.ReturnFromModal(this); } } } diff --git a/TelegramBotBase/Form/Navigation/NavigationController.cs b/TelegramBotBase/Form/Navigation/NavigationController.cs index d1858b9..94461ab 100644 --- a/TelegramBotBase/Form/Navigation/NavigationController.cs +++ b/TelegramBotBase/Form/Navigation/NavigationController.cs @@ -2,12 +2,13 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using System.Text; +using System.Reflection; using System.Threading.Tasks; using TelegramBotBase.Args; using TelegramBotBase.Attributes; using TelegramBotBase.Base; using TelegramBotBase.Interfaces; +using TelegramBotBase.Tools; namespace TelegramBotBase.Form.Navigation { @@ -33,15 +34,15 @@ namespace TelegramBotBase.Form.Navigation Index = -1; ForceCleanupOnLastPop = true; - this.Init += NavigationController_Init; - this.Opened += NavigationController_Opened; - this.Closed += NavigationController_Closed; + Init += NavigationController_Init; + Opened += NavigationController_Opened; + Closed += NavigationController_Closed; } public NavigationController(FormBase startForm, params FormBase[] forms) : this() { - this.Client = startForm.Client; - this.Device = startForm.Device; + Client = startForm.Client; + Device = startForm.Device; startForm.NavigationController = this; History.Add(startForm); @@ -54,7 +55,7 @@ namespace TelegramBotBase.Form.Navigation } } - private async Task NavigationController_Init(object sender, Args.InitEventArgs e) + private async Task NavigationController_Init(object sender, InitEventArgs e) { if (CurrentForm == null) return; @@ -97,21 +98,21 @@ namespace TelegramBotBase.Form.Navigation Device.FormSwitched = true; - await form.OnClosed(new EventArgs()); + await form.OnClosed(EventArgs.Empty); //Leave NavigationController and move to the last one if (ForceCleanupOnLastPop && History.Count == 1) { - var last_form = History[0]; - last_form.NavigationController = null; - await this.NavigateTo(last_form); + var lastForm = History[0]; + lastForm.NavigationController = null; + await NavigateTo(lastForm); return; } if (History.Count > 0) { form = History[Index]; - await form.OnOpened(new EventArgs()); + await form.OnOpened(EventArgs.Empty); } } @@ -134,11 +135,11 @@ namespace TelegramBotBase.Form.Navigation /// public virtual async Task PushAsync(FormBase form, params object[] args) { - form.Client = this.Client; - form.Device = this.Device; + form.Client = Client; + form.Device = Device; form.NavigationController = this; - this.History.Add(form); + History.Add(form); Index++; Device.FormSwitched = true; @@ -148,7 +149,7 @@ namespace TelegramBotBase.Form.Navigation await form.OnInit(new InitEventArgs(args)); - await form.OnOpened(new EventArgs()); + await form.OnOpened(EventArgs.Empty); } /// @@ -172,10 +173,10 @@ namespace TelegramBotBase.Form.Navigation { get { - if (this.History.Count == 0) + if (History.Count == 0) return null; - return this.History[Index]; + return History[Index]; } } @@ -191,12 +192,12 @@ namespace TelegramBotBase.Form.Navigation return; - int historyCount = e.GetInt("$controller.history.count"); + var historyCount = e.GetInt("$controller.history.count"); - for (int i = 0; i < historyCount; i++) + for (var i = 0; i < historyCount; i++) { - var c = e.GetObject($"$controller.history[{i}]") as Dictionary; + var c = e.GetObject($"$controller.history[{i}]") as Dictionary; @@ -205,23 +206,21 @@ namespace TelegramBotBase.Form.Navigation if (qname == null) continue; - Type t = Type.GetType(qname.ToString()); + var t = Type.GetType(qname); if (t == null || !t.IsSubclassOf(typeof(FormBase))) { continue; } - var form = t.GetConstructor(new Type[] { })?.Invoke(new object[] { }) as FormBase; - //No default constructor, fallback - if (form == null) + if (t.GetConstructor(new Type[] { })?.Invoke(new object[] { }) is not FormBase form) { continue; } var properties = c.Where(a => a.Key.StartsWith("$")); - var fields = form.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Where(a => a.GetCustomAttributes(typeof(SaveState), true).Length != 0).ToList(); + var fields = form.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Where(a => a.GetCustomAttributes(typeof(SaveState), true).Length != 0).ToList(); foreach (var p in properties) { @@ -243,10 +242,10 @@ namespace TelegramBotBase.Form.Navigation f.SetValue(form, p.Value); } - catch (ArgumentException ex) + catch (ArgumentException) { - Tools.Conversion.CustomConversionChecks(form, p, f); + Conversion.CustomConversionChecks(form, p, f); } catch @@ -255,13 +254,13 @@ namespace TelegramBotBase.Form.Navigation } } - form.Device = this.Device; - form.Client = this.Client; + form.Device = Device; + form.Client = Client; form.NavigationController = this; form.OnInit(new InitEventArgs()); - this.History.Add(form); + History.Add(form); } } @@ -270,12 +269,12 @@ namespace TelegramBotBase.Form.Navigation { e.Set("$controller.history.count", History.Count.ToString()); - int i = 0; + var i = 0; foreach (var form in History) { - var fields = form.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Where(a => a.GetCustomAttributes(typeof(SaveState), true).Length != 0).ToList(); + var fields = form.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Where(a => a.GetCustomAttributes(typeof(SaveState), true).Length != 0).ToList(); - var dt = new Dictionary(); + var dt = new Dictionary(); foreach (var f in fields) { var val = f.GetValue(form); diff --git a/TelegramBotBase/Form/PromptDialog.cs b/TelegramBotBase/Form/PromptDialog.cs index ec9e61c..61a28bf 100644 --- a/TelegramBotBase/Form/PromptDialog.cs +++ b/TelegramBotBase/Form/PromptDialog.cs @@ -1,14 +1,12 @@ using System; -using System.Collections.Generic; using System.ComponentModel; -using System.Linq; -using System.Text; using System.Threading.Tasks; using Telegram.Bot.Types; using Telegram.Bot.Types.ReplyMarkups; using TelegramBotBase.Args; using TelegramBotBase.Attributes; using TelegramBotBase.Base; +using TelegramBotBase.Localizations; namespace TelegramBotBase.Form { @@ -18,25 +16,23 @@ namespace TelegramBotBase.Form /// /// The message the users sees. /// - public String Message { get; set; } + public string Message { get; set; } /// /// The returned text value by the user. /// - public String Value { get; set; } + public string Value { get; set; } /// /// An additional optional value. /// public object Tag { get; set; } - private EventHandlerList __Events { get; set; } = new EventHandlerList(); - - private static object __evCompleted { get; } = new object(); + private static object EvCompleted { get; } = new object(); public bool ShowBackButton { get; set; } = false; - public String BackLabel { get; set; } = Localizations.Default.Language["PromptDialog_Back"]; + public string BackLabel { get; set; } = Default.Language["PromptDialog_Back"]; /// /// Contains the RAW received message. @@ -48,12 +44,12 @@ namespace TelegramBotBase.Form } - public PromptDialog(String Message) + public PromptDialog(string message) { - this.Message = Message; + this.Message = message; } - public async override Task Load(MessageResult message) + public override async Task Load(MessageResult message) { if (message.Handled) return; @@ -61,16 +57,16 @@ namespace TelegramBotBase.Form if (!message.IsFirstHandler) return; - if (this.ShowBackButton && message.MessageText == BackLabel) + if (ShowBackButton && message.MessageText == BackLabel) { - await this.CloseForm(); + await CloseForm(); return; } - if (this.Value == null) + if (Value == null) { - this.Value = message.MessageText; + Value = message.MessageText; ReceivedMessage = message.Message; } @@ -81,44 +77,38 @@ namespace TelegramBotBase.Form public override async Task Render(MessageResult message) { - if (this.Value == null) + if (Value == null) { - if (this.ShowBackButton) + if (ShowBackButton) { - ButtonForm bf = new ButtonForm(); + var bf = new ButtonForm(); bf.AddButtonRow(new ButtonBase(BackLabel, "back")); - await this.Device.Send(this.Message, (ReplyMarkupBase)bf); + await Device.Send(Message, (ReplyMarkupBase)bf); return; } - await this.Device.Send(this.Message); + await Device.Send(Message); return; } message.Handled = true; - OnCompleted(new PromptDialogCompletedEventArgs() { Tag = this.Tag, Value = this.Value }); + OnCompleted(new PromptDialogCompletedEventArgs { Tag = Tag, Value = Value }); - await this.CloseForm(); + await CloseForm(); } public event EventHandler Completed { - add - { - this.__Events.AddHandler(__evCompleted, value); - } - remove - { - this.__Events.RemoveHandler(__evCompleted, value); - } + add => Events.AddHandler(EvCompleted, value); + remove => Events.RemoveHandler(EvCompleted, value); } public void OnCompleted(PromptDialogCompletedEventArgs e) { - (this.__Events[__evCompleted] as EventHandler)?.Invoke(this, e); + (Events[EvCompleted] as EventHandler)?.Invoke(this, e); } } diff --git a/TelegramBotBase/Form/SplitterForm.cs b/TelegramBotBase/Form/SplitterForm.cs index 89b3ce7..bfb9818 100644 --- a/TelegramBotBase/Form/SplitterForm.cs +++ b/TelegramBotBase/Form/SplitterForm.cs @@ -1,11 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; +using Telegram.Bot.Types.Enums; using TelegramBotBase.Base; - namespace TelegramBotBase.Form { /// @@ -23,14 +19,14 @@ namespace TelegramBotBase.Form public override async Task Load(MessageResult message) { - if (message.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Channel) + if (message.Message.Chat.Type == ChatType.Channel) { if (await OpenChannel(message)) { return; } } - if (message.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Supergroup) + if (message.Message.Chat.Type == ChatType.Supergroup) { if (await OpenSupergroup(message)) { @@ -41,7 +37,7 @@ namespace TelegramBotBase.Form return; } } - if (message.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Group) + if (message.Message.Chat.Type == ChatType.Group) { if (await OpenGroup(message)) { @@ -53,24 +49,24 @@ namespace TelegramBotBase.Form } - public virtual async Task OpenSupergroup(MessageResult e) + public virtual Task OpenSupergroup(MessageResult e) { - return false; + return Task.FromResult(false); } - public virtual async Task OpenChannel(MessageResult e) + public virtual Task OpenChannel(MessageResult e) { - return false; + return Task.FromResult(false); } - public virtual async Task Open(MessageResult e) + public virtual Task Open(MessageResult e) { - return false; + return Task.FromResult(false); } - public virtual async Task OpenGroup(MessageResult e) + public virtual Task OpenGroup(MessageResult e) { - return false; + return Task.FromResult(false); } diff --git a/TelegramBotBase/Form/TagButtonBase.cs b/TelegramBotBase/Form/TagButtonBase.cs index add8b80..fd6f545 100644 --- a/TelegramBotBase/Form/TagButtonBase.cs +++ b/TelegramBotBase/Form/TagButtonBase.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Telegram.Bot.Types.ReplyMarkups; +using Telegram.Bot.Types.ReplyMarkups; namespace TelegramBotBase.Form { @@ -12,18 +7,18 @@ namespace TelegramBotBase.Form /// public class TagButtonBase : ButtonBase { - public String Tag { get; set; } + public string Tag { get; set; } public TagButtonBase() { } - public TagButtonBase(String Text, String Value, String Tag) + public TagButtonBase(string text, string value, string tag) { - this.Text = Text; - this.Value = Value; - this.Tag = Tag; + this.Text = text; + this.Value = value; + this.Tag = tag; } @@ -34,9 +29,9 @@ namespace TelegramBotBase.Form /// public override InlineKeyboardButton ToInlineButton(ButtonForm form) { - String id = (form.DependencyControl != null ? form.DependencyControl.ControlID + "_" : ""); + var id = (form.DependencyControl != null ? form.DependencyControl.ControlId + "_" : ""); - return InlineKeyboardButton.WithCallbackData(this.Text, id + this.Value); + return InlineKeyboardButton.WithCallbackData(Text, id + Value); } @@ -48,7 +43,7 @@ namespace TelegramBotBase.Form /// public override KeyboardButton ToKeyboardButton(ButtonForm form) { - return new KeyboardButton(this.Text); + return new KeyboardButton(Text); } } diff --git a/TelegramBotBase/Interfaces/IDataSource.cs b/TelegramBotBase/Interfaces/IDataSource.cs index d3662e5..7934972 100644 --- a/TelegramBotBase/Interfaces/IDataSource.cs +++ b/TelegramBotBase/Interfaces/IDataSource.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using TelegramBotBase.Controls.Hybrid; +using System.Collections.Generic; namespace TelegramBotBase.Interfaces { diff --git a/TelegramBotBase/Interfaces/IDeviceSession.cs b/TelegramBotBase/Interfaces/IDeviceSession.cs index de487b6..05ae969 100644 --- a/TelegramBotBase/Interfaces/IDeviceSession.cs +++ b/TelegramBotBase/Interfaces/IDeviceSession.cs @@ -1,11 +1,9 @@ using System; -using System.Collections.Generic; -using System.Text; using TelegramBotBase.Form; namespace TelegramBotBase.Interfaces { - interface IDeviceSession + internal interface IDeviceSession { /// /// Device or chat id @@ -15,7 +13,7 @@ namespace TelegramBotBase.Interfaces /// /// Username of user or group /// - String ChatTitle { get; set; } + string ChatTitle { get; set; } /// diff --git a/TelegramBotBase/Interfaces/IMessageLoopFactory.cs b/TelegramBotBase/Interfaces/IMessageLoopFactory.cs index fec857f..937e37a 100644 --- a/TelegramBotBase/Interfaces/IMessageLoopFactory.cs +++ b/TelegramBotBase/Interfaces/IMessageLoopFactory.cs @@ -1,8 +1,5 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Threading.Tasks; -using Telegram.Bot.Types; using TelegramBotBase.Args; using TelegramBotBase.Base; using TelegramBotBase.Sessions; @@ -12,7 +9,7 @@ namespace TelegramBotBase.Interfaces public interface IMessageLoopFactory { - Task MessageLoop(BotBase Bot, DeviceSession session, UpdateResult ur, MessageResult e); + Task MessageLoop(BotBase bot, DeviceSession session, UpdateResult ur, MessageResult e); event EventHandler UnhandledCall; diff --git a/TelegramBotBase/Interfaces/IStartFormFactory.cs b/TelegramBotBase/Interfaces/IStartFormFactory.cs index 7c1c44d..e300928 100644 --- a/TelegramBotBase/Interfaces/IStartFormFactory.cs +++ b/TelegramBotBase/Interfaces/IStartFormFactory.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using TelegramBotBase.Form; +using TelegramBotBase.Form; namespace TelegramBotBase.Interfaces { diff --git a/TelegramBotBase/Interfaces/IStateForm.cs b/TelegramBotBase/Interfaces/IStateForm.cs index b7e3e69..f9346d7 100644 --- a/TelegramBotBase/Interfaces/IStateForm.cs +++ b/TelegramBotBase/Interfaces/IStateForm.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using TelegramBotBase.Args; -using TelegramBotBase.Base; +using TelegramBotBase.Args; namespace TelegramBotBase.Interfaces { diff --git a/TelegramBotBase/Interfaces/IStateMachine.cs b/TelegramBotBase/Interfaces/IStateMachine.cs index 7cd3e65..2c9c656 100644 --- a/TelegramBotBase/Interfaces/IStateMachine.cs +++ b/TelegramBotBase/Interfaces/IStateMachine.cs @@ -1,9 +1,6 @@ using System; -using System.Collections.Generic; -using System.Text; using TelegramBotBase.Args; using TelegramBotBase.Base; -using TelegramBotBase.Form; namespace TelegramBotBase.Interfaces { diff --git a/TelegramBotBase/Localizations/Default.cs b/TelegramBotBase/Localizations/Default.cs index 6b0a180..27fb412 100644 --- a/TelegramBotBase/Localizations/Default.cs +++ b/TelegramBotBase/Localizations/Default.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace TelegramBotBase.Localizations +namespace TelegramBotBase.Localizations { public static class Default { diff --git a/TelegramBotBase/Localizations/English.cs b/TelegramBotBase/Localizations/English.cs index d340291..2ba5fed 100644 --- a/TelegramBotBase/Localizations/English.cs +++ b/TelegramBotBase/Localizations/English.cs @@ -1,12 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace TelegramBotBase.Localizations +namespace TelegramBotBase.Localizations { public class English : Localization { - public English() : base() + public English() { Values["Language"] = "English"; Values["ButtonGrid_Title"] = "Menu"; diff --git a/TelegramBotBase/Localizations/German.cs b/TelegramBotBase/Localizations/German.cs index 5861e72..d34240a 100644 --- a/TelegramBotBase/Localizations/German.cs +++ b/TelegramBotBase/Localizations/German.cs @@ -1,12 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace TelegramBotBase.Localizations +namespace TelegramBotBase.Localizations { public class German : Localization { - public German() : base() + public German() { Values["Language"] = "Deutsch (German)"; Values["ButtonGrid_Title"] = "Menü"; diff --git a/TelegramBotBase/Localizations/Localization.cs b/TelegramBotBase/Localizations/Localization.cs index ed56cb0..b34fb88 100644 --- a/TelegramBotBase/Localizations/Localization.cs +++ b/TelegramBotBase/Localizations/Localization.cs @@ -1,27 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Collections.Generic; namespace TelegramBotBase.Localizations { public abstract class Localization { - public Dictionary Values = new Dictionary(); - - public String this[String key] - { - get - { - return Values[key]; - } - } - - public Localization() - { - - - } + public Dictionary Values = new Dictionary(); + public string this[string key] => Values[key]; } } diff --git a/TelegramBotBase/Markdown/Generator.cs b/TelegramBotBase/Markdown/Generator.cs index 05dbfa7..748f62d 100644 --- a/TelegramBotBase/Markdown/Generator.cs +++ b/TelegramBotBase/Markdown/Generator.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; +using System.Linq; using Telegram.Bot.Types.Enums; namespace TelegramBotBase.Markdown @@ -22,16 +17,14 @@ namespace TelegramBotBase.Markdown /// /// /// - public static String Link(this String url, String title = null, String tooltip = null) + public static string Link(this string url, string title = null, string tooltip = null) { - switch (OutputMode) + return OutputMode switch { - case ParseMode.Markdown: - return "[" + (title ?? url) + "](" + url + " " + (tooltip ?? "") + ")"; - case ParseMode.Html: - return $"{title ?? ""}"; - } - return url; + ParseMode.Markdown => "[" + (title ?? url) + "](" + url + " " + (tooltip ?? "") + ")", + ParseMode.Html => $"{title ?? ""}", + _ => url + }; } /// @@ -40,9 +33,9 @@ namespace TelegramBotBase.Markdown /// /// /// - public static String MentionUser(this int userId, String title = null) + public static string MentionUser(this int userId, string title = null) { - return Link("tg://user?id=" + userId.ToString(), title); + return Link("tg://user?id=" + userId, title); } /// @@ -51,7 +44,7 @@ namespace TelegramBotBase.Markdown /// /// /// - public static String MentionUser(this String username, String title = null) + public static string MentionUser(this string username, string title = null) { return Link("tg://user?id=" + username, title); } @@ -61,16 +54,14 @@ namespace TelegramBotBase.Markdown /// /// /// - public static String Bold(this String text) + public static string Bold(this string text) { - switch (OutputMode) + return OutputMode switch { - case ParseMode.Markdown: - return "*" + text + "*"; - case ParseMode.Html: - return "" + text + ""; - } - return text; + ParseMode.Markdown => "*" + text + "*", + ParseMode.Html => "" + text + "", + _ => text + }; } /// @@ -78,16 +69,14 @@ namespace TelegramBotBase.Markdown /// /// /// - public static String Strikesthrough(this String text) + public static string Strikesthrough(this string text) { - switch (OutputMode) + return OutputMode switch { - case ParseMode.Markdown: - return "~" + text + "~"; - case ParseMode.Html: - return "" + text + ""; - } - return text; + ParseMode.Markdown => "~" + text + "~", + ParseMode.Html => "" + text + "", + _ => text + }; } /// @@ -95,16 +84,14 @@ namespace TelegramBotBase.Markdown /// /// /// - public static String Italic(this String text) + public static string Italic(this string text) { - switch (OutputMode) + return OutputMode switch { - case ParseMode.Markdown: - return "_" + text + "_"; - case ParseMode.Html: - return "" + text + ""; - } - return text; + ParseMode.Markdown => "_" + text + "_", + ParseMode.Html => "" + text + "", + _ => text + }; } /// @@ -112,16 +99,14 @@ namespace TelegramBotBase.Markdown /// /// /// - public static String Underline(this String text) + public static string Underline(this string text) { - switch (OutputMode) + return OutputMode switch { - case ParseMode.Markdown: - return "__" + text + "__"; - case ParseMode.Html: - return "" + text + ""; - } - return text; + ParseMode.Markdown => "__" + text + "__", + ParseMode.Html => "" + text + "", + _ => text + }; } /// @@ -129,16 +114,14 @@ namespace TelegramBotBase.Markdown /// /// /// - public static String Monospace(this String text) + public static string Monospace(this string text) { - switch (OutputMode) + return OutputMode switch { - case ParseMode.Markdown: - return "`" + text + "`"; - case ParseMode.Html: - return "" + text + ""; - } - return text; + ParseMode.Markdown => "`" + text + "`", + ParseMode.Html => "" + text + "", + _ => text + }; } /// @@ -146,16 +129,14 @@ namespace TelegramBotBase.Markdown /// /// /// - public static String MultiMonospace(this String text) + public static string MultiMonospace(this string text) { - switch (OutputMode) + return OutputMode switch { - case ParseMode.Markdown: - return "```" + text + "```"; - case ParseMode.Html: - return "
" + text + "
"; - } - return text; + ParseMode.Markdown => "```" + text + "```", + ParseMode.Html => "
" + text + "
", + _ => text + }; } /// @@ -163,14 +144,14 @@ namespace TelegramBotBase.Markdown /// /// /// - public static String MarkdownV2Escape(this String text, params char[] toKeep) + public static string MarkdownV2Escape(this string text, params char[] toKeep) { - char[] toEscape = new char[] { '_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!' }; + var toEscape = new[] { '_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!' }; return text.EscapeAll(toEscape.Where(a => !toKeep.Contains(a)).Select(a => a.ToString()).ToArray()); } - public static string EscapeAll(this string seed, String[] chars, char escapeCharacter = '\\') + public static string EscapeAll(this string seed, string[] chars, char escapeCharacter = '\\') { return chars.Aggregate(seed, (str, cItem) => str.Replace(cItem, escapeCharacter + cItem)); } diff --git a/TelegramBotBase/MessageLoops/FormBaseMessageLoop.cs b/TelegramBotBase/MessageLoops/FormBaseMessageLoop.cs index 3a6b00c..bfd6d81 100644 --- a/TelegramBotBase/MessageLoops/FormBaseMessageLoop.cs +++ b/TelegramBotBase/MessageLoops/FormBaseMessageLoop.cs @@ -1,13 +1,9 @@ using System; -using System.Collections.Generic; using System.ComponentModel; -using System.Linq; -using System.Text; using System.Threading.Tasks; -using Telegram.Bot.Types; +using Telegram.Bot.Types.Enums; using TelegramBotBase.Args; using TelegramBotBase.Base; -using TelegramBotBase.Enums; using TelegramBotBase.Interfaces; using TelegramBotBase.Sessions; @@ -18,32 +14,27 @@ namespace TelegramBotBase.MessageLoops ///
public class FormBaseMessageLoop : IMessageLoopFactory { - private static object __evUnhandledCall = new object(); + private static readonly object EvUnhandledCall = new object(); - private EventHandlerList __Events = new EventHandlerList(); + private readonly EventHandlerList _events = new EventHandlerList(); - public FormBaseMessageLoop() - { - - } - - public async Task MessageLoop(BotBase Bot, DeviceSession session, UpdateResult ur, MessageResult mr) + public async Task MessageLoop(BotBase bot, DeviceSession session, UpdateResult ur, MessageResult mr) { var update = ur.RawData; - if (update.Type != Telegram.Bot.Types.Enums.UpdateType.Message - && update.Type != Telegram.Bot.Types.Enums.UpdateType.EditedMessage - && update.Type != Telegram.Bot.Types.Enums.UpdateType.CallbackQuery) + if (update.Type != UpdateType.Message + && update.Type != UpdateType.EditedMessage + && update.Type != UpdateType.CallbackQuery) { return; } //Is this a bot command ? - if (mr.IsFirstHandler && mr.IsBotCommand && Bot.IsKnownBotCommand(mr.BotCommand)) + if (mr.IsFirstHandler && mr.IsBotCommand && bot.IsKnownBotCommand(mr.BotCommand)) { var sce = new BotCommandEventArgs(mr.BotCommand, mr.BotCommandParameters, mr.Message, session.DeviceId, session); - await Bot.OnBotCommand(sce); + await bot.OnBotCommand(sce); if (sce.Handled) return; @@ -64,14 +55,14 @@ namespace TelegramBotBase.MessageLoops //Is Attachment ? (Photo, Audio, Video, Contact, Location, Document) (Ignore Callback Queries) - if (update.Type == Telegram.Bot.Types.Enums.UpdateType.Message) + if (update.Type == UpdateType.Message) { - if (mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Contact - | mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Document - | mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Location - | mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Photo - | mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Video - | mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Audio) + if (mr.MessageType == MessageType.Contact + | mr.MessageType == MessageType.Document + | mr.MessageType == MessageType.Location + | mr.MessageType == MessageType.Photo + | mr.MessageType == MessageType.Video + | mr.MessageType == MessageType.Audio) { await activeForm.SentData(new DataResult(ur)); } @@ -118,19 +109,13 @@ namespace TelegramBotBase.MessageLoops ///
public event EventHandler UnhandledCall { - add - { - this.__Events.AddHandler(__evUnhandledCall, value); - } - remove - { - this.__Events.RemoveHandler(__evUnhandledCall, value); - } + add => _events.AddHandler(EvUnhandledCall, value); + remove => _events.RemoveHandler(EvUnhandledCall, value); } public void OnUnhandledCall(UnhandledCallEventArgs e) { - (this.__Events[__evUnhandledCall] as EventHandler)?.Invoke(this, e); + (_events[EvUnhandledCall] as EventHandler)?.Invoke(this, e); } } diff --git a/TelegramBotBase/MessageLoops/FullMessageLoop.cs b/TelegramBotBase/MessageLoops/FullMessageLoop.cs index 63e8160..1277094 100644 --- a/TelegramBotBase/MessageLoops/FullMessageLoop.cs +++ b/TelegramBotBase/MessageLoops/FullMessageLoop.cs @@ -1,13 +1,9 @@ using System; -using System.Collections.Generic; using System.ComponentModel; -using System.Linq; -using System.Text; using System.Threading.Tasks; -using Telegram.Bot.Types; +using Telegram.Bot.Types.Enums; using TelegramBotBase.Args; using TelegramBotBase.Base; -using TelegramBotBase.Enums; using TelegramBotBase.Interfaces; using TelegramBotBase.Sessions; @@ -18,25 +14,20 @@ namespace TelegramBotBase.MessageLoops ///
public class FullMessageLoop : IMessageLoopFactory { - private static object __evUnhandledCall = new object(); + private static readonly object EvUnhandledCall = new object(); - private EventHandlerList __Events = new EventHandlerList(); + private readonly EventHandlerList _events = new EventHandlerList(); - public FullMessageLoop() - { - - } - - public async Task MessageLoop(BotBase Bot, DeviceSession session, UpdateResult ur, MessageResult mr) + public async Task MessageLoop(BotBase bot, DeviceSession session, UpdateResult ur, MessageResult mr) { var update = ur.RawData; //Is this a bot command ? - if (mr.IsFirstHandler && mr.IsBotCommand && Bot.IsKnownBotCommand(mr.BotCommand)) + if (mr.IsFirstHandler && mr.IsBotCommand && bot.IsKnownBotCommand(mr.BotCommand)) { var sce = new BotCommandEventArgs(mr.BotCommand, mr.BotCommandParameters, mr.Message, session.DeviceId, session); - await Bot.OnBotCommand(sce); + await bot.OnBotCommand(sce); if (sce.Handled) return; @@ -57,14 +48,14 @@ namespace TelegramBotBase.MessageLoops //Is Attachment ? (Photo, Audio, Video, Contact, Location, Document) (Ignore Callback Queries) - if (update.Type == Telegram.Bot.Types.Enums.UpdateType.Message) + if (update.Type == UpdateType.Message) { - if (mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Contact - | mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Document - | mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Location - | mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Photo - | mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Video - | mr.MessageType == Telegram.Bot.Types.Enums.MessageType.Audio) + if (mr.MessageType == MessageType.Contact + | mr.MessageType == MessageType.Document + | mr.MessageType == MessageType.Location + | mr.MessageType == MessageType.Photo + | mr.MessageType == MessageType.Video + | mr.MessageType == MessageType.Audio) { await activeForm.SentData(new DataResult(ur)); } @@ -111,19 +102,13 @@ namespace TelegramBotBase.MessageLoops ///
public event EventHandler UnhandledCall { - add - { - this.__Events.AddHandler(__evUnhandledCall, value); - } - remove - { - this.__Events.RemoveHandler(__evUnhandledCall, value); - } + add => _events.AddHandler(EvUnhandledCall, value); + remove => _events.RemoveHandler(EvUnhandledCall, value); } public void OnUnhandledCall(UnhandledCallEventArgs e) { - (this.__Events[__evUnhandledCall] as EventHandler)?.Invoke(this, e); + (_events[EvUnhandledCall] as EventHandler)?.Invoke(this, e); } } diff --git a/TelegramBotBase/MessageLoops/MinimalMessageLoop.cs b/TelegramBotBase/MessageLoops/MinimalMessageLoop.cs index 0be394b..2483668 100644 --- a/TelegramBotBase/MessageLoops/MinimalMessageLoop.cs +++ b/TelegramBotBase/MessageLoops/MinimalMessageLoop.cs @@ -1,13 +1,8 @@ using System; -using System.Collections.Generic; using System.ComponentModel; -using System.Linq; -using System.Text; using System.Threading.Tasks; -using Telegram.Bot.Types; using TelegramBotBase.Args; using TelegramBotBase.Base; -using TelegramBotBase.Enums; using TelegramBotBase.Interfaces; using TelegramBotBase.Sessions; @@ -18,16 +13,11 @@ namespace TelegramBotBase.MessageLoops ///
public class MinimalMessageLoop : IMessageLoopFactory { - private static object __evUnhandledCall = new object(); + private static readonly object EvUnhandledCall = new object(); - private EventHandlerList __Events = new EventHandlerList(); + private readonly EventHandlerList _events = new EventHandlerList(); - public MinimalMessageLoop() - { - - } - - public async Task MessageLoop(BotBase Bot, DeviceSession session, UpdateResult ur, MessageResult mr) + public async Task MessageLoop(BotBase bot, DeviceSession session, UpdateResult ur, MessageResult mr) { var update = ur.RawData; @@ -46,19 +36,13 @@ namespace TelegramBotBase.MessageLoops ///
public event EventHandler UnhandledCall { - add - { - this.__Events.AddHandler(__evUnhandledCall, value); - } - remove - { - this.__Events.RemoveHandler(__evUnhandledCall, value); - } + add => _events.AddHandler(EvUnhandledCall, value); + remove => _events.RemoveHandler(EvUnhandledCall, value); } public void OnUnhandledCall(UnhandledCallEventArgs e) { - (this.__Events[__evUnhandledCall] as EventHandler)?.Invoke(this, e); + (_events[EvUnhandledCall] as EventHandler)?.Invoke(this, e); } } diff --git a/TelegramBotBase/Properties/AssemblyInfo.cs b/TelegramBotBase/Properties/AssemblyInfo.cs index 23bb4de..14bc370 100644 --- a/TelegramBotBase/Properties/AssemblyInfo.cs +++ b/TelegramBotBase/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // Allgemeine Informationen über eine Assembly werden über die folgenden diff --git a/TelegramBotBase/SessionBase.cs b/TelegramBotBase/SessionBase.cs index b94f59a..66ac76d 100644 --- a/TelegramBotBase/SessionBase.cs +++ b/TelegramBotBase/SessionBase.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; -using System.Runtime.Serialization; -using System.Text; +using System.Reflection; using System.Threading.Tasks; using TelegramBotBase.Args; using TelegramBotBase.Attributes; @@ -11,6 +9,8 @@ using TelegramBotBase.Base; using TelegramBotBase.Form; using TelegramBotBase.Interfaces; using TelegramBotBase.Sessions; +using TelegramBotBase.Tools; + namespace TelegramBotBase { /// @@ -37,7 +37,7 @@ namespace TelegramBotBase public SessionBase() { - this.SessionList = new Dictionary(); + SessionList = new Dictionary(); } /// @@ -47,14 +47,8 @@ namespace TelegramBotBase /// public DeviceSession this[long key] { - get - { - return this.SessionList[key]; - } - set - { - this.SessionList[key] = value; - } + get => SessionList[key]; + set => SessionList[key] = value; } /// @@ -64,7 +58,7 @@ namespace TelegramBotBase /// public DeviceSession GetSession(long deviceId) { - DeviceSession ds = this.SessionList.FirstOrDefault(a => a.Key == deviceId).Value ?? null; + var ds = SessionList.FirstOrDefault(a => a.Key == deviceId).Value ?? null; return ds; } @@ -77,16 +71,15 @@ namespace TelegramBotBase public async Task StartSession(long deviceId) { var start = BotBase.StartFormFactory.CreateForm(); - //T start = typeof(T).GetConstructor(new Type[] { }).Invoke(new object[] { }) as T; - start.Client = this.Client; + start.Client = Client; - DeviceSession ds = new Sessions.DeviceSession(deviceId, start); + var ds = new DeviceSession(deviceId, start); start.Device = ds; await start.OnInit(new InitEventArgs()); - await start.OnOpened(new EventArgs()); + await start.OnOpened(EventArgs.Empty); this[deviceId] = ds; return ds; @@ -101,7 +94,7 @@ namespace TelegramBotBase var d = this[deviceId]; if (d != null) { - this.SessionList.Remove(deviceId); + SessionList.Remove(deviceId); } } @@ -112,7 +105,7 @@ namespace TelegramBotBase /// public List GetUserSessions() { - return this.SessionList.Where(a => a.Key > 0).Select(a => a.Value).ToList(); + return SessionList.Where(a => a.Key > 0).Select(a => a.Value).ToList(); } /// @@ -121,7 +114,7 @@ namespace TelegramBotBase /// public List GetGroupSessions() { - return this.SessionList.Where(a => a.Key < 0).Select(a => a.Value).ToList(); + return SessionList.Where(a => a.Key < 0).Select(a => a.Value).ToList(); } /// @@ -152,20 +145,18 @@ namespace TelegramBotBase foreach (var s in container.States) { - Type t = Type.GetType(s.QualifiedName); + var t = Type.GetType(s.QualifiedName); if (t == null || !t.IsSubclassOf(typeof(FormBase))) { continue; } //Key already existing - if (this.SessionList.ContainsKey(s.DeviceId)) + if (SessionList.ContainsKey(s.DeviceId)) continue; - var form = t.GetConstructor(new Type[] { })?.Invoke(new object[] { }) as FormBase; - //No default constructor, fallback - if (form == null) + if (!(t.GetConstructor(new Type[] { })?.Invoke(new object[] { }) is FormBase form)) { if (!statemachine.FallbackStateForm.IsSubclassOf(typeof(FormBase))) continue; @@ -182,7 +173,7 @@ namespace TelegramBotBase if (s.Values != null && s.Values.Count > 0) { var properties = s.Values.Where(a => a.Key.StartsWith("$")); - var fields = form.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Where(a => a.GetCustomAttributes(typeof(SaveState), true).Length != 0).ToList(); + var fields = form.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Where(a => a.GetCustomAttributes(typeof(SaveState), true).Length != 0).ToList(); foreach (var p in properties) { @@ -204,10 +195,10 @@ namespace TelegramBotBase f.SetValue(form, p.Value); } - catch (ArgumentException ex) + catch (ArgumentException) { - Tools.Conversion.CustomConversionChecks(form, p, f); + Conversion.CustomConversionChecks(form, p, f); } catch @@ -218,18 +209,20 @@ namespace TelegramBotBase } form.Client = Client; - var device = new DeviceSession(s.DeviceId, form); + var device = new DeviceSession(s.DeviceId, form) + { + ChatTitle = s.ChatTitle + }; - device.ChatTitle = s.ChatTitle; - - this.SessionList.Add(s.DeviceId, device); + SessionList.Add(s.DeviceId, device); //Is Subclass of IStateForm - var iform = form as IStateForm; - if (iform != null) + if (form is IStateForm iform) { - var ls = new LoadStateEventArgs(); - ls.Values = s.Values; + var ls = new LoadStateEventArgs + { + Values = s.Values + }; iform.LoadState(ls); } @@ -237,12 +230,12 @@ namespace TelegramBotBase { await form.OnInit(new InitEventArgs()); - await form.OnOpened(new EventArgs()); + await form.OnOpened(EventArgs.Empty); } catch { //Skip on exception - this.SessionList.Remove(s.DeviceId); + SessionList.Remove(s.DeviceId); } } @@ -263,7 +256,7 @@ namespace TelegramBotBase var states = new List(); - foreach (var s in this.SessionList) + foreach (var s in SessionList) { if (s.Value == null) { @@ -274,11 +267,13 @@ namespace TelegramBotBase try { - var se = new StateEntry(); - se.DeviceId = s.Key; - se.ChatTitle = s.Value.GetChatTitle(); - se.FormUri = form.GetType().FullName; - se.QualifiedName = form.GetType().AssemblyQualifiedName; + var se = new StateEntry + { + DeviceId = s.Key, + ChatTitle = s.Value.GetChatTitle(), + FormUri = form.GetType().FullName, + QualifiedName = form.GetType().AssemblyQualifiedName + }; //Skip classes where IgnoreState attribute is existing if (form.GetType().GetCustomAttributes(typeof(IgnoreState), true).Length != 0) @@ -295,18 +290,17 @@ namespace TelegramBotBase } //Is Subclass of IStateForm - var iform = form as IStateForm; - if (iform != null) + if (form is IStateForm iform) { //Loading Session states - SaveStateEventArgs ssea = new SaveStateEventArgs(); + var ssea = new SaveStateEventArgs(); iform.SaveState(ssea); se.Values = ssea.Values; } //Search for public properties with SaveState attribute - var fields = form.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Where(a => a.GetCustomAttributes(typeof(SaveState), true).Length != 0).ToList(); + var fields = form.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Where(a => a.GetCustomAttributes(typeof(SaveState), true).Length != 0).ToList(); foreach (var f in fields) { @@ -320,12 +314,13 @@ namespace TelegramBotBase catch { //Continue on error (skip this form) - continue; } } - var sc = new StateContainer(); - sc.States = states; + var sc = new StateContainer + { + States = states + }; statemachine.SaveFormStates(new SaveStatesEventArgs(sc)); } @@ -335,11 +330,11 @@ namespace TelegramBotBase /// public void SaveSessionStates() { - if (this.BotBase.StateMachine == null) + if (BotBase.StateMachine == null) return; - this.SaveSessionStates(this.BotBase.StateMachine); + SaveSessionStates(BotBase.StateMachine); } } } diff --git a/TelegramBotBase/Sessions/DeviceSession.cs b/TelegramBotBase/Sessions/DeviceSession.cs index 17d52e8..5c017c0 100644 --- a/TelegramBotBase/Sessions/DeviceSession.cs +++ b/TelegramBotBase/Sessions/DeviceSession.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; @@ -34,13 +33,13 @@ namespace TelegramBotBase.Sessions /// /// Username of user or group /// - public String ChatTitle { get; set; } + public string ChatTitle { get; set; } /// /// Returns the ChatTitle depending on groups/channels or users /// /// - public String GetChatTitle() + public string GetChatTitle() { return LastMessage?.Chat.Title ?? LastMessage?.Chat.Username @@ -71,70 +70,46 @@ namespace TelegramBotBase.Sessions /// /// Returns the ID of the last received message. /// - public int LastMessageId - { - get - { - return this.LastMessage?.MessageId ?? -1; - } - } + public int LastMessageId => LastMessage?.MessageId ?? -1; /// /// Returns the last received message. /// public Message LastMessage { get; set; } - public MessageClient Client - { - get - { - return this.ActiveForm.Client; - } - } + public MessageClient Client => ActiveForm.Client; /// /// Returns if the messages is posted within a group. /// - public bool IsGroup - { - get - { - return this.LastMessage != null && (this.LastMessage.Chat.Type == ChatType.Group | this.LastMessage.Chat.Type == ChatType.Supergroup); - } - } + public bool IsGroup => LastMessage != null && (LastMessage.Chat.Type == ChatType.Group | LastMessage.Chat.Type == ChatType.Supergroup); /// /// Returns if the messages is posted within a channel. /// - public bool IsChannel - { - get - { - return this.LastMessage != null && this.LastMessage.Chat.Type == ChatType.Channel; - } - } + public bool IsChannel => LastMessage != null && LastMessage.Chat.Type == ChatType.Channel; - private EventHandlerList __Events = new EventHandlerList(); + private readonly EventHandlerList _events = new EventHandlerList(); - private static object __evMessageSent = new object(); - private static object __evMessageReceived = new object(); - private static object __evMessageDeleted = new object(); + private static readonly object EvMessageSent = new object(); + private static readonly object EvMessageReceived = new object(); + private static readonly object EvMessageDeleted = new object(); public DeviceSession() { } - public DeviceSession(long DeviceId) + public DeviceSession(long deviceId) { - this.DeviceId = DeviceId; + this.DeviceId = deviceId; } - public DeviceSession(long DeviceId, FormBase StartForm) + public DeviceSession(long deviceId, FormBase startForm) { - this.DeviceId = DeviceId; - this.ActiveForm = StartForm; - this.ActiveForm.Device = this; + this.DeviceId = deviceId; + ActiveForm = startForm; + ActiveForm.Device = this; } @@ -143,11 +118,11 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task ConfirmAction(String CallbackQueryId, String message = "", bool showAlert = false, String urlToOpen = null) + public async Task ConfirmAction(string callbackQueryId, string message = "", bool showAlert = false, string urlToOpen = null) { try { - await this.Client.TelegramClient.AnswerCallbackQueryAsync(CallbackQueryId, message, showAlert, urlToOpen); + await Client.TelegramClient.AnswerCallbackQueryAsync(callbackQueryId, message, showAlert, urlToOpen); } catch { @@ -162,7 +137,7 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task Edit(int messageId, String text, ButtonForm buttons = null, ParseMode parseMode = ParseMode.Markdown) + public async Task Edit(int messageId, string text, ButtonForm buttons = null, ParseMode parseMode = ParseMode.Markdown) { InlineKeyboardMarkup markup = buttons; @@ -173,7 +148,7 @@ namespace TelegramBotBase.Sessions try { - return await API(a => a.EditMessageTextAsync(this.DeviceId, messageId, text, parseMode, replyMarkup: markup)); + return await Api(a => a.EditMessageTextAsync(DeviceId, messageId, text, parseMode, replyMarkup: markup)); } catch { @@ -191,7 +166,7 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task Edit(int messageId, String text, InlineKeyboardMarkup markup, ParseMode parseMode = ParseMode.Markdown) + public async Task Edit(int messageId, string text, InlineKeyboardMarkup markup, ParseMode parseMode = ParseMode.Markdown) { if (text.Length > Constants.Telegram.MaxMessageLength) { @@ -200,7 +175,7 @@ namespace TelegramBotBase.Sessions try { - return await API(a => a.EditMessageTextAsync(this.DeviceId, messageId, text, parseMode, replyMarkup: markup)); + return await Api(a => a.EditMessageTextAsync(DeviceId, messageId, text, parseMode, replyMarkup: markup)); } catch { @@ -229,7 +204,7 @@ namespace TelegramBotBase.Sessions try { - return await API(a => a.EditMessageTextAsync(this.DeviceId, message.MessageId, message.Text, parseMode, replyMarkup: markup)); + return await Api(a => a.EditMessageTextAsync(DeviceId, message.MessageId, message.Text, parseMode, replyMarkup: markup)); } catch { @@ -251,7 +226,7 @@ namespace TelegramBotBase.Sessions try { - return await API(a => a.EditMessageReplyMarkupAsync(this.DeviceId, messageId, bf)); + return await Api(a => a.EditMessageReplyMarkupAsync(DeviceId, messageId, bf)); } catch { @@ -269,9 +244,9 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task Send(long deviceId, String text, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown, bool MarkdownV2AutoEscape = true) + public async Task Send(long deviceId, string text, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown, bool markdownV2AutoEscape = true) { - if (this.ActiveForm == null) + if (ActiveForm == null) return null; InlineKeyboardMarkup markup = buttons; @@ -281,17 +256,17 @@ namespace TelegramBotBase.Sessions throw new MaxLengthException(text.Length); } - if (parseMode == ParseMode.MarkdownV2 && MarkdownV2AutoEscape) + if (parseMode == ParseMode.MarkdownV2 && markdownV2AutoEscape) { text = text.MarkdownV2Escape(); } try { - var t = API(a => a.SendTextMessageAsync(deviceId, text, parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); + var t = Api(a => a.SendTextMessageAsync(deviceId, text, parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); - + await OnMessageSent(new MessageSentEventArgs(await t, o)); return await t; @@ -310,9 +285,9 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task Send(String text, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown, bool MarkdownV2AutoEscape = true) + public async Task Send(string text, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown, bool markdownV2AutoEscape = true) { - return await Send(this.DeviceId, text, buttons, replyTo, disableNotification, parseMode, MarkdownV2AutoEscape); + return await Send(DeviceId, text, buttons, replyTo, disableNotification, parseMode, markdownV2AutoEscape); } /// @@ -323,9 +298,9 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task Send(String text, InlineKeyboardMarkup markup, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown, bool MarkdownV2AutoEscape = true) + public async Task Send(string text, InlineKeyboardMarkup markup, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown, bool markdownV2AutoEscape = true) { - if (this.ActiveForm == null) + if (ActiveForm == null) return null; if (text.Length > Constants.Telegram.MaxMessageLength) @@ -333,14 +308,14 @@ namespace TelegramBotBase.Sessions throw new MaxLengthException(text.Length); } - if (parseMode == ParseMode.MarkdownV2 && MarkdownV2AutoEscape) + if (parseMode == ParseMode.MarkdownV2 && markdownV2AutoEscape) { text = text.MarkdownV2Escape(); } try { - var t = API(a => a.SendTextMessageAsync(this.DeviceId, text, parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); + var t = Api(a => a.SendTextMessageAsync(DeviceId, text, parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); await OnMessageSent(new MessageSentEventArgs(await t, o)); @@ -361,9 +336,9 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task Send(String text, ReplyMarkupBase markup, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown, bool MarkdownV2AutoEscape = true) + public async Task Send(string text, ReplyMarkupBase markup, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown, bool markdownV2AutoEscape = true) { - if (this.ActiveForm == null) + if (ActiveForm == null) return null; if (text.Length > Constants.Telegram.MaxMessageLength) @@ -371,14 +346,14 @@ namespace TelegramBotBase.Sessions throw new MaxLengthException(text.Length); } - if (parseMode == ParseMode.MarkdownV2 && MarkdownV2AutoEscape) + if (parseMode == ParseMode.MarkdownV2 && markdownV2AutoEscape) { text = text.MarkdownV2Escape(); } try { - var t = API(a => a.SendTextMessageAsync(this.DeviceId, text, parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); + var t = Api(a => a.SendTextMessageAsync(DeviceId, text, parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); await OnMessageSent(new MessageSentEventArgs(await t, o)); @@ -399,16 +374,16 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task SendPhoto(InputOnlineFile file, String caption = null, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown) + public async Task SendPhoto(InputOnlineFile file, string caption = null, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown) { - if (this.ActiveForm == null) + if (ActiveForm == null) return null; InlineKeyboardMarkup markup = buttons; try { - var t = API(a => a.SendPhotoAsync(this.DeviceId, file, caption: caption, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); + var t = Api(a => a.SendPhotoAsync(DeviceId, file, caption: caption, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); await OnMessageSent(new MessageSentEventArgs(await t, o)); @@ -429,16 +404,16 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task SendVideo(InputOnlineFile file, String caption = null, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown) + public async Task SendVideo(InputOnlineFile file, string caption = null, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown) { - if (this.ActiveForm == null) + if (ActiveForm == null) return null; InlineKeyboardMarkup markup = buttons; try { - var t = API(a => a.SendVideoAsync(this.DeviceId, file, caption: caption, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); + var t = Api(a => a.SendVideoAsync(DeviceId, file, caption: caption, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); await OnMessageSent(new MessageSentEventArgs(await t, o)); @@ -459,16 +434,16 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task SendVideo(String url, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown) + public async Task SendVideo(string url, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown) { - if (this.ActiveForm == null) + if (ActiveForm == null) return null; InlineKeyboardMarkup markup = buttons; try { - var t = API(a => a.SendVideoAsync(this.DeviceId, new InputOnlineFile(url), parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); + var t = Api(a => a.SendVideoAsync(DeviceId, new InputOnlineFile(url), parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); await OnMessageSent(new MessageSentEventArgs(await t, o)); @@ -490,20 +465,20 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task SendVideo(String filename, byte[] video, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown) + public async Task SendVideo(string filename, byte[] video, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown) { - if (this.ActiveForm == null) + if (ActiveForm == null) return null; InlineKeyboardMarkup markup = buttons; try { - MemoryStream ms = new MemoryStream(video); + var ms = new MemoryStream(video); - InputOnlineFile fts = new InputOnlineFile(ms, filename); + var fts = new InputOnlineFile(ms, filename); - var t = API(a => a.SendVideoAsync(this.DeviceId, fts, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); + var t = Api(a => a.SendVideoAsync(DeviceId, fts, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); await OnMessageSent(new MessageSentEventArgs(await t, o)); @@ -525,22 +500,22 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task SendLocalVideo(String filepath, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown) + public async Task SendLocalVideo(string filepath, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Markdown) { - if (this.ActiveForm == null) + if (ActiveForm == null) return null; InlineKeyboardMarkup markup = buttons; try { - FileStream fs = new FileStream(filepath, FileMode.Open); + var fs = new FileStream(filepath, FileMode.Open); var filename = Path.GetFileName(filepath); - InputOnlineFile fts = new InputOnlineFile(fs, filename); + var fts = new InputOnlineFile(fs, filename); - var t = API(a => a.SendVideoAsync(this.DeviceId, fts, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); + var t = Api(a => a.SendVideoAsync(DeviceId, fts, parseMode: parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification)); var o = GetOrigin(new StackTrace()); await OnMessageSent(new MessageSentEventArgs(await t, o)); @@ -563,11 +538,11 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task SendDocument(String filename, byte[] document, String caption = "", ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false) + public async Task SendDocument(string filename, byte[] document, string caption = "", ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false) { - MemoryStream ms = new MemoryStream(document); + var ms = new MemoryStream(document); - InputOnlineFile fts = new InputOnlineFile(ms, filename); + var fts = new InputOnlineFile(ms, filename); return await SendDocument(fts, caption, buttons, replyTo, disableNotification); } @@ -583,7 +558,7 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task SendTextFile(String filename, String textcontent, Encoding encoding = null, String caption = "", ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false) + public async Task SendTextFile(string filename, string textcontent, Encoding encoding = null, string caption = "", ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false) { encoding = encoding ?? Encoding.UTF8; @@ -607,7 +582,7 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task SendDocument(InputOnlineFile document, String caption = "", ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false) + public async Task SendDocument(InputOnlineFile document, string caption = "", ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false) { InlineKeyboardMarkup markup = null; if (buttons != null) @@ -617,7 +592,7 @@ namespace TelegramBotBase.Sessions try { - var t = API(a => a.SendDocumentAsync(this.DeviceId, document, caption, replyMarkup: markup, disableNotification: disableNotification, replyToMessageId: replyTo)); + var t = Api(a => a.SendDocumentAsync(DeviceId, document, caption, replyMarkup: markup, disableNotification: disableNotification, replyToMessageId: replyTo)); var o = GetOrigin(new StackTrace()); await OnMessageSent(new MessageSentEventArgs(await t, o)); @@ -637,7 +612,7 @@ namespace TelegramBotBase.Sessions /// public async Task SetAction(ChatAction action) { - await API(a => a.SendChatActionAsync(this.DeviceId, action)); + await Api(a => a.SendChatActionAsync(DeviceId, action)); } /// @@ -645,13 +620,15 @@ namespace TelegramBotBase.Sessions /// /// /// - /// + /// /// - public async Task RequestContact(String buttonText = "Send your contact", String requestMessage = "Give me your phone number!", bool OneTimeOnly = true) + public async Task RequestContact(string buttonText = "Send your contact", string requestMessage = "Give me your phone number!", bool oneTimeOnly = true) { - var rck = new ReplyKeyboardMarkup(KeyboardButton.WithRequestContact(buttonText)); - rck.OneTimeKeyboard = OneTimeOnly; - return await API(a => a.SendTextMessageAsync(this.DeviceId, requestMessage, replyMarkup: rck)); + var rck = new ReplyKeyboardMarkup(KeyboardButton.WithRequestContact(buttonText)) + { + OneTimeKeyboard = oneTimeOnly + }; + return await Api(a => a.SendTextMessageAsync(DeviceId, requestMessage, replyMarkup: rck)); } /// @@ -659,24 +636,26 @@ namespace TelegramBotBase.Sessions /// /// /// - /// + /// /// - public async Task RequestLocation(String buttonText = "Send your location", String requestMessage = "Give me your location!", bool OneTimeOnly = true) + public async Task RequestLocation(string buttonText = "Send your location", string requestMessage = "Give me your location!", bool oneTimeOnly = true) { - var rcl = new ReplyKeyboardMarkup(KeyboardButton.WithRequestLocation(buttonText)); - rcl.OneTimeKeyboard = OneTimeOnly; - return await API(a => a.SendTextMessageAsync(this.DeviceId, requestMessage, replyMarkup: rcl)); + var rcl = new ReplyKeyboardMarkup(KeyboardButton.WithRequestLocation(buttonText)) + { + OneTimeKeyboard = oneTimeOnly + }; + return await Api(a => a.SendTextMessageAsync(DeviceId, requestMessage, replyMarkup: rcl)); } - public async Task HideReplyKeyboard(String closedMsg = "Closed", bool autoDeleteResponse = true) + public async Task HideReplyKeyboard(string closedMsg = "Closed", bool autoDeleteResponse = true) { try { - var m = await this.Send(closedMsg, new ReplyKeyboardRemove()); + var m = await Send(closedMsg, new ReplyKeyboardRemove()); if (autoDeleteResponse && m != null) { - await this.DeleteMessage(m); + await DeleteMessage(m); } return m; @@ -696,7 +675,7 @@ namespace TelegramBotBase.Sessions public virtual async Task DeleteMessage(int messageId = -1) { - await RAW(a => a.DeleteMessageAsync(this.DeviceId, messageId)); + await Raw(a => a.DeleteMessageAsync(DeviceId, messageId)); OnMessageDeleted(new MessageDeletedEventArgs(messageId)); @@ -718,7 +697,7 @@ namespace TelegramBotBase.Sessions { try { - await API(a => a.SetChatPermissionsAsync(this.DeviceId, permissions)); + await Api(a => a.SetChatPermissionsAsync(DeviceId, permissions)); } catch { @@ -728,7 +707,7 @@ namespace TelegramBotBase.Sessions private Type GetOrigin(StackTrace stackTrace) { - for (int i = 0; i < stackTrace.FrameCount; i++) + for (var i = 0; i < stackTrace.FrameCount; i++) { var methodBase = stackTrace.GetFrame(i).GetMethod(); @@ -749,7 +728,7 @@ namespace TelegramBotBase.Sessions { try { - await API(a => a.RestrictChatMemberAsync(this.DeviceId, userId, permissions, until)); + await Api(a => a.RestrictChatMemberAsync(DeviceId, userId, permissions, until)); } catch { @@ -761,7 +740,7 @@ namespace TelegramBotBase.Sessions { try { - return await API(a => a.GetChatMemberAsync(this.DeviceId, userId)); + return await Api(a => a.GetChatMemberAsync(DeviceId, userId)); } catch { @@ -775,7 +754,7 @@ namespace TelegramBotBase.Sessions { try { - await API(a => a.BanChatMemberAsync(this.DeviceId, userId, until)); + await Api(a => a.BanChatMemberAsync(DeviceId, userId, until)); } catch { @@ -787,7 +766,7 @@ namespace TelegramBotBase.Sessions { try { - await API(a => a.BanChatMemberAsync(this.DeviceId, userId, until)); + await Api(a => a.BanChatMemberAsync(DeviceId, userId, until)); } catch { @@ -799,7 +778,7 @@ namespace TelegramBotBase.Sessions { try { - await API(a => a.UnbanChatMemberAsync(this.DeviceId, userId)); + await Api(a => a.UnbanChatMemberAsync(DeviceId, userId)); } catch { @@ -815,9 +794,9 @@ namespace TelegramBotBase.Sessions /// /// /// - public T RAW(Func call) + public T Raw(Func call) { - return call(this.Client.TelegramClient); + return call(Client.TelegramClient); } /// @@ -826,10 +805,10 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task API(Func> call) + public async Task Api(Func> call) { var numberOfTries = 0; - while (numberOfTries < DeviceSession.MaxNumberOfRetries) + while (numberOfTries < MaxNumberOfRetries) { try { @@ -854,10 +833,10 @@ namespace TelegramBotBase.Sessions /// /// /// - public async Task API(Func call) + public async Task Api(Func call) { var numberOfTries = 0; - while (numberOfTries < DeviceSession.MaxNumberOfRetries) + while (numberOfTries < MaxNumberOfRetries) { try { @@ -883,16 +862,10 @@ namespace TelegramBotBase.Sessions /// /// Eventhandler for sent messages /// - public event Base.Async.AsyncEventHandler MessageSent + public event Async.AsyncEventHandler MessageSent { - add - { - this.__Events.AddHandler(__evMessageSent, value); - } - remove - { - this.__Events.RemoveHandler(__evMessageSent, value); - } + add => _events.AddHandler(EvMessageSent, value); + remove => _events.RemoveHandler(EvMessageSent, value); } @@ -900,14 +873,14 @@ namespace TelegramBotBase.Sessions { if (e.Message == null) return; - - var handler = this.__Events[__evMessageSent]?.GetInvocationList().Cast>(); + + var handler = _events[EvMessageSent]?.GetInvocationList().Cast>(); if (handler == null) return; foreach (var h in handler) { - await Base.Async.InvokeAllAsync(h, this, e); + await h.InvokeAllAsync(this, e); } //(this.__Events[__evMessageSent] as EventHandler)?.Invoke(this, e); @@ -918,20 +891,14 @@ namespace TelegramBotBase.Sessions /// public event EventHandler MessageReceived { - add - { - this.__Events.AddHandler(__evMessageReceived, value); - } - remove - { - this.__Events.RemoveHandler(__evMessageReceived, value); - } + add => _events.AddHandler(EvMessageReceived, value); + remove => _events.RemoveHandler(EvMessageReceived, value); } public void OnMessageReceived(MessageReceivedEventArgs e) { - (this.__Events[__evMessageReceived] as EventHandler)?.Invoke(this, e); + (_events[EvMessageReceived] as EventHandler)?.Invoke(this, e); } /// @@ -939,20 +906,14 @@ namespace TelegramBotBase.Sessions /// public event EventHandler MessageDeleted { - add - { - this.__Events.AddHandler(__evMessageDeleted, value); - } - remove - { - this.__Events.RemoveHandler(__evMessageDeleted, value); - } + add => _events.AddHandler(EvMessageDeleted, value); + remove => _events.RemoveHandler(EvMessageDeleted, value); } public void OnMessageDeleted(MessageDeletedEventArgs e) { - (this.__Events[__evMessageDeleted] as EventHandler)?.Invoke(this, e); + (_events[EvMessageDeleted] as EventHandler)?.Invoke(this, e); } #endregion @@ -960,7 +921,7 @@ namespace TelegramBotBase.Sessions #region "Static" /// - /// Indicates the maximum number of times a request that received error + /// Indicates the maximum number of times a request that received error /// 429 will be sent again after a timeout until it receives code 200 or an error code not equal to 429. /// public static uint MaxNumberOfRetries { get; set; } diff --git a/TelegramBotBase/States/JSONStateMachine.cs b/TelegramBotBase/States/JSONStateMachine.cs index 7035692..944caf0 100644 --- a/TelegramBotBase/States/JSONStateMachine.cs +++ b/TelegramBotBase/States/JSONStateMachine.cs @@ -1,8 +1,6 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Runtime.Serialization.Formatters; -using System.Text; +using System; +using System.IO; +using Newtonsoft.Json; using TelegramBotBase.Args; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -13,9 +11,9 @@ namespace TelegramBotBase.States /// /// Is used for all complex data types. Use if other default machines are not working. /// - public class JSONStateMachine : IStateMachine + public class JsonStateMachine : IStateMachine { - public String FilePath { get; set; } + public string FilePath { get; set; } public bool Overwrite { get; set; } @@ -27,35 +25,30 @@ namespace TelegramBotBase.States /// Path of the file and name where to save the session details. /// Type of Form which will be saved instead of Form which has attribute declared. Needs to be subclass of . /// Declares of the file could be overwritten. - public JSONStateMachine(String file, Type fallbackStateForm = null, bool overwrite = true) + public JsonStateMachine(string file, Type fallbackStateForm = null, bool overwrite = true) { - if (file is null) - { - throw new ArgumentNullException(nameof(file)); - } + FallbackStateForm = fallbackStateForm; - this.FallbackStateForm = fallbackStateForm; - - if (this.FallbackStateForm != null && !this.FallbackStateForm.IsSubclassOf(typeof(FormBase))) + if (FallbackStateForm != null && !FallbackStateForm.IsSubclassOf(typeof(FormBase))) { throw new ArgumentException("FallbackStateForm is not a subclass of FormBase"); } - this.FilePath = file; - this.Overwrite = overwrite; + FilePath = file ?? throw new ArgumentNullException(nameof(file)); + Overwrite = overwrite; } public StateContainer LoadFormStates() { try { - var content = System.IO.File.ReadAllText(FilePath); + var content = File.ReadAllText(FilePath); - var sc = Newtonsoft.Json.JsonConvert.DeserializeObject(content, new JsonSerializerSettings + var sc = JsonConvert.DeserializeObject(content, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple - }) as StateContainer; + }); return sc; } @@ -69,25 +62,25 @@ namespace TelegramBotBase.States public void SaveFormStates(SaveStatesEventArgs e) { - if (System.IO.File.Exists(FilePath)) + if (File.Exists(FilePath)) { - if (!this.Overwrite) + if (!Overwrite) { throw new Exception("File exists already."); } - System.IO.File.Delete(FilePath); + File.Delete(FilePath); } try { - var content = Newtonsoft.Json.JsonConvert.SerializeObject(e.States, Formatting.Indented, new JsonSerializerSettings + var content = JsonConvert.SerializeObject(e.States, Formatting.Indented, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple }); - System.IO.File.WriteAllText(FilePath, content); + File.WriteAllText(FilePath, content); } catch { diff --git a/TelegramBotBase/States/SimpleJSONStateMachine.cs b/TelegramBotBase/States/SimpleJSONStateMachine.cs index faba2af..5c84456 100644 --- a/TelegramBotBase/States/SimpleJSONStateMachine.cs +++ b/TelegramBotBase/States/SimpleJSONStateMachine.cs @@ -1,8 +1,6 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Runtime.Serialization.Formatters; -using System.Text; +using System; +using System.IO; +using Newtonsoft.Json; using TelegramBotBase.Args; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -13,9 +11,9 @@ namespace TelegramBotBase.States /// /// Is used for simple object structures like classes, lists or basic datatypes without generics and other compiler based data types. /// - public class SimpleJSONStateMachine : IStateMachine + public class SimpleJsonStateMachine : IStateMachine { - public String FilePath { get; set; } + public string FilePath { get; set; } public bool Overwrite { get; set; } @@ -27,31 +25,26 @@ namespace TelegramBotBase.States /// Path of the file and name where to save the session details. /// Type of Form which will be saved instead of Form which has attribute declared. Needs to be subclass of . /// Declares of the file could be overwritten. - public SimpleJSONStateMachine(String file, Type fallbackStateForm = null, bool overwrite = true) + public SimpleJsonStateMachine(string file, Type fallbackStateForm = null, bool overwrite = true) { - if (file is null) - { - throw new ArgumentNullException(nameof(file)); - } + FallbackStateForm = fallbackStateForm; - this.FallbackStateForm = fallbackStateForm; - - if (this.FallbackStateForm != null && !this.FallbackStateForm.IsSubclassOf(typeof(FormBase))) + if (FallbackStateForm != null && !FallbackStateForm.IsSubclassOf(typeof(FormBase))) { throw new ArgumentException("FallbackStateForm is not a subclass of FormBase"); } - this.FilePath = file; - this.Overwrite = overwrite; + FilePath = file ?? throw new ArgumentNullException(nameof(file)); + Overwrite = overwrite; } public StateContainer LoadFormStates() { try { - var content = System.IO.File.ReadAllText(FilePath); + var content = File.ReadAllText(FilePath); - var sc = Newtonsoft.Json.JsonConvert.DeserializeObject(content) as StateContainer; + var sc = JsonConvert.DeserializeObject(content); return sc; } @@ -65,21 +58,21 @@ namespace TelegramBotBase.States public void SaveFormStates(SaveStatesEventArgs e) { - if (System.IO.File.Exists(FilePath)) + if (File.Exists(FilePath)) { - if (!this.Overwrite) + if (!Overwrite) { throw new Exception("File exists already."); } - System.IO.File.Delete(FilePath); + File.Delete(FilePath); } try { - var content = Newtonsoft.Json.JsonConvert.SerializeObject(e.States, Formatting.Indented); + var content = JsonConvert.SerializeObject(e.States, Formatting.Indented); - System.IO.File.WriteAllText(FilePath, content); + File.WriteAllText(FilePath, content); } catch { diff --git a/TelegramBotBase/States/XMLStateMachine.cs b/TelegramBotBase/States/XMLStateMachine.cs index 2542f6a..b472d27 100644 --- a/TelegramBotBase/States/XMLStateMachine.cs +++ b/TelegramBotBase/States/XMLStateMachine.cs @@ -1,10 +1,7 @@ using System; -using System.Collections.Generic; using System.IO; using System.Runtime.Serialization; -using System.Text; using System.Xml; -using System.Xml.Serialization; using TelegramBotBase.Args; using TelegramBotBase.Base; using TelegramBotBase.Form; @@ -12,9 +9,9 @@ using TelegramBotBase.Interfaces; namespace TelegramBotBase.States { - public class XMLStateMachine : IStateMachine + public class XmlStateMachine : IStateMachine { - public String FilePath { get; set; } + public string FilePath { get; set; } public bool Overwrite { get; set; } @@ -26,35 +23,30 @@ namespace TelegramBotBase.States /// Path of the file and name where to save the session details. /// Type of Form which will be saved instead of Form which has attribute declared. Needs to be subclass of . /// Declares of the file could be overwritten. - public XMLStateMachine(String file, Type fallbackStateForm = null, bool overwrite = true) + public XmlStateMachine(string file, Type fallbackStateForm = null, bool overwrite = true) { - if (file is null) - { - throw new ArgumentNullException(nameof(file)); - } + FallbackStateForm = fallbackStateForm; - this.FallbackStateForm = fallbackStateForm; - - if (this.FallbackStateForm != null && !this.FallbackStateForm.IsSubclassOf(typeof(FormBase))) + if (FallbackStateForm != null && !FallbackStateForm.IsSubclassOf(typeof(FormBase))) { throw new ArgumentException("FallbackStateForm is not a subclass of FormBase"); } - this.FilePath = file; - this.Overwrite = overwrite; + FilePath = file ?? throw new ArgumentNullException(nameof(file)); + Overwrite = overwrite; } public StateContainer LoadFormStates() { try { - DataContractSerializer serializer = new DataContractSerializer(typeof(StateContainer)); + var serializer = new DataContractSerializer(typeof(StateContainer)); using (var reader = new StreamReader(FilePath)) { using (var xml = new XmlTextReader(reader)) { - StateContainer sc = serializer.ReadObject(xml) as StateContainer; + var sc = serializer.ReadObject(xml) as StateContainer; return sc; } } @@ -69,21 +61,21 @@ namespace TelegramBotBase.States public void SaveFormStates(SaveStatesEventArgs e) { - if (System.IO.File.Exists(FilePath)) + if (File.Exists(FilePath)) { - if (!this.Overwrite) + if (!Overwrite) { throw new Exception("File exists already."); } - System.IO.File.Delete(FilePath); + File.Delete(FilePath); } try { - DataContractSerializer serializer = new DataContractSerializer(typeof(StateContainer)); + var serializer = new DataContractSerializer(typeof(StateContainer)); - using (var sw = new StreamWriter(this.FilePath)) + using (var sw = new StreamWriter(FilePath)) { using (var writer = new XmlTextWriter(sw)) { diff --git a/TelegramBotBase/TelegramBotBase.csproj b/TelegramBotBase/TelegramBotBase.csproj index a5b9666..4203025 100644 --- a/TelegramBotBase/TelegramBotBase.csproj +++ b/TelegramBotBase/TelegramBotBase.csproj @@ -2,6 +2,7 @@ netstandard2.0;net5;netcoreapp3.1;net6 + 9 false False true @@ -17,8 +18,6 @@ true snupkg $(VersionPrefix) - - portable @@ -62,8 +61,4 @@ - - - - diff --git a/TelegramBotBase/Tools/Arrays.cs b/TelegramBotBase/Tools/Arrays.cs index 01efa34..b3814b1 100644 --- a/TelegramBotBase/Tools/Arrays.cs +++ b/TelegramBotBase/Tools/Arrays.cs @@ -1,11 +1,4 @@ using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using TelegramBotBase.Base; -using TelegramBotBase.Form; namespace TelegramBotBase.Tools { @@ -13,7 +6,7 @@ namespace TelegramBotBase.Tools { public static T[] Shift(T[] array, int positions) { - T[] copy = new T[array.Length]; + var copy = new T[array.Length]; Array.Copy(array, 0, copy, array.Length - positions, positions); Array.Copy(array, positions, copy, 0, array.Length - positions); return copy; diff --git a/TelegramBotBase/Tools/Console.cs b/TelegramBotBase/Tools/Console.cs index a239df5..7baa187 100644 --- a/TelegramBotBase/Tools/Console.cs +++ b/TelegramBotBase/Tools/Console.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Runtime.InteropServices; -using System.Text; namespace TelegramBotBase.Tools { @@ -11,17 +10,18 @@ namespace TelegramBotBase.Tools private static extern bool SetConsoleCtrlHandler(EventHandler handler, bool add); private delegate bool EventHandler(CtrlType sig); - static EventHandler _handler; - static List Actions = new List(); + private static EventHandler __handler; - enum CtrlType + private static List __actions = new List(); + + private enum CtrlType { - CTRL_C_EVENT = 0, - CTRL_BREAK_EVENT = 1, - CTRL_CLOSE_EVENT = 2, - CTRL_LOGOFF_EVENT = 5, - CTRL_SHUTDOWN_EVENT = 6 + CtrlCEvent = 0, + CtrlBreakEvent = 1, + CtrlCloseEvent = 2, + CtrlLogoffEvent = 5, + CtrlShutdownEvent = 6 } static Console() @@ -31,25 +31,25 @@ namespace TelegramBotBase.Tools public static void SetHandler(Action action) { - Actions.Add(action); + __actions.Add(action); - if (_handler != null) + if (__handler != null) return; - _handler += new EventHandler(Handler); - SetConsoleCtrlHandler(_handler, true); + __handler += Handler; + SetConsoleCtrlHandler(__handler, true); } private static bool Handler(CtrlType sig) { switch (sig) { - case CtrlType.CTRL_C_EVENT: - case CtrlType.CTRL_LOGOFF_EVENT: - case CtrlType.CTRL_SHUTDOWN_EVENT: - case CtrlType.CTRL_CLOSE_EVENT: + case CtrlType.CtrlCEvent: + case CtrlType.CtrlLogoffEvent: + case CtrlType.CtrlShutdownEvent: + case CtrlType.CtrlCloseEvent: - foreach (var a in Actions) + foreach (var a in __actions) { a(); } diff --git a/TelegramBotBase/Tools/Conversion.cs b/TelegramBotBase/Tools/Conversion.cs index b9e40da..9993cd5 100644 --- a/TelegramBotBase/Tools/Conversion.cs +++ b/TelegramBotBase/Tools/Conversion.cs @@ -1,19 +1,17 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Collections.Generic; +using System.Reflection; using TelegramBotBase.Form; namespace TelegramBotBase.Tools { public static class Conversion { - public static void CustomConversionChecks(FormBase form, KeyValuePair p, System.Reflection.PropertyInfo f) + public static void CustomConversionChecks(FormBase form, KeyValuePair p, PropertyInfo f) { //Newtonsoft Int64/Int32 converter issue - if (f.PropertyType == typeof(Int32)) + if (f.PropertyType == typeof(int)) { - int i = 0; - if (int.TryParse(p.Value.ToString(), out i)) + if (int.TryParse(p.Value.ToString(), out var i)) { f.SetValue(form, i); } @@ -21,14 +19,13 @@ namespace TelegramBotBase.Tools } //Newtonsoft Double/Decimal converter issue - if (f.PropertyType == typeof(Decimal) | f.PropertyType == typeof(Nullable)) + if (f.PropertyType == typeof(decimal) | f.PropertyType == typeof(decimal?)) { decimal d = 0; if (decimal.TryParse(p.Value.ToString(), out d)) { f.SetValue(form, d); } - return; } diff --git a/TelegramBotBase/Tools/Time.cs b/TelegramBotBase/Tools/Time.cs index b0cd93f..f11733b 100644 --- a/TelegramBotBase/Tools/Time.cs +++ b/TelegramBotBase/Tools/Time.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace TelegramBotBase.Tools { @@ -25,7 +21,7 @@ namespace TelegramBotBase.Tools public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek) { - int diff = dt.DayOfWeek - startOfWeek; + var diff = dt.DayOfWeek - startOfWeek; if (diff < 0) { diff += 7;