From 86b76496f62fa4ae3ee336d4a277777ab17fb0bd Mon Sep 17 00:00:00 2001 From: NepPure Date: Sun, 2 Mar 2025 10:54:31 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80database=20config,=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D.env?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 13 ++++++++ config/bot_config_toml | 8 ----- src/plugins/chat/__init__.py | 9 +++-- src/plugins/chat/config.py | 33 ++----------------- src/plugins/chat/llm_generator.py | 6 ---- src/plugins/chat/prompt_builder.py | 6 ---- src/plugins/chat/utils_image.py | 12 +++---- src/plugins/knowledege/knowledge_library.py | 9 +++-- src/plugins/memory_system/draw_memory.py | 10 ++++-- src/plugins/memory_system/llm_module.py | 4 --- .../memory_system/llm_module_memory_make.py | 14 -------- src/plugins/memory_system/memory_make.py | 23 ++++--------- src/plugins/schedule/schedule_generator.py | 13 -------- src/plugins/schedule/schedule_llm_module.py | 4 --- 14 files changed, 46 insertions(+), 118 deletions(-) diff --git a/bot.py b/bot.py index f9544f404..fca7bc5a4 100644 --- a/bot.py +++ b/bot.py @@ -1,5 +1,8 @@ +import os import nonebot from nonebot.adapters.onebot.v11 import Adapter +from dotenv import load_dotenv +from loguru import logger # 初始化 NoneBot nonebot.init( @@ -19,4 +22,14 @@ driver.register_adapter(Adapter) nonebot.load_plugins("src/plugins") if __name__ == "__main__": + # 加载全局环境变量 + root_dir = os.path.dirname(os.path.abspath(__file__)) + env_path=os.path.join(root_dir, "config",'.env') + + logger.info(f"尝试从 {env_path} 加载环境变量配置") + if os.path.exists(env_path): + load_dotenv(env_path) + logger.success("成功加载环境变量配置") + else: + logger.error(f"环境变量配置文件不存在: {env_path}") nonebot.run() \ No newline at end of file diff --git a/config/bot_config_toml b/config/bot_config_toml index b5011c7f9..83a3c4971 100644 --- a/config/bot_config_toml +++ b/config/bot_config_toml @@ -1,11 +1,3 @@ -[database] -host = "127.0.0.1" -port = 27017 -name = "MegBot" -username = "" # 默认空值 -password = "" # 默认空值 -auth_source = "" # 默认空值 - [bot] qq = 123456 #填入你的机器人QQ nickname = "麦麦" #你希望bot被称呼的名字 diff --git a/src/plugins/chat/__init__.py b/src/plugins/chat/__init__.py index 1c25a24f1..6fc896ac8 100644 --- a/src/plugins/chat/__init__.py +++ b/src/plugins/chat/__init__.py @@ -15,9 +15,12 @@ from .willing_manager import willing_manager driver = get_driver() Database.initialize( - global_config.MONGODB_HOST, - global_config.MONGODB_PORT, - global_config.DATABASE_NAME + host= os.getenv("MONGODB_HOST"), + port= int(os.getenv("MONGODB_PORT")), + db_name= os.getenv("DATABASE_NAME"), + username= os.getenv("MONGODB_USERNAME"), + password= os.getenv("MONGODB_PASSWORD"), + auth_source=os.getenv("MONGODB_AUTH_SOURCE") ) print("\033[1;32m[初始化数据库完成]\033[0m") diff --git a/src/plugins/chat/config.py b/src/plugins/chat/config.py index 05d492789..a98ae6f82 100644 --- a/src/plugins/chat/config.py +++ b/src/plugins/chat/config.py @@ -7,22 +7,12 @@ import configparser import tomli import sys from loguru import logger -from dotenv import load_dotenv @dataclass class BotConfig: - """机器人配置类""" - - # 基础配置 - MONGODB_HOST: str = "127.0.0.1" - MONGODB_PORT: int = 27017 - DATABASE_NAME: str = "MegBot" - MONGODB_USERNAME: Optional[str] = None # 默认空值 - MONGODB_PASSWORD: Optional[str] = None # 默认空值 - MONGODB_AUTH_SOURCE: Optional[str] = None # 默认空值 - + """机器人配置类""" BOT_QQ: Optional[int] = 1 BOT_NICKNAME: Optional[str] = None @@ -67,17 +57,7 @@ class BotConfig: if os.path.exists(config_path): with open(config_path, "rb") as f: toml_dict = tomli.load(f) - - # 数据库配置 - if "database" in toml_dict: - db_config = toml_dict["database"] - config.MONGODB_HOST = db_config.get("host", config.MONGODB_HOST) - config.MONGODB_PORT = db_config.get("port", config.MONGODB_PORT) - config.DATABASE_NAME = db_config.get("name", config.DATABASE_NAME) - config.MONGODB_USERNAME = db_config.get("username", config.MONGODB_USERNAME) or None # 空字符串转为 None - config.MONGODB_PASSWORD = db_config.get("password", config.MONGODB_PASSWORD) or None # 空字符串转为 None - config.MONGODB_AUTH_SOURCE = db_config.get("auth_source", config.MONGODB_AUTH_SOURCE) or None # 空字符串转为 None - + if "emoji" in toml_dict: emoji_config = toml_dict["emoji"] config.EMOJI_CHECK_INTERVAL = emoji_config.get("check_interval", config.EMOJI_CHECK_INTERVAL) @@ -135,15 +115,6 @@ env_path = os.path.join(config_dir, '.env') logger.info(f"尝试从 {bot_config_path} 加载机器人配置") global_config = BotConfig.load_config(config_path=bot_config_path) -# 加载环境变量 - -logger.info(f"尝试从 {env_path} 加载环境变量配置") -if os.path.exists(env_path): - load_dotenv(env_path) - logger.success("成功加载环境变量配置") -else: - logger.error(f"环境变量配置文件不存在: {env_path}") - @dataclass class LLMConfig: """机器人配置类""" diff --git a/src/plugins/chat/llm_generator.py b/src/plugins/chat/llm_generator.py index 2ea4d7f24..6affe6002 100644 --- a/src/plugins/chat/llm_generator.py +++ b/src/plugins/chat/llm_generator.py @@ -10,7 +10,6 @@ import random import time import os import numpy as np -from dotenv import load_dotenv from .relationship_manager import relationship_manager from ..schedule.schedule_generator import bot_schedule from .prompt_builder import prompt_builder @@ -18,11 +17,6 @@ from .config import llm_config, global_config from .utils import process_llm_response -# 获取当前文件的绝对路径 -current_dir = os.path.dirname(os.path.abspath(__file__)) -root_dir = os.path.abspath(os.path.join(current_dir, '..', '..', '..')) -load_dotenv(os.path.join(root_dir, '.env')) - class LLMResponseGenerator: def __init__(self, config: BotConfig): self.config = config diff --git a/src/plugins/chat/prompt_builder.py b/src/plugins/chat/prompt_builder.py index da9037cfa..3d86724f3 100644 --- a/src/plugins/chat/prompt_builder.py +++ b/src/plugins/chat/prompt_builder.py @@ -1,6 +1,5 @@ import time import random -from dotenv import load_dotenv from ..schedule.schedule_generator import bot_schedule import os from .utils import get_embedding, combine_messages, get_recent_group_detailed_plain_text @@ -10,11 +9,6 @@ from .topic_identifier import topic_identifier from ..memory_system.memory import memory_graph from random import choice -# 获取当前文件的绝对路径 -current_dir = os.path.dirname(os.path.abspath(__file__)) -root_dir = os.path.abspath(os.path.join(current_dir, '..', '..', '..')) -load_dotenv(os.path.join(root_dir, '.env')) - class PromptBuilder: def __init__(self): diff --git a/src/plugins/chat/utils_image.py b/src/plugins/chat/utils_image.py index 9fe2c40cc..097294010 100644 --- a/src/plugins/chat/utils_image.py +++ b/src/plugins/chat/utils_image.py @@ -37,12 +37,12 @@ def storage_compress_image(image_data: bytes, max_size: int = 200) -> bytes: # 连接数据库 db = Database( - host=global_config.MONGODB_HOST, - port=global_config.MONGODB_PORT, - db_name=global_config.DATABASE_NAME, - username=global_config.MONGODB_USERNAME, - password=global_config.MONGODB_PASSWORD, - auth_source=global_config.MONGODB_AUTH_SOURCE + host= os.getenv("MONGODB_HOST"), + port= int(os.getenv("MONGODB_PORT")), + db_name= os.getenv("DATABASE_NAME"), + username= os.getenv("MONGODB_USERNAME"), + password= os.getenv("MONGODB_PASSWORD"), + auth_source=os.getenv("MONGODB_AUTH_SOURCE") ) # 检查是否已存在相同哈希值的图片 diff --git a/src/plugins/knowledege/knowledge_library.py b/src/plugins/knowledege/knowledge_library.py index 40756b413..cdb591dee 100644 --- a/src/plugins/knowledege/knowledge_library.py +++ b/src/plugins/knowledege/knowledge_library.py @@ -13,9 +13,12 @@ from src.plugins.chat.config import llm_config # 直接配置数据库连接信息 Database.initialize( - "127.0.0.1", # MongoDB 主机 - 27017, # MongoDB 端口 - "MegBot" # 数据库名称 + host= os.getenv("MONGODB_HOST"), + port= int(os.getenv("MONGODB_PORT")), + db_name= os.getenv("DATABASE_NAME"), + username= os.getenv("MONGODB_USERNAME"), + password= os.getenv("MONGODB_PASSWORD"), + auth_source=os.getenv("MONGODB_AUTH_SOURCE") ) class KnowledgeLibrary: diff --git a/src/plugins/memory_system/draw_memory.py b/src/plugins/memory_system/draw_memory.py index 651d5fbca..a24f95a76 100644 --- a/src/plugins/memory_system/draw_memory.py +++ b/src/plugins/memory_system/draw_memory.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +import os import sys import jieba from llm_module import LLMModel @@ -153,9 +154,12 @@ class Memory_graph: def main(): # 初始化数据库 Database.initialize( - "127.0.0.1", - 27017, - "MegBot" + host= os.getenv("MONGODB_HOST"), + port= int(os.getenv("MONGODB_PORT")), + db_name= os.getenv("DATABASE_NAME"), + username= os.getenv("MONGODB_USERNAME"), + password= os.getenv("MONGODB_PASSWORD"), + auth_source=os.getenv("MONGODB_AUTH_SOURCE") ) memory_graph = Memory_graph() diff --git a/src/plugins/memory_system/llm_module.py b/src/plugins/memory_system/llm_module.py index fa879afdc..4c9174dac 100644 --- a/src/plugins/memory_system/llm_module.py +++ b/src/plugins/memory_system/llm_module.py @@ -1,12 +1,8 @@ import os import requests -from dotenv import load_dotenv from typing import Tuple, Union import time -# 加载环境变量 -load_dotenv() - class LLMModel: # def __init__(self, model_name="deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", **kwargs): def __init__(self, model_name="Pro/deepseek-ai/DeepSeek-V3", **kwargs): diff --git a/src/plugins/memory_system/llm_module_memory_make.py b/src/plugins/memory_system/llm_module_memory_make.py index 1abfdb2c6..07cecae9d 100644 --- a/src/plugins/memory_system/llm_module_memory_make.py +++ b/src/plugins/memory_system/llm_module_memory_make.py @@ -1,23 +1,9 @@ import os import requests -from dotenv import load_dotenv from typing import Tuple, Union import time from ..chat.config import BotConfig -# 获取当前文件的绝对路径 -current_dir = os.path.dirname(os.path.abspath(__file__)) -root_dir = os.path.abspath(os.path.join(current_dir, '..', '..', '..')) -env_path = os.path.join(root_dir, 'config', '.env') - -# 加载环境变量 -print(f"尝试从 {env_path} 加载环境变量配置") -if os.path.exists(env_path): - load_dotenv(env_path) - print("成功加载环境变量配置") -else: - print(f"环境变量配置文件不存在: {env_path}") - class LLMModel: # def __init__(self, model_name="deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", **kwargs): def __init__(self, model_name="Pro/deepseek-ai/DeepSeek-V3", **kwargs): diff --git a/src/plugins/memory_system/memory_make.py b/src/plugins/memory_system/memory_make.py index 244838e21..0c1c0d219 100644 --- a/src/plugins/memory_system/memory_make.py +++ b/src/plugins/memory_system/memory_make.py @@ -9,7 +9,6 @@ import datetime import random import time import os -from dotenv import load_dotenv # from chat.config import global_config sys.path.append("C:/GitHub/MaiMBot") # 添加项目根目录到 Python 路径 from src.common.database import Database # 使用正确的导入语法 @@ -219,24 +218,14 @@ def calculate_information_content(text): def main(): - # 获取当前文件的绝对路径 - current_dir = os.path.dirname(os.path.abspath(__file__)) - root_dir = os.path.abspath(os.path.join(current_dir, '..', '..', '..')) - env_path = os.path.join(root_dir, 'config', '.env') - - # 加载环境变量 - print(f"尝试从 {env_path} 加载环境变量配置") - if os.path.exists(env_path): - load_dotenv(env_path) - print("成功加载环境变量配置") - else: - print(f"环境变量配置文件不存在: {env_path}") - # 初始化数据库 Database.initialize( - "127.0.0.1", - 27017, - "MegBot" + host= os.getenv("MONGODB_HOST"), + port= int(os.getenv("MONGODB_PORT")), + db_name= os.getenv("DATABASE_NAME"), + username= os.getenv("MONGODB_USERNAME"), + password= os.getenv("MONGODB_PASSWORD"), + auth_source=os.getenv("MONGODB_AUTH_SOURCE") ) memory_graph = Memory_graph() diff --git a/src/plugins/schedule/schedule_generator.py b/src/plugins/schedule/schedule_generator.py index d1778d878..097a89de8 100644 --- a/src/plugins/schedule/schedule_generator.py +++ b/src/plugins/schedule/schedule_generator.py @@ -2,22 +2,9 @@ import datetime import os from typing import List, Dict from .schedule_llm_module import LLMModel -from dotenv import load_dotenv from ...common.database import Database # 使用正确的导入语法 from ..chat.config import global_config - -# import sys -# sys.path.append("C:/GitHub/MegMeg-bot") # 添加项目根目录到 Python 路径 -# from src.plugins.schedule.schedule_llm_module import LLMModel -# from src.common.database import Database # 使用正确的导入语法 - -# 获取当前文件的绝对路径 -#TODO: 这个好几个地方用需要封装 -current_dir = os.path.dirname(os.path.abspath(__file__)) -root_dir = os.path.abspath(os.path.join(current_dir, '..', '..', '..')) -load_dotenv(os.path.join(root_dir, '.env')) - Database.initialize( host= os.getenv("MONGODB_HOST"), port= int(os.getenv("MONGODB_PORT")), diff --git a/src/plugins/schedule/schedule_llm_module.py b/src/plugins/schedule/schedule_llm_module.py index 13945afb3..d4fdfd86b 100644 --- a/src/plugins/schedule/schedule_llm_module.py +++ b/src/plugins/schedule/schedule_llm_module.py @@ -1,11 +1,7 @@ import os import requests -from dotenv import load_dotenv from typing import Tuple, Union -# 加载环境变量 -load_dotenv() - class LLMModel: # def __init__(self, model_name="deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", **kwargs): def __init__(self, model_name="Pro/deepseek-ai/DeepSeek-R1",api_using=None, **kwargs):