fix: some build & linter warnings

This commit is contained in:
ZavaruKitsu
2022-10-08 19:15:51 +03:00
parent 3f0d109fe2
commit a731e2a8d0
159 changed files with 2738 additions and 3742 deletions
+5 -12
View File
@@ -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;
}
+19 -28
View File
@@ -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);
}
}
}
+35 -32
View File
@@ -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);
}
+17 -21
View File
@@ -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);
}
}
+52 -70
View File
@@ -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;
+12 -18
View File
@@ -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;
}
+17 -26
View File
@@ -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);
}
}
+12 -20
View File
@@ -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;
}
+23 -34
View File
@@ -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;
}
}
}
+3 -5
View File
@@ -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);
+22 -32
View File
@@ -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);
}
}
+13 -17
View File
@@ -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);
}
+9 -14
View File
@@ -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);
}
}