Adding Edited Features
- FormBase: adding Edited method - MessageClient: adding MessageEdit event - GroupForm: adding Edited method - DeviceSession: adding ChatTitle
This commit is contained in:
parent
519a6fe41c
commit
6a62d73fe0
@ -191,6 +191,15 @@ namespace TelegramBotBase.Form
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets invoked, when a messages has been edited.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="message"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public virtual async Task Edited(MessageResult message)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -23,6 +23,8 @@ namespace TelegramBotBase.Base
|
|||||||
|
|
||||||
private static object __evOnMessage = new object();
|
private static object __evOnMessage = new object();
|
||||||
|
|
||||||
|
private static object __evOnMessageEdit = new object();
|
||||||
|
|
||||||
private static object __evCallbackQuery = new object();
|
private static object __evCallbackQuery = new object();
|
||||||
|
|
||||||
|
|
||||||
@ -84,13 +86,11 @@ namespace TelegramBotBase.Base
|
|||||||
{
|
{
|
||||||
this.TelegramClient.Timeout = new TimeSpan(0, 0, 30);
|
this.TelegramClient.Timeout = new TimeSpan(0, 0, 30);
|
||||||
|
|
||||||
|
|
||||||
this.TelegramClient.OnMessage += TelegramClient_OnMessage;
|
this.TelegramClient.OnMessage += TelegramClient_OnMessage;
|
||||||
|
this.TelegramClient.OnMessageEdited += TelegramClient_OnMessageEdited;
|
||||||
this.TelegramClient.OnCallbackQuery += TelegramClient_OnCallbackQuery;
|
this.TelegramClient.OnCallbackQuery += TelegramClient_OnCallbackQuery;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private async void TelegramClient_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e)
|
private async void TelegramClient_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e)
|
||||||
{
|
{
|
||||||
//Skip empty messages by default
|
//Skip empty messages by default
|
||||||
@ -109,6 +109,25 @@ namespace TelegramBotBase.Base
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private async void TelegramClient_OnMessageEdited(object sender, Telegram.Bot.Args.MessageEventArgs e)
|
||||||
|
{
|
||||||
|
//Skip empty messages by default
|
||||||
|
if (e.Message == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var mr = new MessageResult(e);
|
||||||
|
mr.Client = this;
|
||||||
|
OnMessageEdit(mr);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async void TelegramClient_OnCallbackQuery(object sender, Telegram.Bot.Args.CallbackQueryEventArgs e)
|
private async void TelegramClient_OnCallbackQuery(object sender, Telegram.Bot.Args.CallbackQueryEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -143,6 +162,23 @@ namespace TelegramBotBase.Base
|
|||||||
(this.__Events[__evOnMessage] as EventHandler<MessageResult>)?.Invoke(this, result);
|
(this.__Events[__evOnMessage] as EventHandler<MessageResult>)?.Invoke(this, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public event EventHandler<MessageResult> MessageEdit
|
||||||
|
{
|
||||||
|
add
|
||||||
|
{
|
||||||
|
this.__Events.AddHandler(__evOnMessageEdit, value);
|
||||||
|
}
|
||||||
|
remove
|
||||||
|
{
|
||||||
|
this.__Events.RemoveHandler(__evOnMessageEdit, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnMessageEdit(MessageResult result)
|
||||||
|
{
|
||||||
|
(this.__Events[__evOnMessageEdit] as EventHandler<MessageResult>)?.Invoke(this, result);
|
||||||
|
}
|
||||||
|
|
||||||
public event EventHandler<MessageResult> Action
|
public event EventHandler<MessageResult> Action
|
||||||
{
|
{
|
||||||
add
|
add
|
||||||
|
|||||||
@ -6,6 +6,7 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Telegram.Bot;
|
using Telegram.Bot;
|
||||||
using TelegramBotBase.Args;
|
using TelegramBotBase.Args;
|
||||||
|
using TelegramBotBase.Attributes;
|
||||||
using TelegramBotBase.Base;
|
using TelegramBotBase.Base;
|
||||||
using TelegramBotBase.Form;
|
using TelegramBotBase.Form;
|
||||||
using TelegramBotBase.Interfaces;
|
using TelegramBotBase.Interfaces;
|
||||||
@ -165,6 +166,7 @@ namespace TelegramBotBase
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
this.Client.Message += Client_Message;
|
this.Client.Message += Client_Message;
|
||||||
|
this.Client.MessageEdit += Client_MessageEdit;
|
||||||
this.Client.Action += Client_Action;
|
this.Client.Action += Client_Action;
|
||||||
|
|
||||||
|
|
||||||
@ -202,7 +204,7 @@ namespace TelegramBotBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Client_Message(object sender, MessageResult e)
|
private async void Client_Message(object sender, MessageResult e)
|
||||||
{
|
{
|
||||||
if (this.SkipAllMessages)
|
if (this.SkipAllMessages)
|
||||||
return;
|
return;
|
||||||
@ -219,7 +221,7 @@ namespace TelegramBotBase
|
|||||||
|
|
||||||
ds?.OnMessageReceived(new MessageReceivedEventArgs(e.Message));
|
ds?.OnMessageReceived(new MessageReceivedEventArgs(e.Message));
|
||||||
|
|
||||||
Client_TryMessage(sender, e);
|
await Client_TryMessage(sender, e);
|
||||||
}
|
}
|
||||||
catch (Telegram.Bot.Exceptions.ApiRequestException ex)
|
catch (Telegram.Bot.Exceptions.ApiRequestException ex)
|
||||||
{
|
{
|
||||||
@ -232,7 +234,7 @@ namespace TelegramBotBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Client_TryMessage(object sender, MessageResult e)
|
private async Task Client_TryMessage(object sender, MessageResult e)
|
||||||
{
|
{
|
||||||
DeviceSession ds = e.Device;
|
DeviceSession ds = e.Device;
|
||||||
if (ds == null)
|
if (ds == null)
|
||||||
@ -245,6 +247,7 @@ namespace TelegramBotBase
|
|||||||
OnSessionBegins(new SessionBeginEventArgs(e.DeviceId, ds));
|
OnSessionBegins(new SessionBeginEventArgs(e.DeviceId, ds));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ds.ChatTitle = e.Message.Chat.Username ?? e.Message.Chat.Title;
|
||||||
ds.LastAction = DateTime.Now;
|
ds.LastAction = DateTime.Now;
|
||||||
ds.LastMessage = e.Message;
|
ds.LastMessage = e.Message;
|
||||||
|
|
||||||
@ -303,6 +306,61 @@ namespace TelegramBotBase
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void Client_MessageEdit(object sender, MessageResult e)
|
||||||
|
{
|
||||||
|
if (this.SkipAllMessages)
|
||||||
|
return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DeviceSession ds = this.Sessions.GetSession(e.DeviceId);
|
||||||
|
e.Device = ds;
|
||||||
|
|
||||||
|
if (LogAllMessages)
|
||||||
|
{
|
||||||
|
OnMessage(new MessageIncomeEventArgs(e.DeviceId, ds, e));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Call same, to handle received liked edited
|
||||||
|
ds?.OnMessageReceived(new MessageReceivedEventArgs(e.Message));
|
||||||
|
|
||||||
|
await Client_TryMessageEdit(sender, e);
|
||||||
|
}
|
||||||
|
catch (Telegram.Bot.Exceptions.ApiRequestException ex)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
DeviceSession ds = this.Sessions.GetSession(e.DeviceId);
|
||||||
|
OnException(new SystemExceptionEventArgs(e.Message.Text, ds?.DeviceId ?? -1, ds, ex));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task Client_TryMessageEdit(object sender, MessageResult e)
|
||||||
|
{
|
||||||
|
DeviceSession ds = e.Device;
|
||||||
|
if (ds == null)
|
||||||
|
{
|
||||||
|
ds = await this.Sessions.StartSession<T>(e.DeviceId);
|
||||||
|
e.Device = ds;
|
||||||
|
}
|
||||||
|
|
||||||
|
ds.ChatTitle = e.Message.Chat.Username ?? e.Message.Chat.Title;
|
||||||
|
ds.LastAction = DateTime.Now;
|
||||||
|
ds.LastMessage = e.Message;
|
||||||
|
|
||||||
|
//Pre Loading Event
|
||||||
|
await ds.ActiveForm.Edited(e);
|
||||||
|
|
||||||
|
//When form has been switched due navigation within the edit method, reopen Client_Message
|
||||||
|
if (ds.FormSwitched)
|
||||||
|
{
|
||||||
|
await Client_TryMessage(sender, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void Client_Action(object sender, MessageResult e)
|
private void Client_Action(object sender, MessageResult e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -333,7 +391,7 @@ namespace TelegramBotBase
|
|||||||
e.Device = ds;
|
e.Device = ds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ds.ChatTitle = e.Message.Chat.Username ?? e.Message.Chat.Title;
|
||||||
ds.LastAction = DateTime.Now;
|
ds.LastAction = DateTime.Now;
|
||||||
ds.LastMessage = e.Message;
|
ds.LastMessage = e.Message;
|
||||||
|
|
||||||
|
|||||||
@ -49,12 +49,16 @@ namespace TelegramBotBase.Form
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
OnMessage(message);
|
await OnMessage(message);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task Edited(MessageResult message)
|
||||||
|
{
|
||||||
|
await OnMessageEdit(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual async Task OnMemberChanges(MemberChangeEventArgs e)
|
public virtual async Task OnMemberChanges(MemberChangeEventArgs e)
|
||||||
@ -73,5 +77,10 @@ namespace TelegramBotBase.Form
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual async Task OnMessageEdit(MessageResult e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,6 +29,11 @@ namespace TelegramBotBase.Sessions
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public long DeviceId { get; set; }
|
public long DeviceId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Username of user or group
|
||||||
|
/// </summary>
|
||||||
|
public String ChatTitle { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// When did any last action happend (message received or button clicked)
|
/// When did any last action happend (message received or button clicked)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user