def judge(self): # 获取该用户账户名 ownAccount = itchat.get_friends(update=True)[0]['UserName'] # 获取好友列表 friends_list = self.get_friends() # 获取群聊 chatroom = self.get_chatroom() # 获取群聊失败,发送失败信息 if chatroom is None: return FAILED else: for person in friends_list: if ownAccount == person['UserName']: continue r = itchat.add_member_into_chatroom( chatroom['UserName'], [person]) # 如果成功拉入群聊 # 表示对方还是好友 if r['BaseResponse']['ErrMsg'] == u'请求成功': # 获取拉入状态 # 3:为加入黑名单了 # 4:为被删除了 # 其他则仍是好友 status = r['MemberList'][0]['MemberStatus'] time.sleep(3) itchat.delete_member_from_chatroom( chatroom['UserName'], [person]) itchat.send( {3: u'该好友%s已经将你加入黑名单。' % (person['RemarkName'] or person['NickName']), 4: u'该好友%s已经将你删除。' % (person['RemarkName'] or person['NickName'])}.get(status, u'该好友%s仍旧与你是好友关系。' % (person['RemarkName'] or person['NickName'])), 'filehelper') time.sleep(5) return SUCCESS
def text_reply(msg): msgS = msg.text ''' print(msg['isAt']) print(msg['ActualNickName']) print(msg['Content']) ''' ''' if "@Stanford加群" in msg['Content']: replyS = get_response(msgS) if msg.actualNickName.count("@")>=2: msg.user.send(u'%s' % (replyS+'~想进群加我😊 ')) else: msg.user.send(u'@%s\u2005%s' % (msg.actualNickName, replyS+'~想进群加我😊 ')) ''' if msg['ActualNickName'] == "超然": content = msg['Content'] if (content[0] == "@"): arr = content.rsplit(None, 1) if "广告" in arr[1]: delUser = searchUser(msg['User']['MemberList'], arr[0]) itchat.delete_member_from_chatroom(msg['FromUserName'], [{ 'UserName': delUser }]) msg.user.send('谢谢,已清除~😊')
def get_friend_status(friend): global ownAccount # 推荐的名片是自己 if friend['UserName'] == ownAccount: return u'检测到本人账号。' # 推荐的名片是你没加的人 elif itchat.search_friends(userName=friend['UserName']) is None: return u'该用户不在你的好友列表中。' else: # 获取群聊 chatroom = get_chatroom() # 获取群聊失败,发送失败消息 if chatroom is None: return CHATROOM_MSG # 将要判断的好友放入群聊中 r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend]) # 如果成功拉入群聊 # 表示对方还是好友 if r['BaseResponse']['ErrMsg'] == u'请求成功': status = r['MemberList'][0]['MemberStatus'] itchat.delete_member_from_chatroom(chatroom['UserName'], [friend]) return { 3: u'该好友已经将你加入黑名单。', 4: u'该好友已经将你删除。', }.get(status, u'该好友仍旧与你是好友关系。') else: return u'无法获取好友状态,预计已经达到接口调用限制。'
def get_friend_status(friend): ownAccount = itchat.get_friends(update=True)[0] if friend['UserName'] == ownAccount['UserName']: return u'Own account' elif itchat.search_friends(userName=friend['UserName']) is None: return u'Not a friend' else: room = chatroom or get_chatroom() r = itchat.add_member_into_chatroom(room['UserName'], [friend]) # r = itchat.update_chatroom(chatroom) if r['BaseResponse']['ErrMsg'] == u'请求成功': if len(r['MemberList']) == 0: return u'No member in the chatroom' else: status = r['MemberList'][0]['MemberStatus'] itchat.delete_member_from_chatroom(room['UserName'], [friend]) return { 3: u'该好友已经将你加入黑名单。', 4: u'该好友已经将你删除。', }.get(status, u'该好友仍旧与你是好友关系。') # if status == 3: # return u'该好友已经将你加入黑名单。' # elif status == 4: # return u'该好友已经将你删除。' # else: # return get(status) + u'该好友仍旧与你是好友关系。' else: return r['BaseResponse']['ErrMsg'] + u'无法获取好友状态,预计已经达到接口调用限制'
def get_friend_status(friend): own_account = itchat.get_friends(update=True)[0] if friend['UserName'] == own_account['UserName']: return u'检测到本人账号。' elif itchat.search_friends(userName=friend['UserName']) is None: return u'该用户不在你的好友列表中。' else: chatroom = CHATROOM or get_chatroom() if chatroom is None: return CHATROOM_MSG r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend]) if r['BaseResponse']['ErrMsg'] == '': status = r['MemberList'][0]['MemberStatus'] itchat.delete_member_from_chatroom(chatroom['UserName'], [friend]) return {3: u'该好友已经将你加入黑名单。', 4: u'该好友已经将你删除。',}.get(status, u'该好友仍旧与你是好友关系。') @itchat.msg_register(itchat.content.CARD) def get_friend(msg): if msg['ToUserName'] != 'filehelper': return friendStatus = get_friend_status(msg['RecommendInfo']) itchat.send(friendStatus, 'filehelper') itchat.auto_login(True) itchat.send(HELP_MSG, 'filehelper') itchat.run()
def get_friend_status(friend): ownAccount = itchat.get_friends(update=True)[0] if friend['UserName'] == ownAccount['UserName']: return u'Own account' elif itchat.search_friends(userName=friend['UserName']) is None: return u'Not a friend' else: room = chatroom or get_chatroom() r = itchat.add_member_into_chatroom(room['UserName'], [friend]) # r = itchat.update_chatroom(chatroom) if r['BaseResponse']['ErrMsg'] == u'请求成功': if len(r['MemberList']) == 0: return u'No member in the chatroom' else: status = r['MemberList'][0]['MemberStatus'] itchat.delete_member_from_chatroom(room['UserName'], [friend]) return { 3: u'该好友已经将你加入黑名单。', 4: u'该好友已经将你删除。', }.get(status,u'该好友仍旧与你是好友关系。') # if status == 3: # return u'该好友已经将你加入黑名单。' # elif status == 4: # return u'该好友已经将你删除。' # else: # return get(status) + u'该好友仍旧与你是好友关系。' else: return r['BaseResponse']['ErrMsg'] + u'无法获取好友状态,预计已经达到接口调用限制'
def check_friends(friends, chatroom, num): deleted_list = [] bad_list = [] left, deleted, bad = num for friend in friends[1:]: print '\n', u"昵称:", friend['NickName'], u' 备注:', friend[ 'RemarkName'], u' 签名:', friend['Signature'] time.sleep(60) r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend]) print r if r['BaseResponse']['Ret'] == 0: status = r['MemberList'][0]['MemberStatus'] itchat.delete_member_from_chatroom(chatroom['UserName'], [friend]) if status == 3: bad = bad + 1 bad_list.append(friend['NickName']) elif status == 4: deleted = deleted + 1 deleted_list.append(friend['NickName']) else: left = left + 1 print { 3: u'该好友已经将你加入黑名单。', 4: u'该好友已经将你删除。', }.get(status, u'该好友仍旧与你是好友关系。') print "" print "" print u"您还剩{}个好友".format(left) print u"惨惨惨,有{}个好友将您删除".format(deleted), u", 分别是", deleted_list print u"牛逼啊,有{}个好友将您拉黑".format(bad), u", 分别是", bad_list
def change_group(): meblist=itchat.get_friends()[1:] # 创建群聊 chatroom=itchat.create_chatroom(meblist,'群聊名称') # 删除群聊内的用户 itchat.delete_member_from_chatroom(chatroom,meblist[0]) # 增加用户 itchat.add_member_into_chatroom(chatroom,meblist[0])
def delete_unchecked_member(memberList): if datetime.datetime.now().hour < 23: return '请在23时以后清理未签到成员!' itchat.get_chatrooms(update=True) chatroom = itchat.search_chatrooms('100days')[0] print(chatroom) itchat.update_chatroom(chatroom['UserName'], detailedMember=True) itchat.delete_member_from_chatroom(chatroom['UserName'], memberList) return '未签到成员清除完毕!'
def chk_del_friend(): chartroomUserName = itchat.get_friends()[0]['UserName'] for friend in itchat.get_friends()[1:]: r = itchat.add_member_into_chatroom(chartroomUserName, [friend]) if r['BaseResponse']['ErrMsg'] == '': itchat.delete_member_from_chatroom(chartroomUserName, [friend]) print(r['MemberCount']) if r['MemberCount'] == 0: continue status = r['MemberList'][0]['MemberStatus'] if status == 3: print(friend, '该好友已经将你加入黑名单。') elif status == 4: print(friend, '该好友已经将你删除。')
def get_friend_status(group_name): chatroomName = group_name itchat.get_chatrooms(update=True) chatrooms = itchat.search_chatrooms(name=chatroomName) friend = itchat.get_friends()[1] r = itchat.add_member_into_chatroom(chatrooms[0]['UserName'], [friend]) if r['BaseResponse']['ErrMsg'] == '': status = r['MemberList'][0]['MemberStatus'] itchat.delete_member_from_chatroom(chatrooms[0]['UserName'], [friend]) print({ 3: u'该好友已经将你加入黑名单。', 4: u'该好友已经将你删除。', }.get(status, u'该好友仍旧与你是好友关系。')) else: print(u'无法获取好友状态,预计已经达到接口调用限制。')
def TestFriends(friend, chatroomUserName): req = itchat.add_member_into_chatroom(chatroomUserName, [friend], useInvitation=True) if req['BaseResponse']['ErrMsg'] == u'请求成功': status = req['MemberList'][0]['MemberStatus'] print('{}: {}'.format((friend['DisplayName'] or friend['NickName']), { 3: u'该好友已经将你加入黑名单', 4: u'该好友已经将你删除' }.get(status, u'该好友仍旧与你是好友关系'))) else: print('{}: {}'.format((friend['DisplayName'] or friend['NickName']), req)) itchat.delete_member_from_chatroom(chatroomUserName, [friend])
def get_friends_status(friend): ownAccount = itchat.get_friends(update=True)[0] if friend['UserName'] == ownAccount['UserName']: return u'检测到本人账号。' elif itchat.search_friends(userName=friend['UserName']) is None: return u'该用户不在你的好友列表中。' else: chatroom = CHATROOM or get_chatroom() if chatroom is None: return CHATROOM_MSG r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend]) if r['BaseResponse']['ErrMsg'] == '': status = r['MemberList'][0]['MemberStatus'] itchat.delete_member_from_chatroom(chatroom['UserName'],[friend]) return { 3: u'该好友已经将你加入黑名单。', 4: u'该好友已经将你删除。', }.get(status, u'该好友仍旧与你是好友关系。') else: return u'无法获取好友状态,预计已经达到接口调用限制。'
def get_chatroom(self): chatrooms = itchat.search_chatrooms(name=CHATROOM_NAME) # 搜索群聊是否已存在 # 存在则返回 # 不存在则创建 if chatrooms: return chatrooms[0] else: friends = itchat.get_friends()[1:3] # 创建群聊 r = itchat.create_chatroom( friends, topic=CHATROOM_NAME) itchat.delete_member_from_chatroom(r['ChatRoomName'], [friends[0], friends[1]]) if r['BaseResponse']['ErrMsg'] == u'请求成功': return {'UserName': r['ChatRoomName']} else: return None
def send_kickout(from_username, member_username, kick_out_reply_msg_models=None, msg_content=None): from wxbot.bot_manager import BotManager from models.robot import Robot if member_username in ChatRoomMsg.username_white_list: logger.info('{0} in the white list'.format(member_username)) return chatroom = itchat.search_chatrooms(userName=from_username) if chatroom is None: logger.error('chat room not found: {0}'.format(from_username)) return if not chatroom.get('IsOwner', 0): logger.debug('is not my own chatroom: {0}'.format( chatroom.get('NickName'))) return contact_info = utils.search_dict_list(chatroom['MemberList'], 'UserName', member_username) if contact_info is None: logger.error('member {0} not found int chatroom {1}'.format( from_username, member_username)) return if not BotManager.robot_model.check_function( Robot.FUNCTION_TYPE_KICK_OUT): logger.warn('robot {0} kick out closed'.format( BotManager.robot_model.Id)) return if kick_out_reply_msg_models is None: kick_out_reply_msg_models = ReplyManager.get_kick_member_reply_msg( msg_content) if kick_out_reply_msg_models is None and len( kick_out_reply_msg_models) == 0: logger.warn('kickout reply msg is None') return ChatRoomMsg.send_chatroom_msg(kick_out_reply_msg_models, from_username, contact_info['NickName'], True) itchat.delete_member_from_chatroom(from_username, [contact_info])
def delUser(roomId, content, ADMIN): if (roomId is None): return #ret = itchat.delete_member_from_chatroom(roomId,[{'UserName':searchUser(getChatroomMemberList(roomId),content)}]) content = content.replace(ADMIN, '') ret = itchat.delete_member_from_chatroom( roomId, searchUser(getChatroomMemberList(roomId), content)) if (ret): itchat.send('谢谢群主,为保持群内清洁,已清除广告号~😊', toUserName=roomId)
def handle_group_pictures(msg): ''' :return: ''' # 自己通过手机微信发送给别人的消息(文件传输助手除外)不作处理。 if msg['FromUserName'] == config.get('wechat_uuid') and msg['ToUserName'] != FILEHELPER: return # 判断是否来自指定群 uuid = msg.fromUserName # 群 uid # print(f'''这个群聊的id是{uuid}''') # ated_uuid = msg.actualUserName # 发送人的用户uuid # ated_name = msg.actualNickName # 发送人群里的名称 # file_name = msg['FileName'] # 文件默认文件名 msg.download(msg.fileName) if is_white_group(uuid): if QRcode_detection(msg.fileName): itchat.delete_member_from_chatroom(msg.FromUserName, [{'UserName': msg.ActualUserName}]) del_pic(msg.fileName)
def get_friend_status(friend): ownAccount = itchat.get_friends(update=True)[0] if friend['UserName'] == ownAccount['UserName']: return u'检测到本人账号。' elif itchat.search_friends(userName=friend['UserName']) is None: return u'该用户不在你的好友列表中。' else: chatroom = CHATROOM or get_chatroom() if chatroom is None: return CHATROOM_MSG r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend]) if r['BaseResponse']['ErrMsg'] == '': status = r['MemberList'][0]['MemberStatus'] itchat.delete_member_from_chatroom(chatroom['UserName'], [friend]) return { 3: u'该好友已经将你加入黑名单。', 4: u'该好友已经将你删除。', }.get(status, u'该好友仍旧与你是好友关系。') else: return u'无法获取好友状态,预计已经达到接口调用限制。'
def get_friend_status(friend, ownAccount, chatroom): if friend['UserName'] == ownAccount['UserName']: return u'检测到本人账号。' elif itchat.search_friends(userName=friend['UserName']) is None: return u'该用户不在你的好友列表中。' else: if chatroom is None: return CHATROOM_MSG try: r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend]) if u'成功' in r['BaseResponse']['ErrMsg']: status = r['MemberList'][0]['MemberStatus'] itchat.delete_member_from_chatroom(chatroom['UserName'], [friend]) return { 3: u'好友{}已经将你加入黑名单。'.format(friend['NickName']), 4: u'好友{}已经将你删除。'.format(friend['NickName']), }.get(status, None) else: return u'无法获取好友状态,预计已经达到接口调用限制。' except Exception as e: print(e.message, traceback.format_exc())
def delete_member_from_chatroom(chatroom_user_name, member_list): ''' deletes members from chatroom for deleting - you can't delete yourself - if so, no one will be deleted - strict-limited frequency for options - chatroom_user_name: 'user_name' key of chatroom info dict - member_list: list of members' info dict it is defined in components/contact.py ''' return itchat.delete_member_from_chatroom(chatroom_user_name, member_list)
def get_friend_status(self): """获取好友状态""" own_account = itchat.get_friends(update=True)[0] friends_total_number = len(itchat.get_friends()) for num in range(friends_total_number): friend = itchat.get_friends()[num] if friend['UserName'] == own_account['UserName']: return "This account is not checked for my account." if itchat.search_friends(userName=friend['UserName']) is None: return "The user is not exist." chatroom = self.chatroom or self.get_chatroom() if chatroom is None: return '无法自动创建群聊请手动创建 | 创建后请将群聊保存到通讯录' room = itchat.add_member_into_chatroom(chatroom['UserName'], [friend]) if room['BaseResponse']['ErrMsg'] == '': friend_status = room['MemberList'][0]['MemberStatus'] itchat.delete_member_from_chatroom(chatroom['UserName'], [friend]) return self.status_dict.get(friend_status, '该好友仍旧与你是好友关系') return u'无法获取好友状态,预计已经达到接口调用限制。'
def handle_groups_message(msg): """ 处理群消息, :param msg: :return: """ uuid = msg.fromUserName # 群 uid ated_uuid = msg.actualUserName # 艾特你的用户的uuid ated_name = msg.actualNickName # 艾特你的人的群里的名称 # print(msg) # 自己通过手机端微信发出的消息不作处理 if ated_uuid == config.get('wechat_uuid'): return conf = config.get('group_helper_conf') text = msg['Text'] # 发送到群里的消息。 # 如果是我们的群,不是管理组人员发送的消息,且长度大于30,直接踢 # 我们认为 wechat 中一个人的聊天长度不会超过30, # 特别是对于一个优惠券群来说, # 一个可跟你说30个字以上的又如此“谆谆教导”的人值得被踢 # 对于广告,宁可错杀不放过一个,随有极端但不菲是一种办法 # TODO 此处需要文本审核,但市面上的文本审核都付费,如有免费的请及时通知我 group_admins = conf.get('group_admin') if is_white_group(uuid) and (ated_name not in group_admins): if len(str(text)) >= 30: itchat.delete_member_from_chatroom(uuid, [{'UserName': msg.ActualUserName}]) if not conf.get('is_open'): return # 如果开启了 『艾特才回复』,而群用户又没有艾特你。走垃圾分类 if conf.get('is_at') and not msg.isAt: return is_all = conf.get('is_all', False) group_uuids = conf.get('group_name_black_list') if is_all else conf.get('group_name_white_list') # 开启回复所有群,而群组是黑名单,不处理消息 if is_all: for group_name in group_uuids: chatrooms = itchat.search_chatrooms(name=f'''{group_name}''') # print(chatrooms) for room in chatrooms: if uuid == room['UserName']: return # 未开启回复所有群,而群组不是白名单,不处理消息 in_white_flag = False if not is_all: for group_name in group_uuids: chatrooms = itchat.search_chatrooms(name=f'''{group_name}''') for room in chatrooms: if uuid == room['UserName']: in_white_flag = True if not in_white_flag: return # 去掉 at 标记 text = re.sub(at_compile, '', text) reply_text = get_auto_reply(text, ated_uuid) # 获取自动回复 if reply_text: # 如内容不为空,回复消息 reply_text = common_msg.format(ated_name=ated_name, text=reply_text) itchat.send(reply_text, uuid) # print('回复{}:{}'.format(ated_name, reply_text)) else: print('自动回复失败\n')
import itchat # 先登录 itchat.login() chatroomUserName = '******' friend = itchat.get_friends()[1] r = itchat.add_member_into_chatroom(chatroomUserName, [friend]) if r['BaseResponse']['ErrMsg'] == '': status = r['MemberList'][0]['MemberStatus'] itchat.delete_member_from_chatroom(chatroom['UserName'], [friend]) return { 3: u'该好友已经将你加入黑名单。', 4: u'该好友已经将你删除。', }.get(status, u'该好友仍旧与你是好友关系。')
# -*- coding:utf-8 -*- # 肖豪 # 查找微信被那些好友删除 """ 外部库:itchat """ import itchat # 为了让修改程序不用多次扫码,使用热启动 itchat.auto_login(hotReload=True) sChatRoomName = "好友删除检测临时群" iMaxNum = 10 lstFrd = itchat.get_friends(update=True)[1:33] lstTmp = lstFrd[:iMaxNum] lstFrd = lstFrd[iMaxNum:] dResult = itchat.create_chatroom(lstTmp, sChatRoomName) chatroomUserName = dResult["ChatRoomName"] itchat.delete_member_from_chatroom(chatroomUserName, lstTmp) while lstFrd: lstTmp = lstFrd[:iMaxNum] lstFrd = lstFrd[iMaxNum:] r = itchat.add_member_into_chatroom(chatroomUserName, lstTmp) # print(r) itchat.delete_member_from_chatroom(chatroomUserName, lstTmp)
print(test) #itchat.run() '''群聊的搜索方法为search_chatrooms,有两种搜索方法: 1. 获取特定UserName的群聊 2. 获取名字中含有特定字符的群聊 如果两项都做了特定,将会仅返回特定UserName的群聊,下面是示例程序:''' # 获取特定UserName的群聊,返回值为一个字典 # itchat.search_chatrooms(userName='******') # 获取名字中含有特定字符的群聊,返回值为一个字典的列表 itchat.search_chatrooms(name='读书会(公测)') # 以下方法相当于仅特定了UserName # itchat.search_chatrooms(userName='******', name='LittleCoder') '''群聊用户列表的获取方法为update_chatroom。 群聊在首次获取中不会获取群聊的用户列表,所以需要调用该命令才能获取群聊的成员 该方法需要传入群聊的UserName,返回特定群聊的用户列表''' memberList = itchat.update_chatroom('bcdefg67') '''创建群聊、增加、删除群聊用户的方法如下所示: 由于之前通过群聊检测是否被好友拉黑的程序,目前这三个方法都被严格限制了使用频率 删除群聊需要本账号为群管理员,否则会失败 将用户加入群聊有直接加入与发送邀请,通过useInvitation设置 超过40人的群聊无法使用直接加入的加入方式,特别注意''' memberList = itchat.get_friends()[1:] # 创建群聊,topic键值为群聊名 chatroomUserName = itchat.create_chatroom(memberList, 'test chatroom') # 删除群聊内的用户 itchat.delete_member_from_chatroom(chatroomUserName, memberList[0]) # 增加用户进入群聊 itchat.add_member_into_chatroom(chatroomUserName, memberList[0], useInvitation=False)