首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理来自WTelegramClient更新的消息?(获取聊天/用户信息)

如何处理来自WTelegramClient更新的消息?(获取聊天/用户信息)
EN

Stack Overflow用户
提问于 2022-02-09 08:33:13
回答 1查看 860关注 0票数 2

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

我试图了解在收到更新后如何获取用户信息,我有一个示例代码,可以监听更新并将其写入控制台,但我不明白如何响应发送消息的用户(新的更新)。

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

以下是我如何获得新消息,但它只能获得用户名或名称/id

代码语言:javascript
复制
   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就不一样了。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-10 01:35:54

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

备注:

  • 要使这个示例正常工作,您将需要带有静态变量的最新版本的ListenUpdates.cs
  • DisplayMessage现在是async Task,以便使用await
  • 您可以传递user来发送消息,因为类User被隐式转换为InputPeerUser (带有用户id/access_hash)。
  • 对于来自聊天的消息,您也可以使用PeerChat/PeerChannel类和_chats字典获取聊天详细信息。
代码语言:javascript
复制
private static async Task 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.flags.HasFlag(Message.Flags.out_))
                break; // ignore our own outgoing messages
            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;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71046258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档