first commit
This commit is contained in:
		
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | napcat/ | ||||||
|  | logs/ | ||||||
|  | .idea/ | ||||||
|  | .venv/ | ||||||
|  | data/ | ||||||
							
								
								
									
										22
									
								
								config.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								config.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | #napcat配置 | ||||||
|  | bot_qq = 123456 #机器人q号 | ||||||
|  | root_qq = 1234567 # 管理员q号 | ||||||
|  | ws_uri = "ws://localhost:3001" # ws 地址, 可自定义端口, 默认 3001 | ||||||
|  | webui_uri = "http://localhost:6099" # webui 地址, 可自定义端口, 默认 6099 | ||||||
|  | webui_token =  "napcat" # webui 令牌, 默认 napcat | ||||||
|  | ws_token = "" # ws_uri 令牌, 默认留空 | ||||||
|  | ws_listen_ip = "localhost" # ws_uri 监听 ip, 默认 localhost 监听本机,监听全部则配置 0.0.0.0 | ||||||
|  | remote_mode = false # 是否远程模式, 即 NapCat 服务不在本机运行 ps:ncatbot官方已废弃该参数 | ||||||
|  |  | ||||||
|  | # 功能配置 | ||||||
|  | allowed_groups = "all" # 授权群聊,all为全部,eg:[123456789, 987654321] | ||||||
|  | allowed_users = "all" # 授权用户,all为全部,eg:[123456789, 987654321] | ||||||
|  | velocity_ip = "127.0.0.1" # velocity ip | ||||||
|  | velocity_port = 8080 # velocity port | ||||||
|  | velocity_token = "your velocity_token" #`velocity token | ||||||
|  | friend_auto = true # 好友自动同意 | ||||||
|  | group_auto = true # 无作用 | ||||||
|  | group_welcome = true # 入群欢迎 | ||||||
|  | group_welcome_message = "!at 欢迎加入本群,使用@bot /help获取此bot帮助" # 入群消息 !at 为@加群用户 | ||||||
|  | group_leave = true # 退群提醒 | ||||||
|  | group_leave_message = "用户{userid}退群了" # 退群消息 ,{userid}为退群用户id | ||||||
							
								
								
									
										0
									
								
								control/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								control/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										
											BIN
										
									
								
								control/__pycache__/__init__.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								control/__pycache__/__init__.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								control/__pycache__/__init__.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								control/__pycache__/__init__.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								control/__pycache__/__init__.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								control/__pycache__/__init__.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								control/__pycache__/group.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								control/__pycache__/group.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								control/__pycache__/notice.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								control/__pycache__/notice.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								control/__pycache__/private.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								control/__pycache__/private.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								control/__pycache__/request.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								control/__pycache__/request.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										150
									
								
								control/group.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								control/group.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,150 @@ | |||||||
