Coder Social home page Coder Social logo

Comments (27)

littlecodersh avatar littlecodersh commented on July 3, 2024

@1265858594 最简单的方法是通过群名做判断,稍复杂一些的是判断群成员本人属性的AttrStatus值(因为两种方式获得的本人UserName不变),也可以通过群封面图片做判断。(新增)通过收藏的群聊区分是否要回复。

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

我马上找时间测试这三种方法,不过还是有点不太懂,

  1. 通过群名怎样判断呢?有什么特殊标记吗?
  2. 我会比对AttrStatus的值看看有什么不同
  3. 封面图片不是群主自已设置的吗?有特殊标记?
    明天或后天报告测试情况,谢谢。

from itchat.

littlecodersh avatar littlecodersh commented on July 3, 2024

@1265858594

  1. 就是最简单的将该群名与已知的自己是群主的群名做比较
  2. 原理来说,每个群当中个人的AttrStatus在重新登录后是不变的。通过判断AttrStatus集合是否与已知的自己是群主的集合相似或者简单的将自己的AttrStatus与已知的自己是群主的群的自己的AttrStatus做比较即可(经@1265858594 测试不可行)
  3. 不是自己设置的,可以配合群名在可视化界面中进行判断。(就像我们日常找群一样)
    (新增)4. 通过get_chatrooms()方法获取收藏的群聊,间接区分要回复的群

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

昨晚对于第2项的测试结果是
第一次登入时在所有的群内AttrStatus 都是 36048901
第二次登入 36048933
第三次登入 36048940

其中每次登入时间间隔10-30分钟,所有的 AttrStatus 全部都没有区分
所以无法透过AttrStatus区分哪一个群是群主

from itchat.

littlecodersh avatar littlecodersh commented on July 3, 2024

@1265858594 有理!是我没测试好,我修改一下方案。
我这里还有一个初步感觉可行的方案:
读取通讯录的时候只有收藏的群聊会被读取,那么通过是否被收藏判断是否要回复就可以对群聊进行区分。
可以尝试一下:)

itchat.get_chatrooms()

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

我思考一下哦,想让程序全自动判断,而不是人为的去进行设置..

from itchat.

littlecodersh avatar littlecodersh commented on July 3, 2024

@1265858594 我忘记了最直观的OwnerUin判断,已经更新版本。

python -m pip install itchat --upgrade

更新以后可以尝试该程序:

import itchat

itchat.auto_login()
chatrooms = itchat.get_chatrooms()
for chatroom in chatrooms:
    info = itchat.get_batch_contract(chatroom['UserName'])
    if info['isAdmin']: print(info['PYQuanPin'])

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

太好了,回家马上试..试完报告结果

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

昨晚最后测试的结果,
发现我取到的 OwnerUin 不论是不是群主建的群,都是 0
不知道原因, 换了微信号,OwnerUin还是0

from itchat.

littlecodersh avatar littlecodersh commented on July 3, 2024

@1265858594 我给的测试程序也不可用吗?

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

@littlecodersh 我是没有用你给的程序,但是我是看你的代码改的,
后来发现 isAdmin 都是 false才去看 OwnerUin ,然后才发现都是 0

get_batch_contract 里面
j['isAdmin'] = j['OwnerUin'] == int(self.loginInfo['wxuin'])
这个部份

from itchat.

littlecodersh avatar littlecodersh commented on July 3, 2024

试一下这个程序,也显示全部都是0吗?

import itchat

itchat.auto_login()
chatrooms = itchat.get_chatrooms()
for chatroom in chatrooms:
    info = itchat.get_batch_contract(chatroom['UserName'])
    print info['OwnerUin'], info['PYQuanPin']

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

下午试..get_contract 没注意到

from itchat.

littlecodersh avatar littlecodersh commented on July 3, 2024

@1265858594

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

刚刚看
chatroomList 里面, 所有 OwnerUin 都是 0
memberList 里面,所有OwnerUin 也都是 0

from itchat.

littlecodersh avatar littlecodersh commented on July 3, 2024

@1265858594 这个程序打出来也全是0么?

import itchat

itchat.auto_login()
chatrooms = itchat.get_chatrooms()
for chatroom in chatrooms:
    info = itchat.get_batch_contract(chatroom['UserName'])
    print info['OwnerUin'], info['PYQuanPin']

from itchat.

pcloth avatar pcloth commented on July 3, 2024

在请教一下,关于定位唯一账号的问题。
1、
itchat.get_alias(username=msg['FromUserName'])
能否强制返回微信号而不是昵称或者备注?

2、
itchat.set_oplog(msg['FromUserName'],'测试用户ID')
设置备注名后,在用get_alias获取到的依然是昵称,不是备注名,需要重新运行机器人后才能拿到新的名字

环境是py 3.5.1

from itchat.

littlecodersh avatar littlecodersh commented on July 3, 2024

@pcloth 重开个issue,@一下Chyroc吧

from itchat.

chyroc avatar chyroc commented on July 3, 2024

设置备注名后,在用get_alias获取到的依然是昵称,不是备注名,需要重新运行机器人后才能拿到新的名字

@pcloth
这个问题应该是因为,启动机器人的时候设置了缓存联系人,所以就不更新联系人的信息了。

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

@littlecodersh 应该是,我没有去改动 OwnerUin

from itchat.

littlecodersh avatar littlecodersh commented on July 3, 2024

@1265858594 了解。
要不你清理一下sslkey,抓个包,带包带sslkey发我邮箱,我做个研究。
我这里几次测试都没有问题,另,网上找到的一个公开出来的返回包也没有这个问题:这里

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

@littlecodersh 请问什么是 sslkey ? 是 skey 那串 @crypto 开头的吗?

from itchat.

littlecodersh avatar littlecodersh commented on July 3, 2024

@1265858594 不好意思,我没说清楚
是抓包时需要用到的sslkey,具体在教程的Wireshark配置一节有。

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

@littlecodersh 感谢指导,最后的最后,终于找出问题
我自已程序里面里是用UserName 判断 @@开头的为讨论群
所以就变成了没有 OwnerUin ...
我也忘了为什么那时我会这样写, 现在改成跟 get_batch_contract 一样
就有 OwnerUin 了

from itchat.

littlecodersh avatar littlecodersh commented on July 3, 2024

@1265858594 哈哈,好的

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

@littlecodersh 灰常感谢

from itchat.

1265858594 avatar 1265858594 commented on July 3, 2024

补充一下,回想起当时为什麽使用 @@来判断群,
是因为使用 @@来判断群之後要用这个列表来获取实际的群列表,
这个前半段做好了,结果忘了做後半段获取实际的群列表。

from itchat.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.