def init_wechat(): """ 初始化微信所需数据 """ set_system_notice('登录成功') # conf = get_yaml() itchat.get_friends(update=True) # 更新好友数据。 itchat.get_chatrooms(update=True) # 更新群聊数据。 # 从config copy ,用于保存新的接口内容。 myset = config.copy() # start---------------------------处理自动回复好友---------------------------start relay = myset.get('auto_relay_info') if relay.get('is_auto_relay'): auto_reply_uuids = [] for name in relay.get('auto_reply_names'): if name.lower() in FILEHELPER_MARK: # 判断是否文件传输助手 if FILEHELPER not in reply_userNames: auto_reply_uuids.append(FILEHELPER) continue friend = get_friend(name) if friend: auto_reply_uuids.append(friend['UserName']) else: print('自动回复中的好友昵称『{}』有误。'.format(name)) relay['auto_reply_uuids'] = set(auto_reply_uuids) print('已开启图灵自动回复...') # end---------------------------处理自动回复好友---------------------------end alarm = myset.get('alarm_info') alarm_dict = {} if alarm.get('is_alarm'): for gi in alarm.get('girlfriend_infos'): ats = gi.get('alarm_timed') if not ats: continue uuid_list = [] # start---------------------------处理好友---------------------------start friends = gi.get('wechat_name') if isinstance(friends, str): friends = [friends] if isinstance(friends, list): for name in friends: if name.lower() in FILEHELPER_MARK: # 判断是否文件传输助手 uuid_list.append(FILEHELPER) continue name_info = get_friend(name) if not name_info: print('用户昵称{}无效'.format(name)) else: uuid_list.append(name_info['UserName']) # end---------------------------处理好友---------------------------end # start---------------------------群组处理---------------------------start group_names = gi.get('group_name') if isinstance(group_names, str): group_names = [group_names] if isinstance(group_names, list): for name in group_names: name_info = get_group(name) if not name_info: print('定时任务中的群聊名称『{}』有误。' '(注意:必须要把需要的群聊保存到通讯录)'.format(name)) else: uuid_list.append(name_info['UserName']) # end---------------------------群组处理---------------------------end # start---------------------------定时处理---------------------------start if isinstance(ats, str): ats = [ats] if isinstance(ats, list): for at in ats: times = timeCompile.findall(at) if not times: print('时间{}格式出错'.format(at)) continue hour, minute = int(times[0][0]), int(times[0][1]) temp_dict = { 'hour': hour, 'minute': minute, 'uuid_list': uuid_list } temp_dict.update(gi) alarm_dict[md5_encode(str(temp_dict))] = temp_dict # end---------------------------定时处理---------------------------end alarm['alarm_dict'] = alarm_dict # 将解析的数据保存于config中。 config.update(myset) # print(json.dumps(alarm_dict, ensure_ascii=False)) # 提醒内容不为空时,启动定时任务 if alarm_dict: init_alarm(alarm_dict) # 初始化定时任务
def init_wechat_config(): """ 初始化微信所需数据 """ # print('初始化微信所需数据开始..') # 从config copy ,用于保存新的接口内容。 myset = config.copy() print('=' * 80) # start---------------------------处理自动回复好友---------------------------start reply = myset.get('auto_reply_info') if reply.get('is_auto_reply'): if reply.get('is_auto_reply_all'): auto_reply_list_key = 'auto_reply_black_list' auto_reply_list_uuid_name = 'auto_reply_black_uuids' else: auto_reply_list_key = 'auto_reply_white_list' auto_reply_list_uuid_name = 'auto_reply_white_uuids' auto_reply_uuids_list = [] for name in reply.get(auto_reply_list_key): if not name.strip(): continue if name.lower() in FILEHELPER_MARK: # 判断是否文件传输助手 auto_reply_uuids_list.append(FILEHELPER) continue friend = get_friend(name) if friend: auto_reply_uuids_list.append(friend['UserName']) else: print('自动回复中的好友昵称『{}』有误。'.format(name)) reply[auto_reply_list_uuid_name] = set(auto_reply_uuids_list) # print('已开启图灵自动回复...') # end---------------------------处理自动回复好友---------------------------end # start ----------------------------------- 群功能初始化 ----------------------------------- start helper = myset.get('group_helper_conf') if helper.get('is_open'): if helper.get('is_all', False): group_list_key = 'group_name_black_list' group_list_uuid_name = 'group_black_uuids' else: group_list_key = 'group_name_white_list' group_list_uuid_name = 'group_white_uuids' group_uuid_list = [] for name in helper.get(group_list_key): if not name.strip(): continue group = get_group(name) if group: group_uuid_list.append(group['UserName']) else: print('群助手中的群聊名称『{}』有误。' '(注意:必须要把需要的群聊保存到通讯录)'.format(name)) helper[group_list_uuid_name] = set(group_uuid_list) # end ----------------------------------- 群功能初始化 ----------------------------------- end alarm = myset.get('alarm_info') alarm_dict = {} if alarm.get('is_alarm'): for gi in alarm.get('girlfriend_infos'): ats = gi.get('alarm_timed') if not ats: continue uuid_list = [] nickname_list = [] # start---------------------------处理好友---------------------------start friends = gi.get('wechat_name') if isinstance(friends, str): friends = [friends] if isinstance(friends, list): for name in friends: if name.lower() in FILEHELPER_MARK: # 判断是否文件传输助手 uuid_list.append(FILEHELPER) nickname_list.append(name) continue name_info = get_friend(name) if not name_info: print('定时提醒中的好友昵称『{}』无效'.format(name)) else: uuid_list.append(name_info['UserName']) nickname_list.append(name) # end---------------------------处理好友---------------------------end # start---------------------------群组处理---------------------------start group_names = gi.get('group_name') if isinstance(group_names, str): group_names = [group_names] if isinstance(group_names, list): for name in group_names: name_info = get_group(name) if not name_info: print('定时任务中的群聊名称『{}』有误。' '(注意:必须要把需要的群聊保存到通讯录)'.format(name)) else: uuid_list.append(name_info['UserName']) nickname_list.append(name) # end---------------------------群组处理---------------------------end # start---------------------------定时处理---------------------------start if isinstance(ats, str): ats = [ats] if isinstance(ats, list): for at in ats: times = TIME_COMPILE.findall(at) if not times: print('时间{}格式出错'.format(at)) continue hour, minute = int(times[0][0]), int(times[0][1]) temp_dict = {'hour': hour, 'minute': minute, 'uuid_list': uuid_list, 'nickname_list': nickname_list} temp_dict.update(gi) alarm_dict[md5_encode(str(temp_dict))] = temp_dict # end---------------------------定时处理---------------------------end alarm['alarm_dict'] = alarm_dict # 将解析的数据保存于 config 中。 config.update(myset) # print(json.dumps(alarm_dict, ensure_ascii=False)) # print('初始化微信所需数据结束..') log_all_config()