统一database config,修复.env
This commit is contained in:
13
bot.py
13
bot.py
@@ -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()
|
||||||
@@ -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被称呼的名字
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
@@ -67,17 +57,7 @@ class BotConfig:
|
|||||||
if os.path.exists(config_path):
|
if os.path.exists(config_path):
|
||||||
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:
|
||||||
"""机器人配置类"""
|
"""机器人配置类"""
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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")
|
||||||
)
|
)
|
||||||
|
|
||||||
# 检查是否已存在相同哈希值的图片
|
# 检查是否已存在相同哈希值的图片
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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")),
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user