def get_msg_and_reply(msg): create_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(msg['CreateTime']))) rec_msg = msg['Content'].strip() is_bot_reply = get_bot_setting("is_bot_reply") if is_bot_reply == "error": set_bot_setting("is_bot_reply", "False") if msg['User']['NickName'] == my_name: if rec_msg == "stop": set_bot_setting("is_bot_reply", "False") print("自动回复已经停止!") write_log("Admin(%s):自动回复辅助功能关闭成功!" % my_name, True) elif rec_msg == "start": set_bot_setting("is_bot_reply", "True") print("自动回复功能开启") write_log("Admin(%s):自动回复辅助功能开启成功!" % my_name, True) elif rec_msg == "logout": exit_wechat() else: print("新消息@ (%s)对方:%s 内容:%s (自己的消息不会自动回复!)" % (create_time, my_name, rec_msg)) return from_user_name = msg['FromUserName'] if is_bot_reply == "True": name = "" for u in users: if from_user_name == u['user_name']: name = u['rel_name'] if u['rel_name'] else u['nick_name'] break if name: if rec_msg == '1': duanzi = get_duanzi()[0] a_id = duanzi[0] article = "(*^__^*) " + duanzi[1] write_log("To(%s):的笑话,笑话id:%s" % (name, a_id), True) return article elif rec_msg == '2': result = get_movie()[0] m_id = result[0] cn_name = result[1] en_name = result[2] director = result[3] actors = result[4] movie_type = result[5] box_count = result[6] duration = result[7] release_time = result[8] zhishi = result[9] distributor = result[11] img_url = result[12] reply_msg = "电影推荐:\n中文名:%s\n英文名:%s\n导演:%s\n主演:%s\n电影类型:%s\n总票房:%s\n时长:%s\n上映时间:%s\n制式:%s\n发行:%s\n海报:%s" % ( cn_name, en_name, director, actors, movie_type, box_count, duration, release_time, zhishi, distributor, img_url) write_log("To(%s):的电影推荐,电影cid:%s" % (name, m_id), True) return reply_msg elif rec_msg == '3': write_log("To(%s):查看院线热映电影!" % name, True) reply_msg = "查看院线热映电影\n查看所有热映电影票房等信息,请回复:31\n查找某电影在映信息,回复:32@(电影名)\ 如:32@我和我的祖国\n查看国内今天当前总票房,回复:33\n查看当前热映电影,回复:34" return reply_msg elif rec_msg == '31': box = Box() movies = box.get_movies() if not movies == 'error': total_box = movies[0]['total_box'] server_time = movies[0]['server_time'] del movies[0] reply_msg = '数据时间:%s\n今日实时:%s万\n\n' % (server_time, total_box) for movie in movies: res_msg = "电影名:%s\n上映天数:%s\n今日票房:%s万\n总票房:%s\n票房占比:%s\n排片场次:%s\n排片比:\ %s\n均场人数:%s\n上座率:%s\n\n" % ( movie['name'], movie['release_info'], movie['box_info'], movie['sum_box_info'], movie['box_rate'], movie['show_info'], movie['show_rate'], movie['avg_show_view'], movie['avg_seat_view']) reply_msg += res_msg write_log("To(%s):查看今日热映电影数据" % name, True) return reply_msg else: write_log("To(%s):查看所有热映电影数据异常!" % name, True) return "网络异常,请稍后重试!" elif rec_msg.startswith('32'): rec_msg.strip() words = rec_msg.split("@") if len(words) == 2: if not words[1] == '': box = Box() movies = box.find_movies(words[1]) if not movies == "error": if movies: res_msg = "" for movie in movies: res_msg += "电影名:%s\n上映天数:%s\n今日票房:%s万\n总票房:%s\n票房占比:%s\n排片场次:%s\n \ 排片比:%s\n均场人数:%s\n上座率:%s\n\n" % ( movie['name'], movie['release_info'], movie['box_info'], movie['sum_box_info'], movie['box_rate'], movie['show_info'], movie['show_rate'], movie['avg_show_view'], movie['avg_seat_view']) write_log( "To(%s):查看“%s”关键字的电影票房数据!" % (name, words[1]), True) return res_msg else: write_log( "To(%s):查看“%s”关键字的电影票房数据异常!" % (name, words[1]), True) return "网络异常,请稍后重试!" return "自动回复消息:\n出错:\n1、没有按照格式输入\n2、该电影未上映或已下映或没有改电影\n3、电影名称输入有误" elif rec_msg == '33': box = Box() info = box.get_count_box() if not info == "error": reply_msg = "截止时间:%s\n当日当前总票房:%s万" % (info['server_time'], info['total_box']) write_log("To(%s):查看今日总票房!" % name, True) return reply_msg else: write_log("To(%s):的查看所有热映电影数据异常!" % name, True) return "网络异常,请稍后重试!" elif rec_msg == '34': box = Box() movies = box.get_online_movies() if not movies == "error": reply_msg = "今日共有%d部电影热映中\n" % len(movies) for movie in movies: reply_msg += movie + "\n" write_log("To(%s):查看今日所有热映电影名称!" % name, True) return reply_msg else: write_log("To(%s):的查看所有热映电影数据异常!" % name, True) return "网络异常,请稍后重试!" elif rec_msg == '4': reply_msg = "查看所有即将上映电影,请回复:41\n\n查询即将上映电影,请回复:42@(电影名) 如42@中国机长" return reply_msg elif rec_msg == '41': coming = MovieComing() movies = coming.get_all_movies() if movies == 'error': log_msg = "To(%s):的查询所有机上上映电影错误" % name reply_msg = "自动回复消息:网络错误,请稍后重试!" elif movies: log_msg = "To(%s):查询所有即将上映的电影成功" % name reply_msg = "" for movie in movies: reply_msg += "电影名:%s\n类型:%s\n地区:%s\n上映时间:%s\n\n" % ( movie['name'], movie['type'], movie['location'], movie['movie_time']) else: log_msg = "To(%s):查询所有即将上映的电影,没有找到数据!" reply_msg = "自动回复消息:暂时没有数据!" write_log(log_msg, True) return reply_msg elif rec_msg.startswith("42"): if rec_msg.startswith("42@"): words = rec_msg.split("@") if not words[1] == "": coming = MovieComing() movies = coming.find_movies(words[1]) if movies == "error": write_log("To(%s):查询关键字即将上映电影错误" % name, True) return "自动回复消息:网络错误,请稍后重试!" log_msg = "To(%s):查找“%s”关键字的即将上映电影成功" % (name, words[1]) reply_msg = "" for movie in movies: reply_msg += "电影名:%s\n类型:%s\n地区:%s\n上映时间:%s\n\n" % ( movie['name'], movie['type'], movie['location'], movie['movie_time']) write_log(log_msg, True) return reply_msg log_msg = "To(%s):查找关键字的即将上映电影失败,输入:%s" % (name, rec_msg) write_log(log_msg, True) return "自动回复消息:\n出错:\n1、没有按照格式输入\n2、没有该电影的即将上映信息" elif rec_msg.startswith('5'): if rec_msg.startswith('5@'): words = rec_msg.split('@') if not words[1] == '': trans = Translator( service_urls=['translate.google.cn']) text = trans.translate(words[1]).text reply_msg = "原文:%s\n译文:%s" % (words[1], text) write_log( "To(%s): 翻译,内容:%s 译文:%s" % (name, words[1], text), True) else: reply_msg = "请输入要翻译内容!" write_log( "To(%s):翻译@错误,未输入需要翻译的内容,对方的输入:%s!" % (name, rec_msg), True) else: reply_msg = '中英文翻译请按照“5@(翻译文)”格式输入,如:5@你好!' write_log("To(%s):需要翻译,对方输入:%s" % (name, rec_msg), True) return reply_msg elif rec_msg == "0": reply_msg = "<Clone with HTTPS>https://github.com/rauiy666/wechat.git" write_log("To(%s):获取项目clone地址:%s" % (name, reply_msg), True) return reply_msg else: message = "新消息@ (%s)对方:%s 内容:%s" % (create_time, name, rec_msg) print(message) write_log(message, True) local_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) reply_msg = "%s,这是“%s”的自动回复消息:我正在忙,请稍后联系我哦,谢谢!\n\n看笑话,回复:1\n\n电影推荐,回复:2\n\n实时票房,回复:3\n\n即将上映电影,回复:4\n\n中英文翻译,回复:5\n\n获取本项目源代码,回复:0" % ( local_time, my_name) write_log("回复“%s”消息:%s" % (name, reply_msg.replace("\n", "")), True) return reply_msg