搜索
首页后端开发Golang喵喵对话数据

喵喵对话数据

Feb 10, 2024 am 10:10 AM

喵喵对话数据

php小编子墨为大家带来了一款名为“喵喵对话数据”的神奇工具。这个工具能够帮助用户快速地进行对话数据的处理和分析,提供了便捷的对话数据管理和统计功能。用户只需输入对话文本,就能通过喵喵对话数据进行自动处理,并生成各种有用的统计信息,如对话频率、关键词分析等。这个工具操作简单,功能强大,非常适合需要对对话数据进行分析的用户使用。

问题内容

我正在尝试使用 whatsmeow 为 whatsapp 构建一个 tui 客户端。

经过半天的搜索和阅读文档,我仍然找不到获取单个联系人的对话数据的方法。如有任何帮助,我们将不胜感激。

我找到了 parsewebmessage,但我不太确定如何使用它。

chatJID, err := types.ParseJID(conv.GetId())
for _, historyMsg := range conv.GetMessages() {
    evt, err := cli.ParseWebMessage(chatJID, historyMsg.GetMessage())
    yourNormalEventHandler(evt)
}

事实上,我什至不确定这是否是我正在寻找的

解决方法

嗯,您基本上链接到了包含您正在查找的信息的文档部分。 parsewebmessage 调用的返回类型是 events.message,记录在 此处。它包含类型为 messageinfoinfo 字段(同样, 记录在此处)。反过来,这个 messageinfo 类型嵌入 messagesource 类型 请参阅此处的文档,如下所示:

type messagesource struct {
    chat     jid  // the chat where the message was sent.
    sender   jid  // the user who sent the message.
    isfromme bool // whether the message was sent by the current user instead of someone else.
    isgroup  bool // whether the chat is a group chat or broadcast list.

    // when sending a read receipt to a broadcast list message, the chat is the broadcast list
    // and sender is you, so this field contains the recipient of the read receipt.
    broadcastlistowner jid
}

因此,要获取发送给定消息的联系人,给定您的代码 evt, err := cli.parsewebmessage(),您需要检查:

evt, err := cli.parsewebmessage(chatjid, historymsg.getmessage())
if err != nil {
    // handle error, of course
}
fmt.printf("sender id: %s\nsent in chat: %s\n", evt.info.sender, evt.info.chat)
if evt.info.isgroup {
    fmt.printf("%s is a group chat\n", evt.info.chat)
}

您还可以通过简单地执行以下操作来跳过发送的消息:

if evt.info.isfromme {
    continue
}

evt.info.chatevt.info.sender 字段的类型均为 jid 记录在此处evt.info.chatevt.info.sender 字段的类型均为 jid 记录在此处。此 id 类型本质上有 2 种变体:用户和服务器 jid 以及 ad-jid(用户、代理和设备)。您可以通过检查 jid.ad。此 id 类型本质上有 2 种变体:用户和服务器 jid 以及 ad-jid(用户、代理和设备)。您可以通过检查 jid.ad 标志来区分两者。

我根本没有使用过这个模块,我只是简单地浏览了文档,但据我了解,这个模块允许您编写一个处理程序,它将接收您收到的所有内容的 events.message 类型。通过检查evt.info.isgroup,你可以弄清楚我们发送的消息是在群聊中,还是在你们的个人对话中的事情。根据evt.info.senderevt.info.chat,您可以查出​​消息是谁发送的。 evt.info.sender 作为 jid 反过来允许您调用 getuserinfo 方法events.message 类型。通过检查evt.info.isgroup,你可以弄清楚我们发送的消息是在群聊中,还是在你们的个人对话中的事情。根据evt.info.senderevt.info.chat,您可以查出​​消息是谁发送的。 evt.info.sender 作为 jid 反过来允许您调用 getuserinfo 方法,传入 jid,返回一个 userinfo,传入 jid,返回一个 userinfo 对象如此处记录,显示名称、图片、状态等...

