wechaty/go-wechaty

求教:如何获取群聊中 @昵称 内容 这种形式下 @后面的这个人的wxID如何获取 ?

xueyangkk opened this issue · 9 comments

在群聊中 如内容如下
@张三 你好你在哪?

我希望获取 张三的wxid 这种如何获取 因为不是@本人

代码并没有封装 求教如何获取

 message *user.Message

message.MentionList() 可以帮到你

func (m *Message) MentionList() []_interface.IContact {

在群聊中 机器是A , B@C 文字内容 可以通过Talker()获取B的信息。 但是无法获取C的信息 , 您提到的 message.MentionList()经测试 返回是nil, 我查看了下
if len(m.payload.MentionIdList) > 0 这段跳过了 是等于0

求解答 感谢

我记得是没问题的啊,你用的是什么 puppet ?

if len(m.payload.MentionIdList) > 0 这段跳过了 是等于0

这段跳过了,还会继续走后边的逻辑,分析text里的@

atList := strings.Split(m.Text(), config.AtSepratorRegex)

我好像发现了确实有 bug

atList := strings.Split(m.Text(), config.AtSepratorRegex)

替换为

atList := regexp.MustCompile(config.AtSepratorRegex).Split(m.Text(), -1)

我使用了PadLocal ,我测试下 似乎这个并不是常发 而是偶发bug 我电脑 和 手机 同时登录时候, 我用电脑发消息 @C 内容 时候 MentionIdList 偶尔会收不到 , 其次 当 我是群主时候 @C 也有可能收不到 但不是绝对 我按照您的替换下试试 非常感谢解答

我已经提交了修复代码到新的分支:1a810e3
你能帮忙更新最新代码验证一下吗?

go get -v github.com/wechaty/go-wechaty@fix_mention 

完美 已经修复 感谢

已合并到 master