统一database config,修复.env

This commit is contained in:
NepPure
2025-03-02 10:54:31 +08:00
parent 35589649da
commit 86b76496f6
14 changed files with 46 additions and 118 deletions

13
bot.py
View File

@@ -1,5 +1,8 @@
import os
import nonebot import nonebot
from nonebot.adapters.onebot.v11 import Adapter from nonebot.adapters.onebot.v11 import Adapter
from dotenv import load_dotenv
from loguru import logger
# 初始化 NoneBot # 初始化 NoneBot
nonebot.init( nonebot.init(
@@ -19,4 +22,14 @@ driver.register_adapter(Adapter)
nonebot.load_plugins("src/plugins") nonebot.load_plugins("src/plugins")
if __name__ == "__main__": 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() nonebot.run()

View File

@@ -1,11 +1,3 @@
[database]
host = "127.0.0.1"
port = 27017
name = "MegBot"
username = "" # 默认空值
password = "" # 默认空值
auth_source = "" # 默认空值
[bot] [bot]
qq = 123456 #填入你的机器人QQ qq = 123456 #填入你的机器人QQ
nickname = "麦麦" #你希望bot被称呼的名字 nickname = "麦麦" #你希望bot被称呼的名字

View File

@@ -15,9 +15,12 @@ from .willing_manager import willing_manager
driver = get_driver() driver = get_driver()
Database.initialize( Database.initialize(
global_config.MONGODB_HOST, host= os.getenv("MONGODB_HOST"),
global_config.MONGODB_PORT, port= int(os.getenv("MONGODB_PORT")),
global_config.DATABASE_NAME 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") print("\033[1;32m[初始化数据库完成]\033[0m")

View File

@@ -7,22 +7,12 @@ import configparser
import tomli import tomli
import sys import sys
from loguru import logger from loguru import logger
from dotenv import load_dotenv
@dataclass @dataclass
class BotConfig: 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_QQ: Optional[int] = 1
BOT_NICKNAME: Optional[str] = None BOT_NICKNAME: Optional[str] = None
@@ -68,16 +58,6 @@ class BotConfig:
with open(config_path, "rb") as f: with open(config_path, "rb") as f:
toml_dict = tomli.load(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: if "emoji" in toml_dict:
emoji_config = toml_dict["emoji"] emoji_config = toml_dict["emoji"]
config.EMOJI_CHECK_INTERVAL = emoji_config.get("check_interval", config.EMOJI_CHECK_INTERVAL) 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} 加载机器人配置") logger.info(f"尝试从 {bot_config_path} 加载机器人配置")
global_config = BotConfig.load_config(config_path=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 @dataclass
class LLMConfig: class LLMConfig:
"""机器人配置类""" """机器人配置类"""

View File

@@ -10,7 +10,6 @@ import random
import time import time
import os import os
import numpy as np import numpy as np
from dotenv import load_dotenv
from .relationship_manager import relationship_manager from .relationship_manager import relationship_manager
from ..schedule.schedule_generator import bot_schedule from ..schedule.schedule_generator import bot_schedule
from .prompt_builder import prompt_builder from .prompt_builder import prompt_builder
@@ -18,11 +17,6 @@ from .config import llm_config, global_config
from .utils import process_llm_response 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: class LLMResponseGenerator:
def __init__(self, config: BotConfig): def __init__(self, config: BotConfig):
self.config = config self.config = config

View File

@@ -1,6 +1,5 @@
import time import time
import random import random
from dotenv import load_dotenv
from ..schedule.schedule_generator import bot_schedule from ..schedule.schedule_generator import bot_schedule
import os import os
from .utils import get_embedding, combine_messages, get_recent_group_detailed_plain_text 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 ..memory_system.memory import memory_graph
from random import choice 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: class PromptBuilder:
def __init__(self): def __init__(self):

View File

@@ -37,12 +37,12 @@ def storage_compress_image(image_data: bytes, max_size: int = 200) -> bytes:
# 连接数据库 # 连接数据库
db = Database( db = Database(
host=global_config.MONGODB_HOST, host= os.getenv("MONGODB_HOST"),
port=global_config.MONGODB_PORT, port= int(os.getenv("MONGODB_PORT")),
db_name=global_config.DATABASE_NAME, db_name= os.getenv("DATABASE_NAME"),
username=global_config.MONGODB_USERNAME, username= os.getenv("MONGODB_USERNAME"),
password=global_config.MONGODB_PASSWORD, password= os.getenv("MONGODB_PASSWORD"),
auth_source=global_config.MONGODB_AUTH_SOURCE auth_source=os.getenv("MONGODB_AUTH_SOURCE")
) )
# 检查是否已存在相同哈希值的图片 # 检查是否已存在相同哈希值的图片

View File

@@ -13,9 +13,12 @@ from src.plugins.chat.config import llm_config
# 直接配置数据库连接信息 # 直接配置数据库连接信息
Database.initialize( Database.initialize(
"127.0.0.1", # MongoDB 主机 host= os.getenv("MONGODB_HOST"),
27017, # MongoDB 端口 port= int(os.getenv("MONGODB_PORT")),
"MegBot" # 数据库名称 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: class KnowledgeLibrary:

View File

@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os
import sys import sys
import jieba import jieba
from llm_module import LLMModel from llm_module import LLMModel
@@ -153,9 +154,12 @@ class Memory_graph:
def main(): def main():
# 初始化数据库 # 初始化数据库
Database.initialize( Database.initialize(
"127.0.0.1", host= os.getenv("MONGODB_HOST"),
27017, port= int(os.getenv("MONGODB_PORT")),
"MegBot" 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() memory_graph = Memory_graph()

View File

@@ -1,12 +1,8 @@
import os import os
import requests import requests
from dotenv import load_dotenv
from typing import Tuple, Union from typing import Tuple, Union
import time import time
# 加载环境变量
load_dotenv()
class LLMModel: class LLMModel:
# def __init__(self, model_name="deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", **kwargs): # def __init__(self, model_name="deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", **kwargs):
def __init__(self, model_name="Pro/deepseek-ai/DeepSeek-V3", **kwargs): def __init__(self, model_name="Pro/deepseek-ai/DeepSeek-V3", **kwargs):

View File

@@ -1,23 +1,9 @@
import os import os
import requests import requests
from dotenv import load_dotenv
from typing import Tuple, Union from typing import Tuple, Union
import time import time
from ..chat.config import BotConfig 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: class LLMModel:
# def __init__(self, model_name="deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", **kwargs): # def __init__(self, model_name="deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", **kwargs):
def __init__(self, model_name="Pro/deepseek-ai/DeepSeek-V3", **kwargs): def __init__(self, model_name="Pro/deepseek-ai/DeepSeek-V3", **kwargs):

View File

@@ -9,7 +9,6 @@ import datetime
import random import random
import time import time
import os import os
from dotenv import load_dotenv
# from chat.config import global_config # from chat.config import global_config
sys.path.append("C:/GitHub/MaiMBot") # 添加项目根目录到 Python 路径 sys.path.append("C:/GitHub/MaiMBot") # 添加项目根目录到 Python 路径
from src.common.database import Database # 使用正确的导入语法 from src.common.database import Database # 使用正确的导入语法
@@ -219,24 +218,14 @@ def calculate_information_content(text):
def main(): 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( Database.initialize(
"127.0.0.1", host= os.getenv("MONGODB_HOST"),
27017, port= int(os.getenv("MONGODB_PORT")),
"MegBot" 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() memory_graph = Memory_graph()

View File

@@ -2,22 +2,9 @@ import datetime
import os import os
from typing import List, Dict from typing import List, Dict
from .schedule_llm_module import LLMModel from .schedule_llm_module import LLMModel
from dotenv import load_dotenv
from ...common.database import Database # 使用正确的导入语法 from ...common.database import Database # 使用正确的导入语法
from ..chat.config import global_config 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( Database.initialize(
host= os.getenv("MONGODB_HOST"), host= os.getenv("MONGODB_HOST"),
port= int(os.getenv("MONGODB_PORT")), port= int(os.getenv("MONGODB_PORT")),

View File

@@ -1,11 +1,7 @@
import os import os
import requests import requests
from dotenv import load_dotenv
from typing import Tuple, Union from typing import Tuple, Union
# 加载环境变量
load_dotenv()
class LLMModel: class LLMModel:
# def __init__(self, model_name="deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", **kwargs): # 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): def __init__(self, model_name="Pro/deepseek-ai/DeepSeek-R1",api_using=None, **kwargs):