所以我猜你正在寻找类似的东西:

// some map of all messages from a given person, sent directly to you
contacts := cli.GetAllContacts() // returns map[JID]ContactInfo
personMsg := map[string][]*events.Message
evt, err := cli.ParseWebMessage(chatJID, historyMsg.GetMessage())
if err != nil {
    // handle
}
if !evt.Info.IsFromMe && !evt.Info.IsGroup {// not a group, not sent by me
    info, _ := cli.GetUserInfo([]types.JID{evt.Info.Sender})
    if contact, ok := contacts[info[evt.Info.Sender]; ok {
        msgs, ok := personMsg[contact.PushName]
        if !ok {
            msgs := []*events.Message{}
        }
        personMsg[contact.PushName] = append(msgs, evt)
    }
}

注意 contatinfo 类型没有立即出现在文档中,但我偶然发现了它 在仓库中

无论哪种方式,我不太确定你想做什么,以及你如何/为什么被卡住。找到此信息所需要做的就是检查您提到的 parsewebmessage 方法的返回类型,检查几种类型,然后滚动浏览一些列出/记录的方法,以粗略了解如何获取所有数据可能需要...

以上是喵喵对话数据的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:stackoverflow。如有侵权,请联系admin@php.cn删除
Golang行动:现实世界中的示例和应用程序Golang行动:现实世界中的示例和应用程序Apr 12, 2025 am 12:11 AM

Golang在实际应用中表现出色,以简洁、高效和并发性着称。 1)通过Goroutines和Channels实现并发编程,2)利用接口和多态编写灵活代码,3)使用net/http包简化网络编程,4)构建高效并发爬虫,5)通过工具和最佳实践进行调试和优化。

Golang:Go编程语言解释了Golang:Go编程语言解释了Apr 10, 2025 am 11:18 AM

Go语言的核心特性包括垃圾回收、静态链接和并发支持。1.Go语言的并发模型通过goroutine和channel实现高效并发编程。2.接口和多态性通过实现接口方法,使得不同类型可以统一处理。3.基本用法展示了函数定义和调用的高效性。4.高级用法中,切片提供了动态调整大小的强大功能。5.常见错误如竞态条件可以通过gotest-race检测并解决。6.性能优化通过sync.Pool重用对象,减少垃圾回收压力。

Golang的目的:建立高效且可扩展的系统Golang的目的:建立高效且可扩展的系统Apr 09, 2025 pm 05:17 PM

Go语言在构建高效且可扩展的系统中表现出色,其优势包括:1.高性能:编译成机器码,运行速度快;2.并发编程:通过goroutines和channels简化多任务处理;3.简洁性:语法简洁,降低学习和维护成本;4.跨平台:支持跨平台编译,方便部署。

SQL排序中ORDER BY语句结果为何有时看似随机?SQL排序中ORDER BY语句结果为何有时看似随机?Apr 02, 2025 pm 05:24 PM

关于SQL查询结果排序的疑惑学习SQL的过程中,常常会遇到一些令人困惑的问题。最近,笔者在阅读《MICK-SQL基础�...

技术栈收敛是否仅仅是技术栈选型的过程?技术栈收敛是否仅仅是技术栈选型的过程?Apr 02, 2025 pm 05:21 PM

技术栈收敛与技术选型的关系在软件开发中,技术栈的选择和管理是一个非常关键的问题。最近,有读者提出了...

如何在Go语言中使用反射对比并处理三个结构体的差异?如何在Go语言中使用反射对比并处理三个结构体的差异?Apr 02, 2025 pm 05:15 PM

Go语言中如何对比并处理三个结构体在Go语言编程中,有时需要对比两个结构体的差异,并将这些差异应用到第�...

在Go语言中如何查看全局安装的包?在Go语言中如何查看全局安装的包?Apr 02, 2025 pm 05:12 PM

在Go语言中如何查看全局安装的包?在使用Go语言开发过程中,经常会使用go...

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。