|  | from model.AiCat import AiCat | ||||||
|  | from model.McList import McList | ||||||
|  | from model.McFind import McFind | ||||||
|  | from model.McHh import McHh | ||||||
|  | from model.McBind import McBind | ||||||
|  | import toml | ||||||
|  | import logging | ||||||
|  |  | ||||||
|  | class group: | ||||||
|  |     def __init__(self, msg): | ||||||
|  |         self.user_id = msg.user_id | ||||||
|  |         self.group_id = msg.group_id | ||||||
|  |         self.message_id = msg.message_id | ||||||
|  |         self.message_type = msg.message_type | ||||||
|  |         self.raw_message = msg.raw_message | ||||||
|  |         self.sender = msg.sender | ||||||
|  |         self.message = msg.message | ||||||
|  |         self.self_id = msg.self_id | ||||||
|  |         self.time = msg.time | ||||||
|  |     def main(self): | ||||||
|  |         is_at = self.is_at() | ||||||
|  |         if is_at is None: | ||||||
|  |             return None | ||||||
|  |         else: | ||||||
|  |             permission = self.check_permission() | ||||||
|  |             if permission is None: | ||||||
|  |                 return "服务器繁忙,请稍后再逝" | ||||||
|  |             elif permission: | ||||||
|  |                 return self.menu(is_at) | ||||||
|  |             else: | ||||||
|  |                 return "此bot未在该群启用" | ||||||
|  |  | ||||||
|  |     def is_at(self): | ||||||
|  |         for seg in self.message: | ||||||
|  |             if seg['type'] == 'at' and seg['data'].get('qq') == str(self.self_id): | ||||||
|  |                 texts = [s['data']['text'].strip() for s in self.message if s['type'] == 'text'] | ||||||
|  |                 full_text = ' '.join(texts).strip() | ||||||
|  |                 return full_text | ||||||
|  |  | ||||||
|  |         return None | ||||||
|  |  | ||||||
|  |     def check_permission(self): | ||||||
|  |         try: | ||||||
|  |             with open("./config.toml", "r", encoding="utf-8") as f: | ||||||
|  |                 config = toml.load(f) | ||||||
|  |                 allowed_groups = config.get("allowed_groups", []) | ||||||
|  |         except Exception as e: | ||||||
|  |             logging.error(str(e)) | ||||||
|  |             return None | ||||||
|  |  | ||||||
|  |             # 检查当前群是否在允许列表中 | ||||||
|  |         if allowed_groups == "all": | ||||||
|  |             return True | ||||||
|  |         elif self.group_id in allowed_groups: | ||||||
|  |             return True | ||||||
|  |         else: | ||||||
|  |             return False | ||||||
|  |  | ||||||
|  |     def menu(self,command): | ||||||
|  |         if command.startswith("/help"): | ||||||
|  |             return " \n /help -- 获取帮助  \n  /list [服务器名/all] [页数] -- 列出服务器在线人数  \n  /find <玩家名>-- 查找指定玩家是否在线  \n  /bind <授权码> -- 绑定UNC游戏账户  \n  /hh <喊话内容> -- 全服喊话  \n  /cat <聊天内容> -- 与猫娘对话  \n  /chat <提问内容> -- 智能问答(开发中,暂不可用)  \n  /status -- 查看bot状态  \n  <必要参数>  [可选参数]" | ||||||
|  |         elif command.startswith("/list"): | ||||||
|  |             # 去除前导空格并分割命令 | ||||||
|  |             parts = command.strip().split() | ||||||
|  |             if len(parts) == 1: | ||||||
|  |                 # 只有 "/list" 命令 | ||||||
|  |                 server = 'all' | ||||||
|  |                 page = '1' | ||||||
|  |             elif len(parts) == 2: | ||||||
|  |                 # "/list server" | ||||||
|  |                 server = parts[1] | ||||||
|  |                 page = '1' | ||||||
|  |             elif len(parts) == 3: | ||||||
|  |                 # "/list server page" | ||||||
|  |                 server = parts[1] | ||||||
|  |                 page = parts[2] | ||||||
|  |             else: | ||||||
|  |                 return "参数错误 \n 格式:/list [服务器名/all] [页数]" | ||||||
|  |             try: | ||||||
|  |                 page = int(page) | ||||||
|  |                 if page < 1: | ||||||
|  |                     return "请输入大于1的页数 \n 格式:/list [服务器名/all] [页数]" | ||||||
|  |             except ValueError: | ||||||
|  |                 return "输入的页数需为整数 \n 格式 /list [服务器名/all] [页数]" | ||||||
|  |             except Exception as e: | ||||||
|  |                 return "服务器繁忙,请稍后再逝" | ||||||
|  |             page -= 1 | ||||||
|  |             list_player = McList(server, page) | ||||||
|  |             answer = McList.main(list_player) | ||||||
|  |             return answer | ||||||
|  |         elif command.startswith("/find"): | ||||||
|  |             # 排除 " /find "" /find"未传参情况 | ||||||
|  |             parts = command.split("/find ", 1) | ||||||
|  |             if len(parts) > 1: | ||||||
|  |                 chat_content = parts[1].strip() | ||||||
|  |                 if chat_content: | ||||||
|  |                     find = McFind(chat_content) | ||||||
|  |                     answer = McFind.main(find) | ||||||
|  |                     return answer | ||||||
|  |                 else: | ||||||
|  |                     return "请提供查找的玩家名 \n 格式:/find <玩家名>" | ||||||
|  |             else: | ||||||
|  |                 return "请提供查找的玩家名 \n 格式:/find <玩家名>" | ||||||
|  |         elif command.startswith("/hh"): | ||||||
|  |             # 排除“ /hh "” /hh“未传参情况 | ||||||
|  |             parts = command.split("/hh ", 1) | ||||||
|  |             if len(parts) > 1: | ||||||
|  |                 chat_content = parts[1].strip() | ||||||
|  |                 if chat_content: | ||||||
|  |                     hh = McHh(self.user_id,chat_content) | ||||||
|  |                     answer = McHh.main(hh) | ||||||
|  |                     return answer | ||||||
|  |                 else: | ||||||
|  |                     return "请提供喊话内容 \n 格式:/hh <喊话内容>" | ||||||
|  |             else: | ||||||
|  |                 return "请提供喊话内容 \n 格式:/hh <喊话内容>" | ||||||
|  |         elif command.startswith("/chat"): | ||||||
|  |             return "智能问答功能正在开发中,尚不可用!\n开发进度:5%" | ||||||
|  |         elif command.startswith("/cat"): | ||||||
|  |             # # 排除 " /cat "" /cat"未传参情况 | ||||||
|  |             # parts = self.content.split(" /cat ", 1) | ||||||
|  |             # if len(parts) > 1: | ||||||
|  |             #     chat_content = parts[1].strip() | ||||||
|  |             #     if chat_content: | ||||||
|  |             #         cat = AiCat(chat_content,self.id) | ||||||
|  |             #         answer = AiCat.main(cat) | ||||||
|  |             #         return answer | ||||||
|  |             #     else: | ||||||
|  |             #         return "你似乎没有提供想和我聊的内容喵~  \n 格式:/cat <提问内容>" | ||||||
|  |             # else: | ||||||
|  |             #     return "你似乎没有提供想和我聊的内容喵~  \n 格式:/cat <提问内容>" | ||||||
|  |             return "该内容已移动至猫娘qbot" | ||||||
|  |         elif command.startswith("/bind"): | ||||||
|  |             # 排除“ /bind "” /bind“未传参情况 | ||||||
|  |             parts = command.split("/bind ", 1) | ||||||
|  |             if len(parts) > 1: | ||||||
|  |                 chat_content = parts[1].strip() | ||||||
|  |                 if chat_content: | ||||||
|  |                     bind = McBind(self.user_id, chat_content) | ||||||
|  |                     answer = McBind.main(bind) | ||||||
|  |                     return answer | ||||||
|  |                 else: | ||||||
|  |                     return "授权码不可为空  \n 格式:/bind <授权码> \n 在服务器内输入/bind指令获取授权码" | ||||||
|  |             else: | ||||||
|  |                 return "授权码不可为空  \n 格式:/bind <授权码>" | ||||||
|  |         elif command.startswith("/status"): | ||||||
|  |             return "---MCUNC QBOT---\n Q bot 运行正常 \n 版本: 2.0 pre \n © 融玩文化 | 无尽创意MCUNC" | ||||||
|  |             # return "\n Q Bot运行正常 \n Version: 0.2.1 pre-release \n © 融玩文化 | 无尽创意mcunc" | ||||||
|  |         else: | ||||||
|  |             return "功能不存在 \n 输入/help 查看帮助" | ||||||
							
								
								
									
										62
									
								
								control/notice.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								control/notice.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | |||||||
