From c30f3b1ce2ab9e835cc0e1a45df7e33d52a9cf86 Mon Sep 17 00:00:00 2001 From: liuwei Date: Fri, 21 Feb 2025 17:24:17 +0800 Subject: [PATCH] =?UTF-8?q?debug=20=E6=B8=B8=E6=88=8F=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game_task/game_chatgpt_qa.py | 2 +- game_task/game_task_encyclopedia.py | 207 ++++++++++++++++++++++------ 2 files changed, 165 insertions(+), 44 deletions(-) diff --git a/game_task/game_chatgpt_qa.py b/game_task/game_chatgpt_qa.py index 3505f4f..99461aa 100644 --- a/game_task/game_chatgpt_qa.py +++ b/game_task/game_chatgpt_qa.py @@ -48,7 +48,7 @@ def message_task_json(prompt, content): # 输出响应内容 print(response.status_code) print(response.text) - return extract_content(response.text) + return json.loads(extract_content(response.text)) def game_question_json(question): diff --git a/game_task/game_task_encyclopedia.py b/game_task/game_task_encyclopedia.py index 9884546..5eb7597 100644 --- a/game_task/game_task_encyclopedia.py +++ b/game_task/game_task_encyclopedia.py @@ -1,3 +1,4 @@ +import json import random import schedule import time @@ -32,9 +33,17 @@ def add_group(group_id, player_id): (group_id,) ) conn.commit() - return f"群 {group_id} 已成功添加!" + return ( + f"🎉 好消息来啦!\n" + f"🌟 群 {group_id} 已成功加入\n" + f"🎈 大家快来一起玩吧!" + ) except pymysql.err.IntegrityError: - return f"群 {group_id} 已存在!" + return ( + f"😄 嘿,小伙伴\n" + f"🌈 群 {group_id} 已经在了\n" + f"🎶 快来一起开心吧!" + ) finally: cursor.close() conn.close() @@ -60,21 +69,34 @@ def start_game(group_id, player_id, player_name="未知玩家"): # 确保群聊存在 cursor.execute("SELECT group_id FROM t_encyclopedia_groups WHERE group_id = %s", (group_id,)) if not cursor.fetchone(): - return f"群 {group_id} 未注册,请先添加群聊!" + return ( + f"😅 哎呀,小朋友\n" + f"🌼 群 {group_id} 还没准备好\n" + f"🎀 先用 /addgroup 添加哦!" + ) cursor.execute( "INSERT INTO t_encyclopedia_players (player_id, group_id, player_name) VALUES (%s, %s, %s)", (player_id, group_id, player_name) ) conn.commit() - return f"欢迎加入百科全书挑战!{player_name} (ID: {player_id}) 已加入群 {group_id},任务将随机分配,任何人可抢答。" + return ( + f"🎉 欢迎加入,{player_name}!\n" + f"🌟 ID: {player_id} 已就位\n" + f"🎈 群 {group_id} 等你来玩\n" + f"🌈 快来接任务吧!" + ) except pymysql.err.IntegrityError: cursor.execute( "SELECT player_name FROM t_encyclopedia_players WHERE group_id = %s AND player_id = %s", (group_id, player_id) ) existing_name = cursor.fetchone()['player_name'] - return f"你已在群 {group_id} 中加入游戏!玩家ID: {player_id},名称: {existing_name}" + return ( + f"😄 你好呀,{existing_name}\n" + f"🌼 ID: {player_id} 已加入群 {group_id}\n" + f"🎶 快来一起乐呵吧!" + ) finally: cursor.close() conn.close() @@ -89,10 +111,15 @@ def assign_random_task(group_id): cursor.execute("SELECT player_id FROM t_encyclopedia_players WHERE group_id = %s", (group_id,)) players = [row['player_id'] for row in cursor.fetchall()] if not players: - return f"群 {group_id} 暂无玩家参与,无法分配任务!" + return ( + f"😔 哎呀,群 {group_id} 好安静\n" + f"🌟 没有小伙伴加入\n" + f"🎈 快叫朋友来玩吧!" + ) # 使用内部方法获取任务 task = game_question_json("请出题!") + question = task["question"] answer = task["answer"] score = int(task["score"]) @@ -118,7 +145,14 @@ def assign_random_task(group_id): ) holder_name = cursor.fetchone()['player_name'] - return f"任务分配给 {holder_name} (ID: {holder_id}):{question}(群 {group_id} 所有人可抢答!任务ID: task_{active_task_id},积分:{score})" + return ( + f"🎁 新任务来啦!\n" + f"🌟 幸运玩家:{holder_name} (ID: {holder_id})\n" + f"🎈 问题:{question}\n" + f"🌈 群 {group_id} 等你抢答\n" + f"🎀 任务ID: task_{active_task_id}\n" + f"🌼 积分:{score}" + ) finally: cursor.close() conn.close() @@ -134,18 +168,45 @@ def submit_answer(group_id, player_id, task_id, answer): (group_id, player_id)) player_row = cursor.fetchone() if not player_row: - return f"请先在群 {group_id} 输入 /start 加入游戏!玩家ID: {player_id}" + return ( + f"😅 嘿,小朋友\n" + f"🌟 ID: {player_id} 还没加入群 {group_id}\n" + f"🎈 用 /start 先报名吧!" + ) + player_name = player_row['player_name'] - # 检查任务是否存在并获取任务详情 + # 检查任务ID格式并提取数字部分 + if not task_id.startswith("task_") or not task_id[5:].isdigit(): + return ( + f"😅 哎呀,小调皮\n" + f"🌟 任务ID格式不对哦\n" + f"🎈 应该是 task_[数字]\n" + f"🌈 比如:task_1\n" + f"🎀 再试一次吧!" + ) + active_task_id = int(task_id.split('_')[1]) + + # 检查任务是否存在并获取任务详情 cursor.execute( "SELECT question, answer, score, holder_id, status FROM t_encyclopedia_active_tasks WHERE group_id = %s AND active_task_id = %s", (group_id, active_task_id) ) task_data = cursor.fetchone() - if not task_data or task_data['status'] == 'completed': - return f"群 {group_id} 中此任务不存在或已完成!" + if not task_data: + return ( + f"😔 哎呀,小伙伴\n" + f"🌼 群 {group_id} 的任务 {task_id} 不见了\n" + f"🎀 可能已经被抢答啦!" + ) + + if task_data['status'] == 'completed': + return ( + f"😄 哈哈,太慢啦!\n" + f"🌟 任务 {task_id} 已完成\n" + f"🎈 群 {group_id} 等你抢新任务哦!" + ) question, correct_answer_db, top_score, holder_id, _ = task_data['question'], task_data['answer'].lower(), \ task_data['score'], task_data['holder_id'], task_data['status'] @@ -175,9 +236,18 @@ def submit_answer(group_id, player_id, task_id, answer): (group_id, active_task_id) ) message = ( - f"{player_name} (ID: {player_id}) 回答正确!任务:{question}\n获得 {points} 分\n描述:{description}" + f"🎉 {player_name} (ID: {player_id}) 太棒啦!\n" + f"🌟 任务:{question}\n" + f"🎈 答对了,真厉害!\n" + f"🌈 奖励:{points} 分\n" + f"🎀 提示:{description}" if player_id == holder_id - else f"{player_name} (ID: {player_id}) 抢答成功!任务:{question}(原持有者:{holder_name} (ID: {holder_id}))\n获得 {points} 分\n描述:{description}" + else + f"🎉 {player_name} (ID: {player_id}) 抢答成功!\n" + f"🌟 任务:{question}\n" + f"🎈 原主:{holder_name} (ID: {holder_id})\n" + f"🌈 获得 {points} 分,太棒了!\n" + f"🎀 提示:{description}" ) else: # 错误扣1分,确保积分不低于0 @@ -186,7 +256,14 @@ def submit_answer(group_id, player_id, task_id, answer): (group_id, player_id) ) points = -1 # 记录惩罚分 - message = f"{player_name} (ID: {player_id}) 回答错误!任务:{question}\n你的答案:{answer},正确答案:{correct_answer}\n扣除 1 分\n描述:{description}" + message = ( + f"😅 {player_name} (ID: {player_id}) 有点小遗憾!\n" + f"🌼 任务:{question}\n" + f"🎈 你答:{answer}\n" + f"🌟 正确答案:{correct_answer}\n" + f"🌈 扣 1 分,别灰心!\n" + f"🎀 提示:{description}" + ) cursor.execute( "INSERT INTO t_encyclopedia_task_history (group_id, active_task_id, player_id, answer, is_correct, points_earned) VALUES (%s, %s, %s, %s, %s, %s)", @@ -195,6 +272,14 @@ def submit_answer(group_id, player_id, task_id, answer): conn.commit() return message + except ValueError: + return ( + f"😅 哎呀,小调皮\n" + f"🌟 任务ID格式不对哦\n" + f"🎈 应该是 task_[数字]\n" + f"🌈 比如:task_1\n" + f"🎀 再试一次吧!" + ) finally: cursor.close() conn.close() @@ -211,10 +296,14 @@ def show_rank(group_id, player_id): ) ranks = cursor.fetchall() if not ranks: - return f"群 {group_id} 暂无玩家参与!" - rank_text = f"群 {group_id} 排行榜(Top 10)\n" + return ( + f"😔 群 {group_id} 好安静\n" + f"🌟 排行榜还没有人\n" + f"🎈 快来一起玩吧!" + ) + rank_text = f"🎉 群 {group_id} 排行榜(Top 10)\n" for i, row in enumerate(ranks, 1): - rank_text += f"{i}. {row['player_name']}: {row['points']} 分\n" + rank_text += f"🌈 {i}. {row['player_name']}: {row['points']} 分\n" return rank_text finally: cursor.close() @@ -234,10 +323,18 @@ def show_active_tasks(group_id, player_id): """, (group_id,)) tasks = cursor.fetchall() if not tasks: - return f"群 {group_id} 当前没有活跃任务!" - task_text = f"群 {group_id} 当前活跃任务:\n" + return ( + f"😄 群 {group_id} 现在很平静\n" + f"🌟 没有活跃任务哦\n" + f"🎈 用 /gettask 拿一个吧!" + ) + task_text = f"🎉 群 {group_id} 当前活跃任务:\n" for task in tasks: - task_text += f"任务ID: task_{task['active_task_id']} - {task['question']}(持有者:{task['player_name']} (ID: {task['player_id']}))\n" + task_text += ( + f"🌈 任务ID: task_{task['active_task_id']}\n" + f"🎀 问题:{task['question']}\n" + f"🌼 持有者:{task['player_name']} (ID: {task['player_id']})\n" + ) return task_text finally: cursor.close() @@ -257,10 +354,18 @@ def list_uncompleted_tasks(group_id, player_id): """, (group_id,)) tasks = cursor.fetchall() if not tasks: - return f"群 {group_id} 当前没有未完成的任务!" - task_text = f"群 {group_id} 所有未完成任务列表:\n" + return ( + f"😄 群 {group_id} 任务都完成啦\n" + f"🌟 目前没有未完成任务\n" + f"🎈 用 /gettask 再来一个吧!" + ) + task_text = f"🎉 群 {group_id} 所有未完成任务列表:\n" for task in tasks: - task_text += f"任务ID: task_{task['active_task_id']} - {task['question']}(所属:{task['player_name']} (ID: {task['player_id']}))\n" + task_text += ( + f"🌈 任务ID: task_{task['active_task_id']}\n" + f"🎀 问题:{task['question']}\n" + f"🌼 所属:{task['player_name']} (ID: {task['player_id']})\n" + ) return task_text finally: cursor.close() @@ -288,7 +393,12 @@ def game_process_message(group_id, player_id, message, player_name="未知玩家 elif message.startswith("/answer"): parts = message.split(" ", 2) if len(parts) < 3: - return "请使用格式:/answer [任务ID] [答案],如 /answer task_1 钒(Vanadium)" + return ( + f"😅 哎呀,小朋友\n" + f"🌟 格式不对哦\n" + f"🎈 正确用法:/answer [任务ID] [答案]\n" + f"🌈 例如:/answer task_1 钒(Vanadium)" + ) task_id, answer = parts[1], parts[2] return submit_answer(group_id, player_id, task_id, answer) elif message == "/rank": @@ -298,10 +408,25 @@ def game_process_message(group_id, player_id, message, player_name="未知玩家 elif message == "/gettask": current_hour = datetime.now().hour if current_hour >= 23 or current_hour < 9: - return f"当前时间 {current_hour}:00 在23:00-08:00区间,无法领取任务!" + return ( + f"😴 现在是 {current_hour}:00\n" + f"🌙 太晚啦,小伙伴们休息中\n" + f"🌞 9点到22点再来玩吧!" + ) return assign_random_task(group_id) else: - return "无效命令!可用:/start, /tasks, /list, /answer [任务ID] [答案], /addgroup, /gettask, /rank" + return ( + f"😄 嘿,小调皮\n" + f"🌟 指令不对哦\n" + f"🎈 可用指令:\n" + f"🌈 /start - 加入游戏\n" + f"🎀 /tasks - 查看活跃任务\n" + f"🌼 /list - 未完成任务\n" + f"🌟 /answer [任务ID] [答案] - 提交答案\n" + f"🎈 /addgroup - 添加群聊\n" + f"🌈 /gettask - 主动拿任务\n" + f"🎀 /rank - 查看排行榜" + ) # 设置定时任务 @@ -313,22 +438,18 @@ def setup_schedule(): # 主程序 if __name__ == "__main__": - # 初始化群聊 - print(add_group("group1", "admin1")) - print(add_group("group2", "admin1")) - - # 初始化玩家 - print(game_process_message("group1", "player1001", "/start", "玩家1")) - print(game_process_message("group1", "player1002", "/start", "玩家2")) - print(game_process_message("group2", "player2001", "/start", "玩家A")) - print(game_process_message("group2", "player2002", "/start", "玩家B")) - - # 设置调度 - setup_schedule() + # # 初始化群聊 + # print(add_group("group1", "admin1")) + # print(add_group("group2", "admin1")) + # + # # 初始化玩家 + # print(game_process_message("group1", "player1001", "/start", "玩家1")) + # print(game_process_message("group1", "player1002", "/start", "玩家2")) + # print(game_process_message("group2", "player2001", "/start", "玩家A")) + # print(game_process_message("group2", "player2002", "/start", "玩家B")) + # + # # 设置调度 + # setup_schedule() # 测试 /gettask - print(game_process_message("group1", "player1001", "/gettask")) - - while True: - schedule.run_pending() - time.sleep(1) \ No newline at end of file + print(game_process_message("47530198896@chatroom", "player1001", "/gettask"))