Handling updates - roxxel/TeleSharp GitHub Wiki

Create new class and inherit it from BaseUpdateHandlerModule

public class Handler : BaseUpdateHandlerModule
{
    [UpdateHandler(UpdateHandlerType.Message)]
    public async Task HandleMessage(TelegramClient client, UpdateNewMessage update)
    {
        var message = update.Message;
        var me = client.CurrentUser;
        //Checking if sender is User and not Chat and checking if sender is CurrentUser
        if (message.SenderId is MessageSender.MessageSenderUser user && user.UserId == me.Id)
        {
            // Checking if message is text message and if message text starts with command prefix (in our case `.`)
            if (message.Content is MessageContent.MessageText content && content.Text.Text.StartsWith('.'))
            {
                var text = content.Text.Text.Substring(1);
                var parts = text.Split(" ", StringSplitOptions.RemoveEmptyEntries);
                if (parts[0] == "ping")
                {
                    await client.RawClient.EditMessageTextAsync(update.Message.ChatId, update.Message.Id, null, new 
                             InputMessageContent.InputMessageText() 
                             { 
                                 Text = new() { Text = "Pong 🏓" } 
                             });
                }
            }
       }   
    }

    [UpdateHandler(UpdateHandlerType.UserStatusUpdated)]
    public async Task UserStatusUpdatedHandler(TelegramClient client, UpdateUserStatus update)
    {
        Console.WriteLine($"User {update.UserId} status updated to {update.Status.GetType().Name}");
    }

}