|  | import toml | ||||||
|  | import logging | ||||||
|  |  | ||||||
|  | class notice: | ||||||
|  |     def __init__(self,msg): | ||||||
|  |         if msg["notice_type"] == "group_increase" or msg["notice_type"] == "group_decrease": | ||||||
|  |             self.time = msg["time"] | ||||||
|  |             self.self_id = msg["self_id"] | ||||||
|  |             self.post_type = msg["post_type"] | ||||||
|  |             self.notice_type = msg["notice_type"] | ||||||
|  |             self.sub_type = msg["sub_type"] | ||||||
|  |             self.group_id = msg["group_id"] | ||||||
|  |             self.operator_id = msg["operator_id"] | ||||||
|  |             self.user_id = msg["user_id"] | ||||||
|  |         else: | ||||||
|  |             pass | ||||||
|  |  | ||||||
|  |     def main(self): | ||||||
|  |         if self.notice_type == "group_increase": | ||||||
|  |             return self.group_increase() | ||||||
|  |         elif self.notice_type == "group_decrease": | ||||||
|  |             return self.group_decrease() | ||||||
|  |         else: | ||||||
|  |             return None | ||||||
|  |  | ||||||
|  |     def group_increase(self): | ||||||
|  |         print(1) | ||||||
|  |         try: | ||||||
|  |             with open("./config.toml", "r", encoding="utf-8") as f: | ||||||
|  |                 config = toml.load(f) | ||||||
|  |                 group_welcome = config.get("group_welcome") | ||||||
|  |                 print(group_welcome) | ||||||
|  |                 group_welcome_message = config.get("group_welcome_message") | ||||||
|  |                 print(group_welcome_message) | ||||||
|  |                 if group_welcome: | ||||||
|  |                     if "!at" in group_welcome_message: | ||||||
|  |                         return group_welcome_message.replace("!at", f"[CQ:at,qq={self.user_id}]") | ||||||
|  |                     else: | ||||||
|  |                         return group_welcome_message | ||||||
|  |                 else: | ||||||
|  |                     return None | ||||||
|  |         except Exception as e: | ||||||
|  |             logging.error(f"读取配置文件错误:{e}") | ||||||
|  |             return None | ||||||
|  |  | ||||||
|  |     def group_decrease(self): | ||||||
|  |         try: | ||||||
|  |             with open("./config.toml", "r", encoding="utf-8") as f: | ||||||
|  |                 config = toml.load(f) | ||||||
|  |                 group_leave = config.get("group_leave") | ||||||
|  |                 group_leave_message = config.get("group_leave_message") | ||||||
|  |                 print(group_leave_message) | ||||||
|  |                 if group_leave: | ||||||
|  |                     if "{userid}" in group_leave_message: | ||||||
|  |                         return group_leave_message.replace("{userid}", str(self.user_id)) | ||||||
|  |                     else: | ||||||
|  |                         return group_leave_message | ||||||
|  |                 else: | ||||||
|  |                     return None | ||||||
|  |         except Exception as e: | ||||||
|  |             logging.error(f"读取配置文件错误:{e}") | ||||||
|  |             return None | ||||||
							
								
								
									
										141
									
								
								control/private.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								control/private.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,141 @@ | |||||||
