fix: some build & linter warnings
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
/// <summary>
|
||||
/// The message the users sees.
|
||||
/// </summary>
|
||||
public String Message { get; set; }
|
||||
public string Message { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// An additional optional value.
|
||||
@@ -29,26 +28,24 @@ namespace TelegramBotBase.Form
|
||||
public ButtonBase[][] Buttons { get; set; }
|
||||
|
||||
[Obsolete]
|
||||
public Dictionary<String, FormBase> ButtonForms { get; set; } = new Dictionary<string, FormBase>();
|
||||
public Dictionary<string, FormBase> ButtonForms { get; set; } = new Dictionary<string, FormBase>();
|
||||
|
||||
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<ButtonClickedEventArgs> 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<ButtonClickedEventArgs>)?.Invoke(this, e);
|
||||
(Events[EvButtonClicked] as EventHandler<ButtonClickedEventArgs>)?.Invoke(this, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,35 +22,36 @@ namespace TelegramBotBase.Form
|
||||
public List<int> 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<int>();
|
||||
this.DeleteMode = eDeleteMode.OnEveryCall;
|
||||
this.DeleteSide = eDeleteSide.BotOnly;
|
||||
OldMessages = new List<int>();
|
||||
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
|
||||
/// <param name="Id"></param>
|
||||
public void AddMessage(Message m)
|
||||
{
|
||||
this.OldMessages.Add(m.MessageId);
|
||||
OldMessages.Add(m.MessageId);
|
||||
}
|
||||
|
||||
|
||||
@@ -99,16 +101,16 @@ namespace TelegramBotBase.Form
|
||||
/// <param name="Id"></param>
|
||||
public void AddMessage(int messageId)
|
||||
{
|
||||
this.OldMessages.Add(messageId);
|
||||
OldMessages.Add(messageId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Keeps the message by removing it from the list
|
||||
/// </summary>
|
||||
/// <param name="Id"></param>
|
||||
public void LeaveMessage(int Id)
|
||||
/// <param name="id"></param>
|
||||
public void LeaveMessage(int id)
|
||||
{
|
||||
this.OldMessages.Remove(Id);
|
||||
OldMessages.Remove(id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -116,18 +118,19 @@ namespace TelegramBotBase.Form
|
||||
/// </summary>
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
/// </summary>
|
||||
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
|
||||
/// <returns></returns>
|
||||
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
|
||||
/// <returns></returns>
|
||||
public virtual KeyboardButton ToKeyboardButton(ButtonForm form)
|
||||
{
|
||||
return new KeyboardButton(this.Text);
|
||||
return new KeyboardButton(Text);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
/// </summary>
|
||||
public class ButtonForm
|
||||
{
|
||||
List<ButtonRow> Buttons = new List<ButtonRow>();
|
||||
private List<ButtonRow> _buttons = new List<ButtonRow>();
|
||||
|
||||
|
||||
public IReplyMarkup Markup { get; set; }
|
||||
@@ -24,13 +22,7 @@ namespace TelegramBotBase.Form
|
||||
/// <summary>
|
||||
/// Contains the number of rows.
|
||||
/// </summary>
|
||||
public int Rows
|
||||
{
|
||||
get
|
||||
{
|
||||
return Buttons.Count;
|
||||
}
|
||||
}
|
||||
public int Rows => _buttons.Count;
|
||||
|
||||
/// <summary>
|
||||
/// 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<ButtonBase>() { new ButtonBase(Text, Value, Url) });
|
||||
_buttons.Add(new List<ButtonBase> { 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<ButtonRow> rows)
|
||||
{
|
||||
Buttons.AddRange(rows);
|
||||
_buttons.AddRange(rows);
|
||||
}
|
||||
|
||||
public void InsertButtonRow(int index, IEnumerable<ButtonBase> 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<T>(IEnumerable<T> 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
|
||||
/// <param name="buttonsPerRow"></param>
|
||||
public void AddSplitted(IEnumerable<ButtonBase> buttons, int buttonsPerRow = 2)
|
||||
{
|
||||
var sp = SplitTo<ButtonBase>(buttons, buttonsPerRow);
|
||||
var sp = SplitTo(buttons, buttonsPerRow);
|
||||
|
||||
foreach (var bl in sp)
|
||||
{
|
||||
@@ -156,50 +142,50 @@ namespace TelegramBotBase.Form
|
||||
/// <returns></returns>
|
||||
public List<ButtonRow> GetRange(int start, int count)
|
||||
{
|
||||
return Buttons.Skip(start).Take(count).ToList();
|
||||
return _buttons.Skip(start).Take(count).ToList();
|
||||
}
|
||||
|
||||
|
||||
public List<ButtonBase> ToList()
|
||||
{
|
||||
return this.Buttons.DefaultIfEmpty(new List<ButtonBase>()).Select(a => a.ToList()).Aggregate((a, b) => a.Union(b).ToList());
|
||||
return _buttons.DefaultIfEmpty(new List<ButtonBase>()).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<ButtonRow> 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<ButtonRow, int> FindRow(String text, bool useText = true)
|
||||
public Tuple<ButtonRow, int> 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<ButtonRow, int>(r, i);
|
||||
}
|
||||
|
||||
@@ -209,9 +195,9 @@ namespace TelegramBotBase.Form
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
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
|
||||
/// <returns></returns>
|
||||
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.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
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.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ButtonForm TagDuplicate(List<String> tags, bool ByRow = false)
|
||||
public ButtonForm TagDuplicate(List<string> 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;
|
||||
|
||||
@@ -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
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
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
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static CallbackData Deserialize(String data)
|
||||
public static CallbackData Deserialize(string data)
|
||||
{
|
||||
CallbackData cd = null;
|
||||
try
|
||||
{
|
||||
cd = Newtonsoft.Json.JsonConvert.DeserializeObject<CallbackData>(data);
|
||||
cd = JsonConvert.DeserializeObject<CallbackData>(data);
|
||||
|
||||
return cd;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
/// <summary>
|
||||
/// The message the users sees.
|
||||
/// </summary>
|
||||
public String Message { get; set; }
|
||||
public string Message { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// An additional optional value.
|
||||
@@ -30,25 +29,23 @@ namespace TelegramBotBase.Form
|
||||
|
||||
public List<ButtonBase> 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<Form.ButtonBase>();
|
||||
this.Message = message;
|
||||
Buttons = new List<ButtonBase>();
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -57,7 +54,7 @@ namespace TelegramBotBase.Form
|
||||
/// <param name="button"></param>
|
||||
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<ButtonClickedEventArgs> 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<ButtonClickedEventArgs>)?.Invoke(this, e);
|
||||
(Events[EvButtonClicked] as EventHandler<ButtonClickedEventArgs>)?.Invoke(this, e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<String> GetText;
|
||||
private Func<string> _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<String> GetText, String Value, String Url = null)
|
||||
public DynamicButton(Func<string> getText, string value, string url = null)
|
||||
{
|
||||
this.GetText = GetText;
|
||||
this.Value = Value;
|
||||
this.Url = Url;
|
||||
this._getText = getText;
|
||||
this.Value = value;
|
||||
this.Url = url;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
/// <returns></returns>
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -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<String, object>;
|
||||
var c = e.GetObject($"$controller.history[{i}]") as Dictionary<string, object>;
|
||||
|
||||
|
||||
|
||||
@@ -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<String, object>();
|
||||
var dt = new Dictionary<string, object>();
|
||||
foreach (var f in fields)
|
||||
{
|
||||
var val = f.GetValue(form);
|
||||
|
||||
@@ -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
|
||||
/// <summary>
|
||||
/// The message the users sees.
|
||||
/// </summary>
|
||||
public String Message { get; set; }
|
||||
public string Message { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The returned text value by the user.
|
||||
/// </summary>
|
||||
public String Value { get; set; }
|
||||
public string Value { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// An additional optional value.
|
||||
/// </summary>
|
||||
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"];
|
||||
|
||||
/// <summary>
|
||||
/// 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<PromptDialogCompletedEventArgs> 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<PromptDialogCompletedEventArgs>)?.Invoke(this, e);
|
||||
(Events[EvCompleted] as EventHandler<PromptDialogCompletedEventArgs>)?.Invoke(this, e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
{
|
||||
/// <summary>
|
||||
@@ -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<bool> OpenSupergroup(MessageResult e)
|
||||
public virtual Task<bool> OpenSupergroup(MessageResult e)
|
||||
{
|
||||
return false;
|
||||
return Task.FromResult(false);
|
||||
}
|
||||
|
||||
public virtual async Task<bool> OpenChannel(MessageResult e)
|
||||
public virtual Task<bool> OpenChannel(MessageResult e)
|
||||
{
|
||||
return false;
|
||||
return Task.FromResult(false);
|
||||
}
|
||||
|
||||
public virtual async Task<bool> Open(MessageResult e)
|
||||
public virtual Task<bool> Open(MessageResult e)
|
||||
{
|
||||
return false;
|
||||
return Task.FromResult(false);
|
||||
}
|
||||
|
||||
public virtual async Task<bool> OpenGroup(MessageResult e)
|
||||
public virtual Task<bool> OpenGroup(MessageResult e)
|
||||
{
|
||||
return false;
|
||||
return Task.FromResult(false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
/// </summary>
|
||||
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
|
||||
/// <returns></returns>
|
||||
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
|
||||
/// <returns></returns>
|
||||
public override KeyboardButton ToKeyboardButton(ButtonForm form)
|
||||
{
|
||||
return new KeyboardButton(this.Text);
|
||||
return new KeyboardButton(Text);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user