diff --git a/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int32Action.Extensions.cs b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int32Action.Extensions.cs new file mode 100644 index 0000000..8d84f11 --- /dev/null +++ b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int32Action.Extensions.cs @@ -0,0 +1,13 @@ +using TelegramBotBase.Base; + +namespace TelegramBotBase.Experiments.ActionManager.Actions +{ + public static class Int32Action_Extensions + { + + public static void AddInt32Action(this ExternalActionManager manager, string method, Func action) + { + manager.Add(new Int32Action(method, action)); + } + } +} diff --git a/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int32Action.cs b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int32Action.cs new file mode 100644 index 0000000..ce68cc7 --- /dev/null +++ b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int32Action.cs @@ -0,0 +1,82 @@ +using TelegramBotBase.Base; +using TelegramBotBase.Form; + +namespace TelegramBotBase.Experiments.ActionManager.Actions +{ + public class Int32Action : IExternalAction + { + public string Method { get; set; } + + int? _lastValue { get; set; } + + Func Action; + + public Int32Action(string method, Func action) + { + Method = method; + Action = action; + } + + + public bool DoesFit(string raw_data) + { + var cd = CallbackData.Deserialize(raw_data); + + if (cd == null) + return false; + + if (cd.Method != Method) + return false; + + int i; + + if (int.TryParse(cd.Value, out i)) + _lastValue = i; + + return true; + } + + + public async Task DoAction(UpdateResult ur, MessageResult mr) => await Action(_lastValue.Value, ur, mr); + + public static CallbackData GetCallback(string method, long l) => new CallbackData(method, l.ToString()); + + } + + public class Int32Action : IExternalAction + where TForm : FormBase + { + public string Method { get; set; } + + int? _lastValue { get; set; } + + Func Action; + + public Int32Action(string method, Func action) + { + Method = method; + Action = action; + } + + public bool DoesFit(string raw_data) + { + var cd = CallbackData.Deserialize(raw_data); + + if (cd == null) + return false; + + if (cd.Method != Method) + return false; + + int i; + + if (int.TryParse(cd.Value, out i)) + _lastValue = i; + + return true; + } + + + public async Task DoAction(UpdateResult ur, MessageResult mr) => await Action(_lastValue.Value, ur, mr); + } +} diff --git a/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int64Action.Extensions.cs b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int64Action.Extensions.cs new file mode 100644 index 0000000..942fefe --- /dev/null +++ b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int64Action.Extensions.cs @@ -0,0 +1,13 @@ +using TelegramBotBase.Base; + +namespace TelegramBotBase.Experiments.ActionManager.Actions +{ + public static class Int64Action_Extensions + { + + public static void AddInt64Action(this ExternalActionManager manager, string method, Func action) + { + manager.Add(new Int64Action(method, action)); + } + } +} diff --git a/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int64Action.cs b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int64Action.cs new file mode 100644 index 0000000..05bc317 --- /dev/null +++ b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/Int64Action.cs @@ -0,0 +1,81 @@ +using TelegramBotBase.Base; +using TelegramBotBase.Form; + +namespace TelegramBotBase.Experiments.ActionManager.Actions +{ + public class Int64Action : IExternalAction + { + public string Method { get; set; } + + long? _lastValue { get; set; } + + Func Action; + + public Int64Action(string method, Func action) + { + Method = method; + Action = action; + } + + public bool DoesFit(string raw_data) + { + var cd = CallbackData.Deserialize(raw_data); + + if (cd == null) + return false; + + if (cd.Method != Method) + return false; + + long l; + + if (long.TryParse(cd.Value, out l)) + _lastValue = l; + + return true; + } + + + public async Task DoAction(UpdateResult ur, MessageResult mr) => await Action(_lastValue.Value, ur, mr); + + public static CallbackData GetCallback(string method, long l) => new CallbackData(method, l.ToString()); + + } + + public class Int64Action : IExternalAction + where TForm : FormBase + { + public string Method { get; set; } + + long? _lastValue { get; set; } + + Func Action; + + public Int64Action(string method, Func action) + { + Method = method; + Action = action; + } + + public bool DoesFit(string raw_data) + { + var cd = CallbackData.Deserialize(raw_data); + + if (cd == null) + return false; + + if (cd.Method != Method) + return false; + + long g; + + if (long.TryParse(cd.Value, out g)) + _lastValue = g; + + return true; + } + + + public async Task DoAction(UpdateResult ur, MessageResult mr) => await Action(_lastValue.Value, ur, mr); + } +} diff --git a/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/StringAction.Extensions.cs b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/StringAction.Extensions.cs new file mode 100644 index 0000000..3b65941 --- /dev/null +++ b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/StringAction.Extensions.cs @@ -0,0 +1,13 @@ +using TelegramBotBase.Base; + +namespace TelegramBotBase.Experiments.ActionManager.Actions +{ + public static class StringAction_Extensions + { + + public static void AddStringAction(this ExternalActionManager manager, string method, Func action) + { + manager.Add(new StringAction(method, action)); + } + } +} diff --git a/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/StringAction.cs b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/StringAction.cs new file mode 100644 index 0000000..54f46ba --- /dev/null +++ b/Experiments/ExternalActionManager/TelegramBotBase.Experiments/ActionManager/Actions/StringAction.cs @@ -0,0 +1,77 @@ +using TelegramBotBase.Base; +using TelegramBotBase.Form; + +namespace TelegramBotBase.Experiments.ActionManager.Actions +{ + public class StringAction : IExternalAction + { + public string Method { get; set; } + + String? _lastValue { get; set; } + + Func Action; + + public StringAction(string method, Func action) + { + Method = method; + Action = action; + } + + + public bool DoesFit(string raw_data) + { + var cd = CallbackData.Deserialize(raw_data); + + if (cd == null) + return false; + + if (cd.Method != Method) + return false; + + _lastValue = cd.Value; + + return true; + } + + + public async Task DoAction(UpdateResult ur, MessageResult mr) => await Action(_lastValue, ur, mr); + + public static CallbackData GetCallback(string method, long l) => new CallbackData(method, l.ToString()); + + } + + public class StringAction : IExternalAction + where TForm : FormBase + { + public string Method { get; set; } + + String? _lastValue { get; set; } + + Func Action; + + public StringAction(string method, Func action) + { + Method = method; + Action = action; + } + + public bool DoesFit(string raw_data) + { + var cd = CallbackData.Deserialize(raw_data); + + if (cd == null) + return false; + + if (cd.Method != Method) + return false; + + _lastValue = cd.Value; + + return true; + } + + + public async Task DoAction(UpdateResult ur, MessageResult mr) => await Action(_lastValue, ur, mr); + + } +}