Bläddra i källkod

自动添加好友

develop
H Vs 2 månader sedan
förälder
incheckning
497f4b1241
3 ändrade filer med 53 tillägg och 4 borttagningar
  1. +43
    -3
      app.py
  2. +1
    -1
      resources/messages_resource.py
  3. +9
    -0
      wechat/gewe_chat.py

+ 43
- 3
app.py Visa fil

@@ -87,15 +87,55 @@ def fetch_and_save_contacts2():
time.sleep(3600*1)


def auto_contacts_from_chatroom_id():
print('自动从群添加好友')
def auto_contacts_from_chatroom():
logger.info('自动从群添加好友')
wxchat=gewe_chat.wxchat
while True:
login_keys = list(redis_helper.redis_helper.client.scan_iter(match='__AI_OPS_WX__:LOGININFO:*'))
logger.info(f"Fetching login keys: {login_keys}")

# 遍历每一个获取到的登录键
for k in login_keys:
r= redis_helper.redis_helper.get_hash(k)
# print(r)
token_id = r.get('tokenId')
app_id = r.get('appId')
nickname=r.get('nickName')
wxid = r.get('wxid')
status=r.get('status')
if status=='1':
c = wxchat.get_wxchat_config_from_cache(app_id)
contacts = wxchat.get_contacts_brief_from_cache(wxid)
contact_wxids = [c.get('userName') for c in contacts]

chatrooms = c.get('addContactsFromChatroomIdWhiteList',[])
for chatroom_id in chatrooms:
chatroom = wxchat.get_group_info_from_cache(wxid,chatroom_id)
chatroom_nickname=chatroom.get('nickName')

chatroot_member_list=chatroom.get('memberList',[])
contact_set = set(contact_wxids)
remaining_chatroot_members = [x for x in chatroot_member_list if x.get('wxid') not in contact_set]
for m in remaining_chatroot_members:
ret,msg,data=wxchat.add_group_member_as_friend(token_id,app_id,chatroom_id,m.get('wxid'),f'您好,我是来自{chatroom_nickname}群的{nickname}')
logger.info(f'{nickname} 向 {chatroom_nickname}群的{m.get('nickname')}发送好友邀请 {msg}')
time.sleep(3)
time.sleep(3)
else:
logger.info(f'微信ID {wxid} 未登录 {app_id} ,群成员不能定时定时')
time.sleep(3)

#time.sleep(60*10)
time.sleep(3600*24)

def start_wxchat_thread():
# gewe_chat.start()
scan_wx_login_info()
# 启动同步联系人线程
threading.Thread(target=fetch_and_save_contacts2).start()
#threading.Thread(target=auto_contacts_from_chatroom).start()





+ 1
- 1
resources/messages_resource.py Visa fil

@@ -729,7 +729,7 @@ def handle_mod_contacts(token_id,app_id,wxid,msg_data):
check_relation_status=first_item.get('relation')
logger.info(f'{wxid} 好友 {contact_wxid} 关系检查:{check_relation_status}')
if check_relation_status != 0:
gewe_chat.wxchat.delete_contacts_brief_from_cache(token_id, app_id, wxid, [contact_wxid])
gewe_chat.wxchat.delete_contacts_brief_from_cache(wxid, [contact_wxid])
logger.info(f'好友关系异常:{check_relation_status},删除好友 {contact_wxid} 信息')
# ret,msg,contacts_list = gewe_chat.wxchat.fetch_contacts_list(token_id, app_id)


+ 9
- 0
wechat/gewe_chat.py Visa fil

@@ -895,6 +895,15 @@ class GeWeChatCom:
cache = redis_helper.redis_helper.get_hash(hash_key)
groups=[json.loads(v) for v in cache.values()]
return groups
def get_group_info_from_cache(self, wxid,chatroom_id)->dict:
"""
获取群信息保存到 Redis 缓存。
"""
hash_key = f"__AI_OPS_WX__:GROUPS_INFO:{wxid}"
cache = redis_helper.redis_helper.get_hash_field(hash_key,chatroom_id)
groups=json.loads(cache) if cache else {}
return groups

def get_wxchat_config_from_cache(self, wxid):
"""


Laddar…
Avbryt
Spara