|  | from model.AiCat import AiCat | ||||||
|  | from model.McList import McList | ||||||
|  | from model.McFind import McFind | ||||||
|  | from model.McHh import McHh | ||||||
|  | from model.McBind import McBind | ||||||
|  | import toml | ||||||
|  | import logging | ||||||
|  |  | ||||||
|  | class private: | ||||||
|  |     def __init__(self, msg): | ||||||
|  |         self.user_id = msg.user_id | ||||||
|  |         self.message_id = msg.message_id | ||||||
|  |         self.message_type = msg.message_type | ||||||
|  |         self.raw_message = msg.raw_message | ||||||
|  |         self.sender = msg.sender | ||||||
|  |         self.message = msg.message | ||||||
|  |         self.self_id = msg.self_id | ||||||
|  |         self.time = msg.time | ||||||
|  |     def main(self): | ||||||
|  |         texts = [seg['data']['text'].strip() for seg in self.message if seg['type'] == 'text'] | ||||||
|  |         full_text = ' '.join(texts).strip() | ||||||
|  |         permission = self.check_permission() | ||||||
|  |         if permission is None: | ||||||
|  |             return "服务器繁忙,请稍后再逝" | ||||||
|  |         elif permission: | ||||||
|  |             return self.menu(full_text) | ||||||
|  |         else: | ||||||
|  |             return "此bot未在该群启用" | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     def check_permission(self): | ||||||
|  |         try: | ||||||
|  |             with open("./config.toml", "r", encoding="utf-8") as f: | ||||||
|  |                 config = toml.load(f) | ||||||
|  |                 allowed_users = config.get("allowed_users", []) | ||||||
|  |         except Exception as e: | ||||||
|  |             logging.error(str(e)) | ||||||
|  |             return None | ||||||
|  |  | ||||||
|  |             # 检查当前群是否在允许列表中 | ||||||
|  |         if allowed_users == "all": | ||||||
|  |             return True | ||||||
|  |         elif self.user_id in allowed_users: | ||||||
|  |             return True | ||||||
|  |         else: | ||||||
|  |             return False | ||||||
|  |  | ||||||
|  |     def menu(self,command): | ||||||
|  |         print( command) | ||||||
|  |         if command.startswith("/help"): | ||||||
|  |             return " \n /help -- 获取帮助  \n  /list [服务器名/all] [页数] -- 列出服务器在线人数  \n  /find <玩家名>-- 查找指定玩家是否在线  \n  /bind <授权码> -- 绑定UNC游戏账户  \n  /hh <喊话内容> -- 全服喊话  \n  /cat <聊天内容> -- 与猫娘对话  \n  /chat <提问内容> -- 智能问答(开发中,暂不可用)  \n  /status -- 查看bot状态  \n  <必要参数>  [可选参数]" | ||||||
|  |         elif command.startswith("/list"): | ||||||
|  |             # 去除前导空格并分割命令 | ||||||
|  |             parts = command.strip().split() | ||||||
|  |             if len(parts) == 1: | ||||||
|  |                 # 只有 "/list" 命令 | ||||||
|  |                 server = 'all' | ||||||
|  |                 page = '1' | ||||||
|  |             elif len(parts) == 2: | ||||||
|  |                 # "/list server" | ||||||
|  |                 server = parts[1] | ||||||
|  |                 page = '1' | ||||||
|  |             elif len(parts) == 3: | ||||||
|  |                 # "/list server page" | ||||||
|  |                 server = parts[1] | ||||||
|  |                 page = parts[2] | ||||||
|  |             else: | ||||||
|  |                 return "参数错误 \n 格式:/list [服务器名/all] [页数]" | ||||||
|  |             try: | ||||||
|  |                 page = int(page) | ||||||
|  |                 if page < 1: | ||||||
|  |                     return "请输入大于1的页数 \n 格式:/list [服务器名/all] [页数]" | ||||||
|  |             except ValueError: | ||||||
|  |                 return "输入的页数需为整数 \n 格式 /list [服务器名/all] [页数]" | ||||||
|  |             except Exception as e: | ||||||
|  |                 return "服务器繁忙,请稍后再逝" | ||||||
|  |             page -= 1 | ||||||
|  |             list_player = McList(server, page) | ||||||
|  |             answer = McList.main(list_player) | ||||||
|  |             return answer | ||||||
|  |         elif command.startswith("/find"): | ||||||
|  |             # 排除 " /find "" /find"未传参情况 | ||||||
|  |             parts = command.split("/find ", 1) | ||||||
|  |             if len(parts) > 1: | ||||||
|  |                 chat_content = parts[1].strip() | ||||||
|  |                 if chat_content: | ||||||
|  |                     find = McFind(chat_content) | ||||||
|  |                     answer = McFind.main(find) | ||||||
|  |                     return answer | ||||||
|  |                 else: | ||||||
|  |                     return "请提供查找的玩家名 \n 格式:/find <玩家名>" | ||||||
|  |             else: | ||||||
|  |                 return "请提供查找的玩家名 \n 格式:/find <玩家名>" | ||||||
|  |         elif command.startswith("/hh"): | ||||||
|  |             # 排除“ /hh "” /hh“未传参情况 | ||||||
|  |             parts = command.split("/hh ", 1) | ||||||
|  |             if len(parts) > 1: | ||||||
|  |                 chat_content = parts[1].strip() | ||||||
|  |                 if chat_content: | ||||||
|  |                     hh = McHh(self.user_id,chat_content) | ||||||
|  |                     answer = McHh.main(hh) | ||||||
|  |                     return answer | ||||||
|  |                 else: | ||||||
|  |                     return "请提供喊话内容 \n 格式:/hh <喊话内容>" | ||||||
|  |             else: | ||||||
|  |                 return "请提供喊话内容 \n 格式:/hh <喊话内容>" | ||||||
|  |         elif command.startswith("/chat"): | ||||||
|  |             return "智能问答功能正在开发中,尚不可用!\n开发进度:5%" | ||||||
|  |         elif command.startswith("/cat"): | ||||||
|  |             # # 排除 " /cat "" /cat"未传参情况 | ||||||
|  |             # parts = self.content.split(" /cat ", 1) | ||||||
|  |             # if len(parts) > 1: | ||||||
|  |             #     chat_content = parts[1].strip() | ||||||
|  |             #     if chat_content: | ||||||
|  |             #         cat = AiCat(chat_content,self.id) | ||||||
|  |             #         answer = AiCat.main(cat) | ||||||
|  |             #         return answer | ||||||
|  |             #     else: | ||||||
|  |             #         return "你似乎没有提供想和我聊的内容喵~  \n 格式:/cat <提问内容>" | ||||||
|  |             # else: | ||||||
|  |             #     return "你似乎没有提供想和我聊的内容喵~  \n 格式:/cat <提问内容>" | ||||||
|  |             return "该内容已移动至猫娘qbot" | ||||||
|  |         elif command.startswith("/bind"): | ||||||
|  |             # 排除“ /bind "” /bind“未传参情况 | ||||||
|  |             parts = command.split("/bind ", 1) | ||||||
|  |             if len(parts) > 1: | ||||||
|  |                 chat_content = parts[1].strip() | ||||||
|  |                 if chat_content: | ||||||
|  |                     bind = McBind(self.user_id, chat_content) | ||||||
|  |                     answer = McBind.main(bind) | ||||||
|  |                     return answer | ||||||
|  |                 else: | ||||||
|  |                     return "授权码不可为空  \n 格式:/bind <授权码> \n 在服务器内输入/bind指令获取授权码" | ||||||
|  |             else: | ||||||
|  |                 return "授权码不可为空  \n 格式:/bind <授权码>" | ||||||
|  |         elif command.startswith("/status"): | ||||||
|  |             return "---MCUNC QBOT---\n Q bot 运行正常 \n 版本: 2.0 pre \n © 融玩文化 | 无尽创意MCUNC" | ||||||
|  |             # return "\n Q Bot运行正常 \n Version: 0.2.1 pre-release \n © 融玩文化 | 无尽创意mcunc" | ||||||
|  |         else: | ||||||
|  |             return "功能不存在 \n 输入/help 查看帮助" | ||||||
							
								
								
									
										42
									
								
								control/request.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								control/request.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | import logging | ||||||
