如何处理来自 WTelegramClient 更新的消息? (获取 chat/user 信息)

How to work with messages from WTelegramClient updates? (get chat/user infos)

我是 WTelegramClient C# 库的新手,习惯了 TLSharp(不再工作)

我正在尝试了解收到更新后如何获取用户信息, 我有示例代码可以监听更新并将它们写入控制台 但我不明白如何回复发送消息的用户(新更新)

我想我需要用户 id/access_hash 向发件人发送消息,但我不明白如何

这是我获取新消息的方式,但它只能获取用户名或 name/id

   private static void DisplayMessage(MessageBase messageBase, bool edit = false)
            {
                if (edit) Console.Write("(Edit): ");
                switch (messageBase)
                {
                    case Message m: Console.WriteLine($"{Peer(m.from_id) ?? m.post_author} in {Peer(m.peer_id)}> {m.message}"); break;
                    case MessageService ms: Console.WriteLine($"{Peer(ms.from_id)} in {Peer(ms.peer_id)} [{ms.action.GetType().Name[13..]}]"); break;
                }
            }

在这里我可以获得发件人的姓名或用户名(如果有的话)和消息本身 MessageService('user' 不是频道或组)例如只给我名字和姓氏

如何获取发件人或聊天本身的所有信息(我想尝试标记为已读消息)

我习惯了 TLSharp,新库 WTelegramClient 不一样。

谢谢!!!

下面是一个快速示例,说明如何修改 DisplayMessage 以对用户私下发送的消息做出反应,获取有关该用户的详细信息,验证它是谁以及发送给我们的文本,然后给他回信息。

备注:

  • 要使此示例正常运行,您需要带有静态变量的最新版本 Program_ListenUpdates.cs
  • DisplayMessage 现在是 async void,以便使用 await
  • 可以通过user发送消息,因为classUser隐式转换为InputPeerUser(用户id/access_hash).
  • 您可以对来自聊天的消息执行类似操作,使用 PeerChat/PeerChannel classes 和 _chats 字典获取聊天详细信息
private static async void DisplayMessage(MessageBase messageBase, bool edit = false)
{
    if (edit) Console.Write("(Edit): ");
    switch (messageBase)
    {
        case Message m:
            Console.WriteLine($"{Peer(m.from_id) ?? m.post_author} in {Peer(m.peer_id)}> {m.message}");
            if (m.Peer is PeerUser pu) // got a message in a direct chat with a user
            {
                if (_users.TryGetValue(pu.user_id, out var user)) // get user details
                {
                    if (user.username == "Wiz0u" && m.message == "hello")
                    {
                        await Client.SendMessageAsync(user, $"hi {user.first_name}, I'm {My.first_name}");
                    }
                }
            }
            break;
        case MessageService ms:
            Console.WriteLine($"{Peer(ms.from_id)} in {Peer(ms.peer_id)} [{ms.action.GetType().Name[13..]}]");
            break;
    }
}