|  | import toml | ||||||
|  |  | ||||||
|  | class request: | ||||||
|  |     def __init__(self,msg): | ||||||
|  |         self.time = msg.time | ||||||
|  |         self.self_id = msg.self_id | ||||||
|  |         self.request_type = msg.request_type | ||||||
|  |         self.sub_type = msg.sub_type | ||||||
|  |         self.group_id = msg.group_id | ||||||
|  |         self.user_id = msg.user_id | ||||||
|  |         self.comment = msg.comment | ||||||
|  |         self.flag = msg.flag | ||||||
|  |  | ||||||
|  |     def main(self): | ||||||
|  |         if self.request_type == "friend": | ||||||
|  |             friend_auto = self.get_info() | ||||||
|  |             if friend_auto: | ||||||
|  |                 return True | ||||||
|  |             else: | ||||||
|  |                 return False | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     def get_info(self): | ||||||
|  |         try: | ||||||
|  |             with open("./config.toml", "r", encoding="utf-8") as f: | ||||||
|  |                 config = toml.load(f) | ||||||
|  |                 friend_auto = config.get("friend_auto") | ||||||
|  |             return friend_auto | ||||||
|  |         except Exception as e: | ||||||
|  |             logging.error(f"读取配置文件错误:{e}") | ||||||
|  |             return False | ||||||
|  |  | ||||||
|  |     def get_allow_group(self): | ||||||
|  |         try: | ||||||
|  |             with open("./config.toml", "r", encoding="utf-8") as f: | ||||||
|  |                 config = toml.load(f) | ||||||
|  |                 allow_group = config.get("allowed_groups") | ||||||
|  |             return allow_group | ||||||
|  |         except Exception as e: | ||||||
|  |             logging.error(f"读取配置文件错误:{e}") | ||||||
|  |             return [] | ||||||
							
								
								
									
										82
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,82 @@ | |||||||
|  | from ncatbot.core.notice import NoticeMessage | ||||||
|  | from ncatbot.core import BotClient, Request | ||||||
|  | import logging | ||||||
|  | import asyncio | ||||||
|  | from control.group import group | ||||||
|  | from control.private import private | ||||||
|  | from control.request import request | ||||||
|  | from control.notice import notice | ||||||
|  | import toml | ||||||
|  |  | ||||||
|  |  | ||||||
|  | with open("./config.toml", "r", encoding="utf-8") as f: | ||||||
|  |     config = toml.load(f) | ||||||
|  |     bt_uin = config.get("bot_qq") | ||||||
|  |     root = config.get("root_qq") | ||||||
|  |     ws_uri = config.get("ws_uri") | ||||||
|  |     web_uri = config.get("web_uri") | ||||||
|  |     webui_token = config.get("webui_token") | ||||||
|  |     ws_token = config.get("ws_token") | ||||||
|  |     ws_listen_ip = config.get("ws_listen_ip") | ||||||
|  |     remote_mode = config.get("remote_mode") | ||||||
|  |  | ||||||
|  | bot = BotClient() | ||||||
|  | api = bot.run_blocking(bt_uin=bt_uin, root=root, ws_uri=ws_uri, web_uri=web_uri, webui_token=webui_token, ws_token=ws_token, ws_listen_ip=ws_listen_ip, remote_mode=remote_mode) | ||||||
|  |  | ||||||
|  | @bot.group_event() | ||||||
|  | async def on_group_message(msg): | ||||||
|  |     logging.info(f"收到消息:{msg.raw_message},来自{msg.group_id}群聊{msg.user_id}用户") | ||||||
|  |     if msg.user_id == 2854196310: # qq管家,防止刷屏。bot大战请看 | ||||||
|  |         pass | ||||||
|  |     else: | ||||||
|  |         ctrl = group(msg) | ||||||
|  |         return_message = ctrl.main() | ||||||
|  |         if return_message is None: | ||||||
|  |             return | ||||||
|  |         else: | ||||||
|  |             logging.info(f"返回消息:{return_message}") | ||||||
|  |             await  bot.api.post_group_msg(group_id=msg.group_id, text=return_message, reply=msg.message_id) | ||||||
|  |  | ||||||
|  | @bot.private_event() | ||||||
|  | async def on_private_message(msg): | ||||||
|  |     logging.info(f"收到消息:{msg.raw_message},来自{msg.user_id}用户") | ||||||
|  |     if msg.user_id == 2854196310: # qq管家,防止刷屏。 | ||||||
|  |         pass | ||||||
|  |     else: | ||||||
|  |         ctrl = private(msg) | ||||||
|  |         return_message = ctrl.main() | ||||||
|  |         if return_message is None: | ||||||
|  |             return | ||||||
|  |         else: | ||||||
|  |             logging.info(f"返回消息:{return_message}") | ||||||
|  |             await  bot.api.post_private_msg(user_id=msg.user_id, text=return_message, reply=msg.message_id) | ||||||
|  |  | ||||||
|  | @bot.request_event() | ||||||
|  | async def on_request_event(msg: Request): | ||||||
|  |     logging.info(f"收到request事件:{msg.request_type},来自{msg.group_id}群聊,{msg.user_id}用户,验证消息:{msg.comment}") | ||||||
|  |     ctrl = request(msg) | ||||||
|  |     accept_friend_application = ctrl.main() | ||||||
|  |     if accept_friend_application is True: | ||||||
|  |         await msg.reply(True, comment="请求已通过") | ||||||
|  |         logging.info("请求已通过") | ||||||
|  |     else: | ||||||
|  |         await msg.reply(False, comment="请求被拒绝") | ||||||
|  |         logging.info("请求被拒绝") | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @bot.notice_event() | ||||||
|  | async  def on_notice_event(msg: NoticeMessage): | ||||||
|  |     logging.info(f"收到notice事件:{msg['notice_type']},来自{msg['group_id']}群聊,{msg['user_id']}用户") | ||||||
|  |     ctrl = notice(msg) | ||||||
|  |     return_message = ctrl.main() | ||||||
|  |     if return_message is None: | ||||||
|  |         return | ||||||
|  |     else: | ||||||
|  |         logging.info(f"返回消息:{return_message}") | ||||||
|  |         await  bot.api.post_group_msg(group_id=msg["group_id"], text=return_message) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | asyncio.get_event_loop().run_forever() | ||||||
							
								
								
									
										55
									
								
								model/AiCat.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								model/AiCat.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | import requests | ||||||
|  | import json | ||||||
|  | import logging | ||||||
|  |  | ||||||
|  | class AiCat: | ||||||
|  |     def __init__(self,message,qid): | ||||||
|  |         self.message = message | ||||||
|  |         self.qid = qid | ||||||
|  |         self.query = f"<qid>{self.qid}</qid>{self.message}" | ||||||
|  |         print(self.query) # test | ||||||
|  |     def main(self): | ||||||
|  |         # API URL | ||||||
|  |         url = "https://ai.mcunc.cn/v1/chat-messages"  # 替换为实际的 API 地址 | ||||||
|  |  | ||||||
|  |         # 请求头 | ||||||
|  |         headers = { | ||||||
|  |             "Content-Type": "application/json", | ||||||
|  |             "Authorization": "Bearer app-pqib8uic8oBP95XmXuBi5ANq"  # 替换为你的 API 密钥 | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # 请求体 | ||||||
|  |         payload = { | ||||||
|  |             "query": self.query,  # 用户输入/提问内容 | ||||||
|  |             "inputs": {},  # App 定义的变量值(默认为空) | ||||||
|  |             "response_mode": "blocking",  # 流式模式或阻塞模式 | ||||||
|  |             "user": "QBotAPI",  # 用户标识,需保证唯一性 | ||||||
|  |             "conversation_id": "09cc6545-b0e0-4611-aad1-cf9bf51600e1",  # (选填)会话 ID,继续对话时需要传入 | ||||||
|  |             "files": [],  # 文件列表(选填),适用于文件结合文本理解 | ||||||
|  |             "auto_generate_name": True  # (选填)自动生成标题,默认为 True | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # 发送 POST 请求 | ||||||
|  |         try: | ||||||
|  |             response = requests.post(url, headers=headers, data=json.dumps(payload)) | ||||||
|  |  | ||||||
|  |             # 检查响应状态码 | ||||||
|  |             if response.status_code == 200: | ||||||
|  |                 logging.info("请求成功!返回结果:") | ||||||
|  |                 response_data = response.json() | ||||||
|  |                 logging.info(json.dumps(response_data, indent=4, ensure_ascii=False))  # 格式化输出 JSON | ||||||
|  |  | ||||||
|  |                 # 提取 answer 值 | ||||||
|  |                 answer = response_data.get("answer", "answer 字段不存在") | ||||||
|  |                 print(response_data.get("conversation_id")) # test | ||||||
|  |                 return answer | ||||||
|  |             else: | ||||||
|  |                 logging.info(f"请求失败!状态码: {response.status_code}") | ||||||
|  |                 logging.info(f"错误信息: {response.text}")  # 打印错误信息 | ||||||
|  |                 return "诶呀! 服务器好像出现了一点点错误呐~稍等一会再重试哦喵~" | ||||||
|  |  | ||||||
|  |         except Exception as e: | ||||||
|  |             logging.info(f"请求过程中出现异常: {e}") | ||||||
|  |             return "诶呀! 服务器好像出现了一点点错误呐~稍等一会再重试哦喵~" | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										51
									
								
								model/McBind.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								model/McBind.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | import requests | ||||||
|  | import json | ||||||
|  | import logging | ||||||
|  | import toml | ||||||
|  |  | ||||||
|  | class McBind: | ||||||
|  |     def __init__(self,qid,code): | ||||||
|  |         self.qid = qid | ||||||
|  |         self.code = code | ||||||
|  |  | ||||||
|  |     def main(self): | ||||||
|  |         with open('./config.toml', 'r', encoding='utf-8') as f: | ||||||
|  |             config = toml.load(f) | ||||||
|  |  | ||||||
|  |         # 获取所需字段 | ||||||
|  |         velocity_ip = config.get("velocity_ip") | ||||||
|  |         velocity_port = config.get("velocity_port") | ||||||
|  |         velocity_token = config.get("velocity_token") | ||||||
|  |         # API URL | ||||||
|  |         url = f"http://{velocity_ip}:{velocity_port}/vc/blind"  # 替换为实际的 API 地址 | ||||||
|  |  | ||||||
|  |         # 请求头 | ||||||
|  |         headers = { | ||||||
|  |             "Content-Type": "application/json", | ||||||
|  |             "Authorization": velocity_token  # 替换为你的 API 密钥 | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # 请求体 | ||||||
|  |         payload = { | ||||||
|  |             "qqID": self.qid, | ||||||
|  |             "code": self.code | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # 发送 POST 请求 | ||||||
|  |         try: | ||||||
|  |             response = requests.post(url, headers=headers, data=json.dumps(payload)) | ||||||
|  |  | ||||||
|  |             # 检查响应状态码 | ||||||
|  |             if response.status_code == 200: | ||||||
|  |                 return "您已成功绑定MCUNC游戏账户" | ||||||
|  |             elif response.status_code == 403: | ||||||
|  |                 logging.info("授权码不存在或过期") | ||||||
|  |                 return "授权码不存在或过期" | ||||||
|  |             else: | ||||||
|  |                 logging.error("请求失败!状态码: {response.status_code}") | ||||||
|  |                 logging.error(f"错误信息: {response.text}")  # 打印错误信息 | ||||||
|  |                 return "服务器繁忙,请稍后再逝" | ||||||
|  |  | ||||||
|  |         except Exception as e: | ||||||
|  |             logging.error(f"请求过程中出现异常: {e}") | ||||||
|  |             return "服务器繁忙,请稍后再逝" | ||||||
							
								
								
									
										55
									
								
								model/McFind.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								model/McFind.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | import requests | ||||||
|  | import json | ||||||
|  | import logging | ||||||
|  | import toml | ||||||
|  |  | ||||||
|  | class McFind: | ||||||
|  |     def __init__(self,name): | ||||||
|  |         self.name = name | ||||||
|  |  | ||||||
|  |     def main(self): | ||||||
|  |         with open('./config.toml', 'r', encoding='utf-8') as f: | ||||||
|  |             config = toml.load(f) | ||||||
|  |  | ||||||
|  |         # 获取所需字段 | ||||||
|  |         velocity_ip = config.get("velocity_ip") | ||||||
|  |         velocity_port = config.get("velocity_port") | ||||||
|  |         velocity_token = config.get("velocity_token") | ||||||
|  |         # API URL | ||||||
|  |         url = f"http://{velocity_ip}:{velocity_port}/vc/find_player"  # 替换为实际的 API 地址 | ||||||
|  |  | ||||||
|  |         # 请求头 | ||||||
|  |         headers = { | ||||||
|  |             "Content-Type": "application/json", | ||||||
|  |             "Authorization": velocity_token  # 替换为你的 API 密钥 | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # 请求体 | ||||||
|  |         payload = { | ||||||
|  |             "name": self.name, | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # 发送 POST 请求 | ||||||
|  |         try: | ||||||
|  |             response = requests.post(url, headers=headers, data=json.dumps(payload)) | ||||||
|  |  | ||||||
|  |             # 检查响应状态码 | ||||||
|  |             if response.status_code == 200: | ||||||
|  |                 logging.info("请求成功!返回结果:") | ||||||
|  |                 response_data = response.json() | ||||||
|  |                 logging.info(json.dumps(response_data, indent=4, ensure_ascii=False))  # 格式化输出 JSON | ||||||
|  |                 # 提取 answer 值 | ||||||
|  |                 online = response_data.get("online", "online 字段不存在") | ||||||
|  |                 server = response_data.get("server", "server 字段不存在") | ||||||
|  |                 if online: | ||||||
|  |                     return f"{self.name}在线,所在服务器:{server}" | ||||||
|  |                 else: | ||||||
|  |                     return f"{self.name}不在线" | ||||||
|  |             else: | ||||||
|  |                 logging.error(f"请求失败!状态码: {response.status_code}") | ||||||
|  |                 logging.error(f"错误信息: {response.text}")  # 打印错误信息 | ||||||
|  |                 return "服务器繁忙,请稍后再逝" | ||||||
|  |  | ||||||
|  |         except Exception as e: | ||||||
|  |             logging.error(f"请求过程中出现异常: {e}") | ||||||
|  |             return "服务器繁忙,请稍后再逝" | ||||||
							
								
								
									
										68
									
								
								model/McHh.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								model/McHh.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | import requests | ||||||
|  | import json | ||||||
|  | import logging | ||||||
|  | import toml | ||||||
|  |  | ||||||
|  | class McHh: | ||||||
|  |     def __init__(self,qid,message): | ||||||
|  |         self.qid = qid | ||||||
|  |         self.message = message | ||||||
|  |  | ||||||
|  |     def main(self): | ||||||
|  |         with open('./config.toml', 'r', encoding='utf-8') as f: | ||||||
|  |             config = toml.load(f) | ||||||
|  |  | ||||||
|  |         # 获取所需字段 | ||||||
|  |         velocity_ip = config.get("velocity_ip") | ||||||
|  |         velocity_port = config.get("velocity_port") | ||||||
|  |         velocity_token = config.get("velocity_token") | ||||||
|  |         # API URL | ||||||
|  |         url = f"http://{velocity_ip}:{velocity_port}/vc/hh"  # 替换为实际的 API 地址 | ||||||
|  |  | ||||||
|  |         # 请求头 | ||||||
|  |         headers = { | ||||||
|  |             "Content-Type": "application/json", | ||||||
|  |             "Authorization": velocity_token  # 替换为你的 API 密钥 | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # 请求体 | ||||||
|  |         payload = { | ||||||
|  |             "qID": self.qid, | ||||||
|  |             "message": self.message | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # 发送 POST 请求 | ||||||
|  |         try: | ||||||
|  |             response = requests.post(url, headers=headers, data=json.dumps(payload)) | ||||||
|  |  | ||||||
|  |             time = response.text | ||||||
|  |  | ||||||
|  |             try: | ||||||
|  |                 time = int(time) | ||||||
|  |                 seconds = time / 1000 | ||||||
|  |                 formatted_time = round(seconds, 1) | ||||||
|  |             except Exception as e : | ||||||
|  |                 logging.error(f"请求过程中出现异常: {e}") | ||||||
|  |                 return "服务器繁忙,请稍后再逝" | ||||||
|  |  | ||||||
|  |             # 检查响应状态码 | ||||||
|  |             if response.status_code == 200: | ||||||
|  |                 return "喊话成功" | ||||||
|  |  | ||||||
|  |             elif response.status_code == 403: | ||||||
|  |                 return "您未绑定MCUNC游戏账户,请先绑定后重试" | ||||||
|  |  | ||||||
|  |             elif response.status_code == 429: | ||||||
|  |                 return f"喊话过快,剩余时间:{formatted_time}s" | ||||||
|  |  | ||||||
|  |             elif response.status_code == 409: | ||||||
|  |                 return "喊话失败:您没有足够的话筒!" | ||||||
|  |              | ||||||
|  |             else: | ||||||
|  |                 logging.error(f"请求失败!状态码: {response.status_code}") | ||||||
|  |                 logging.error(f"错误信息: {response.text}")  # 打印错误信息 | ||||||
|  |                 return "服务器繁忙,请稍后再逝" | ||||||
|  |  | ||||||
|  |         except Exception as e: | ||||||
|  |             logging.error(f"请求过程中出现异常: {e}") | ||||||
|  |             return "服务器繁忙,请稍后再逝" | ||||||
							
								
								
									
										87
									
								
								model/McList.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								model/McList.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | |||||||
|  | import requests | ||||||
|  | import json | ||||||
|  | import logging | ||||||
|  | import toml | ||||||
|  |  | ||||||
|  | class McList: | ||||||
|  |     def __init__(self,server,page): | ||||||
|  |         self.server = server | ||||||
|  |         self.page = page | ||||||
|  |     def main(self): | ||||||
|  |         with open('./config.toml', 'r', encoding='utf-8') as f: | ||||||
|  |             config = toml.load(f) | ||||||
|  |  | ||||||
|  |         # 获取所需字段 | ||||||
|  |         velocity_ip = config.get("velocity_ip") | ||||||
|  |         velocity_port = config.get("velocity_port") | ||||||
|  |         velocity_token = config.get("velocity_token") | ||||||
|  |         # API URL | ||||||
|  |         url = f"http://{velocity_ip}:{velocity_port}/vc/query" | ||||||
|  |  | ||||||
|  |         # 请求头 | ||||||
|  |         headers = { | ||||||
|  |             "Content-Type": "application/json", | ||||||
|  |             "Authorization": velocity_token  # 替换为你的 API 密钥 | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # 请求体 | ||||||
|  |         payload = { | ||||||
|  |             "server": self.server, | ||||||
|  |             "page": self.page | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # 发送 POST 请求 | ||||||
|  |         try: | ||||||
|  |             response = requests.post(url, headers=headers, data=json.dumps(payload)) | ||||||
|  |  | ||||||
|  |             # 检查响应状态码 | ||||||
|  |             if response.status_code == 200: | ||||||
|  |                 logging.info("请求成功!返回结果:") | ||||||
|  |                 response_data = response.json() | ||||||
|  |                 logging.info(json.dumps(response_data, indent=4, ensure_ascii=False))  # 格式化输出 JSON | ||||||
|  |  | ||||||
|  |                 # 提取 player_number 值 | ||||||
|  |                 player_number = response_data.get("player_number", "player_number 字段不存在") | ||||||
|  |                 totalpage = response_data.get("totalPage", "totalPage 字段不存在") | ||||||
|  |                 players = response_data.get("players", "players 字段不存在") | ||||||
|  |  | ||||||
|  |                 try: | ||||||
|  |                     page = int(self.page) | ||||||
|  |                     formatted_page = page + 1 | ||||||
|  |                 except Exception as e: | ||||||
|  |                     logging.error(f"请求过程中出现异常: {e}") | ||||||
|  |                     return "服务繁忙,请稍后再逝" | ||||||
|  |                  | ||||||
|  |                 try: | ||||||
|  |                     formatted_totalpage = int(totalpage) | ||||||
|  |                     if formatted_totalpage == 0: | ||||||
|  |                         formatted_totalpage = 1 | ||||||
|  |                     elif formatted_totalpage == -1: | ||||||
|  |                         return f"服务器:{self.server} 不存在" | ||||||
|  |                     else: | ||||||
|  |                         formatted_totalpage = totalpage | ||||||
|  |                         success = True | ||||||
|  |                 except Exception as e: | ||||||
|  |                     logging.info(f"请求过程中出现异常: {e}") | ||||||
|  |                     return "服务器繁忙,请稍后再逝" | ||||||
|  |                  | ||||||
|  |                 if players is None : | ||||||
|  |                     logging.info("玩家列表为空") | ||||||
|  |                     formatted_players = "" | ||||||
|  |                 else: | ||||||
|  |                     try: | ||||||
|  |                         formatted_players = "\n".join(f"{i+1}、{player}" for i, player in enumerate(players)) | ||||||
|  |                     except Exception as e: | ||||||
|  |                         logging.info(f"请求过程中出现异常: {e}") | ||||||
|  |                         return "服务器繁忙,请稍后再逝" | ||||||
|  |                 answer = f"当前服务器共有{player_number}个玩家,\n{formatted_players} \n [{formatted_page}页/{formatted_totalpage}页]" | ||||||
|  |                 return answer | ||||||
|  |             else: | ||||||
|  |                 logging.info(f"请求失败!状态码: {response.status_code}") | ||||||
|  |                 logging.info(f"错误信息: {response.text}") | ||||||
|  |                 logging.info(response.json) | ||||||
|  |                 return "服务器繁忙,请稍后再逝" | ||||||
|  |  | ||||||
|  |         except Exception as e: | ||||||
|  |             logging.info(f"请求过程中出现异常: {e}") | ||||||
|  |             return "服务器繁忙,请稍后再逝" | ||||||
							
								
								
									
										0
									
								
								model/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								model/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/AiCat.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/AiCat.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/AiCat.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/AiCat.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/AiCat.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/AiCat.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McBind.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McBind.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McBind.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McBind.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McBind.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McBind.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McFind.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McFind.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McFind.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McFind.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McFind.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McFind.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McHh.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McHh.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McHh.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McHh.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McHh.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McHh.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McList.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McList.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McList.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McList.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/McList.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/McList.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/__init__.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/__init__.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/__init__.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/__init__.cpython-312.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								model/__pycache__/__init__.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								model/__pycache__/__init__.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user