From e24634d818a6d38c6e32f1df854a743f2496d6c7 Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Tue, 23 Sep 2025 12:41:38 +0800 Subject: [PATCH 1/9] =?UTF-8?q?***=E6=95=B0=E6=8D=AE=E5=BA=93=E6=80=8E?= =?UTF-8?q?=E4=B9=88=E6=9C=89=E8=99=AB=E5=AD=90=E5=95=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/database/sqlalchemy_models.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/common/database/sqlalchemy_models.py b/src/common/database/sqlalchemy_models.py index 2b276213d..996dd5a45 100644 --- a/src/common/database/sqlalchemy_models.py +++ b/src/common/database/sqlalchemy_models.py @@ -639,14 +639,9 @@ async def initialize_database(): } ) else: - # SQLite配置 - 异步引擎使用默认连接池 + # SQLite配置 - aiosqlite不支持连接池参数 engine_kwargs.update( { - "pool_size": 20, # 增加池大小 - "max_overflow": 30, # 增加溢出连接数 - "pool_timeout": 60, # 增加超时时间 - "pool_recycle": 3600, # 1小时回收连接 - "pool_pre_ping": True, # 连接前ping检查 "connect_args": { "check_same_thread": False, "timeout": 30, From d0b4b8bb8bcd2503f354bfa8ef6664a9d49f1b84 Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Tue, 23 Sep 2025 13:10:44 +0800 Subject: [PATCH 2/9] =?UTF-8?q?fix(plugin=5Fsystem):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=97=A0=E9=85=8D=E7=BD=AE=E6=8F=92=E4=BB=B6=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E6=97=B6=E4=BA=A7=E7=94=9F=E4=B8=8D=E5=BF=85=E8=A6=81=E8=AD=A6?= =?UTF-8?q?=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对于未定义 `config_schema` 的插件,现在会将其视作一种正常情况,并为其分配一个空的配置。 此举修复了先前版本中,这类插件在加载时会错误地触发“配置文件不存在”警告的问题。同时将生成默认配置文件的日志等级从 debug 调整为 info,使其在默认情况下可见。 --- src/common/database/db_migration.py | 64 ++++++++++++++++----------- src/plugin_system/base/plugin_base.py | 8 +++- 2 files changed, 45 insertions(+), 27 deletions(-) diff --git a/src/common/database/db_migration.py b/src/common/database/db_migration.py index a1633d76c..b7f56abd9 100644 --- a/src/common/database/db_migration.py +++ b/src/common/database/db_migration.py @@ -1,7 +1,8 @@ # mmc/src/common/database/db_migration.py from sqlalchemy import inspect -from sqlalchemy.schema import AddColumn, CreateIndex +from sqlalchemy.schema import CreateIndex +from sqlalchemy.sql import text from src.common.database.sqlalchemy_models import Base, get_engine from src.common.logger import get_logger @@ -17,7 +18,7 @@ async def check_and_migrate_database(): - 自动为现有表创建缺失的索引。 """ logger.info("正在检查数据库结构并执行自动迁移...") - engine = await get_engine() + engine = get_engine() async with engine.connect() as connection: # 在同步上下文中运行inspector操作 @@ -66,20 +67,34 @@ async def check_and_migrate_database(): if missing_columns: logger.info(f"在表 '{table_name}' 中发现缺失的列: {', '.join(missing_columns)}") - async with connection.begin() as trans: + + def add_columns_sync(conn): + dialect = conn.dialect for column_name in missing_columns: - try: - column = table.c[column_name] - add_column_ddl = AddColumn(table_name, column) - await connection.execute(add_column_ddl) - logger.info(f"成功向表 '{table_name}' 添加列 '{column_name}'。") - except Exception as e: - logger.error( - f"向表 '{table_name}' 添加列 '{column_name}' 失败: {e}", - exc_info=True, - ) - await trans.rollback() - break # 如果一列失败,则停止处理此表的其他列 + column = table.c[column_name] + + # 使用DDLCompiler为特定方言编译列 + compiler = dialect.ddl_compiler(dialect, None) + + # 编译列的数据类型 + column_type = compiler.get_column_specification(column) + + # 构建原生SQL + sql = f"ALTER TABLE {table.name} ADD COLUMN {column.name} {column_type}" + + # 添加默认值(如果存在) + if column.default: + default_value = compiler.render_literal_value(column.default.arg, column.type) + sql += f" DEFAULT {default_value}" + + # 添加非空约束(如果存在) + if not column.nullable: + sql += " NOT NULL" + + conn.execute(text(sql)) + logger.info(f"成功向表 '{table_name}' 添加列 '{column_name}'。") + + await connection.run_sync(add_columns_sync) else: logger.info(f"表 '{table_name}' 的列结构一致。") @@ -92,20 +107,16 @@ async def check_and_migrate_database(): if missing_indexes: logger.info(f"在表 '{table_name}' 中发现缺失的索引: {', '.join(missing_indexes)}") - async with connection.begin() as trans: - for index_name in missing_indexes: - try: + + def add_indexes_sync(conn): + with conn.begin(): + for index_name in missing_indexes: index_obj = next((idx for idx in table.indexes if idx.name == index_name), None) if index_obj is not None: - await connection.execute(CreateIndex(index_obj)) + conn.execute(CreateIndex(index_obj)) logger.info(f"成功为表 '{table_name}' 创建索引 '{index_name}'。") - except Exception as e: - logger.error( - f"为表 '{table_name}' 创建索引 '{index_name}' 失败: {e}", - exc_info=True, - ) - await trans.rollback() - break # 如果一个索引失败,则停止处理此表的其他索引 + + await connection.run_sync(add_indexes_sync) else: logger.debug(f"表 '{table_name}' 的索引一致。") @@ -114,3 +125,4 @@ async def check_and_migrate_database(): continue logger.info("数据库结构检查与自动迁移完成。") + diff --git a/src/plugin_system/base/plugin_base.py b/src/plugin_system/base/plugin_base.py index fa5936b81..9ef95182d 100644 --- a/src/plugin_system/base/plugin_base.py +++ b/src/plugin_system/base/plugin_base.py @@ -215,7 +215,7 @@ class PluginBase(ABC): def _generate_and_save_default_config(self, config_file_path: str): """根据插件的Schema生成并保存默认配置文件""" if not self.config_schema: - logger.debug(f"{self.log_prefix} 插件未定义config_schema,不生成配置文件") + logger.info(f"{self.log_prefix} 插件未定义config_schema,不生成配置文件") return toml_str = f"# {self.plugin_name} - 自动生成的配置文件\n" @@ -479,6 +479,12 @@ class PluginBase(ABC): # 检查最终的用户配置文件是否存在 if not os.path.exists(user_config_path): + # 如果插件没有定义config_schema,那么不创建文件是正常行为 + if not self.config_schema: + logger.debug(f"{self.log_prefix} 插件未定义config_schema,使用空的配置.") + self.config = {} + return + logger.warning(f"{self.log_prefix} 用户配置文件 {user_config_path} 不存在且无法创建。") return From 1f2956e72505d6ede611dbc537c8c52ce03c2ae3 Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Tue, 23 Sep 2025 14:05:16 +0800 Subject: [PATCH 3/9] =?UTF-8?q?fix(db):=20=E9=80=82=E9=85=8D=20SQLAlchemy?= =?UTF-8?q?=202.0=20API=20=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新了与数据库交互的代码,以适配 SQLAlchemy 2.0 引入的 API 变更,解决相关的废弃警告和异步调用问题。 主要变更包括: - 使用 `scalars().first()` 替代已废弃的 `scalar()` 方法。 - 在获取所有标量结果时显式调用 `.all()`。 - 对异步引擎 `get_engine()` 的调用进行 `await`。 - 移除了向 Inspector 方法(如 `get_table_names`)传递多余的 `conn` 参数。 --- src/chat/message_receive/chat_stream.py | 4 ++-- src/common/database/db_migration.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/chat/message_receive/chat_stream.py b/src/chat/message_receive/chat_stream.py index 6360928b1..c42654aa3 100644 --- a/src/chat/message_receive/chat_stream.py +++ b/src/chat/message_receive/chat_stream.py @@ -249,7 +249,7 @@ class ChatManager: # 检查数据库中是否存在 async def _db_find_stream_async(s_id: str): async with get_db_session() as session: - return (await session.execute(select(ChatStreams).where(ChatStreams.stream_id == s_id))).scalar() + return (await session.execute(select(ChatStreams).where(ChatStreams.stream_id == s_id))).scalars().first() model_instance = await _db_find_stream_async(stream_id) @@ -396,7 +396,7 @@ class ChatManager: async def _db_load_all_streams_async(): loaded_streams_data = [] async with get_db_session() as session: - for model_instance in (await session.execute(select(ChatStreams))).scalars(): + for model_instance in (await session.execute(select(ChatStreams))).scalars().all(): user_info_data = { "platform": model_instance.user_platform, "user_id": model_instance.user_id, diff --git a/src/common/database/db_migration.py b/src/common/database/db_migration.py index b7f56abd9..aedff3676 100644 --- a/src/common/database/db_migration.py +++ b/src/common/database/db_migration.py @@ -18,7 +18,7 @@ async def check_and_migrate_database(): - 自动为现有表创建缺失的索引。 """ logger.info("正在检查数据库结构并执行自动迁移...") - engine = get_engine() + engine = await get_engine() async with engine.connect() as connection: # 在同步上下文中运行inspector操作 @@ -28,7 +28,7 @@ async def check_and_migrate_database(): inspector = await connection.run_sync(get_inspector) # 在同步lambda中传递inspector - db_table_names = await connection.run_sync(lambda conn: set(inspector.get_table_names(conn))) + db_table_names = await connection.run_sync(lambda conn: set(inspector.get_table_names())) # 1. 首先处理表的创建 tables_to_create = [] @@ -60,7 +60,7 @@ async def check_and_migrate_database(): try: # 检查并添加缺失的列 db_columns = await connection.run_sync( - lambda conn: {col["name"] for col in inspector.get_columns(table_name, conn)} + lambda conn: {col["name"] for col in inspector.get_columns(table_name)} ) model_columns = {col.name for col in table.c} missing_columns = model_columns - db_columns @@ -100,7 +100,7 @@ async def check_and_migrate_database(): # 检查并创建缺失的索引 db_indexes = await connection.run_sync( - lambda conn: {idx["name"] for idx in inspector.get_indexes(table_name, conn)} + lambda conn: {idx["name"] for idx in inspector.get_indexes(table_name)} ) model_indexes = {idx.name for idx in table.indexes} missing_indexes = model_indexes - db_indexes From b6792149f9ca3ad6008c0df7dacefe330272fd83 Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Tue, 23 Sep 2025 14:08:54 +0800 Subject: [PATCH 4/9] =?UTF-8?q?fix(permission):=20=E5=B0=86=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=AE=A1=E7=90=86=E5=99=A8=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=BC=82=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PermissionManager` 的 `__init__` 方法中包含了同步的数据库初始化操作,这会在异步环境中阻塞事件循环。 本次提交将数据库连接的逻辑移至一个新的异步方法 `initialize()` 中,并在应用启动时显式调用和等待它。这确保了数据库的初始化过程是异步执行的,避免了潜在的性能问题。 BREAKING CHANGE: `PermissionManager` 实例化后需要手动调用并等待 `initialize()` 方法来完成数据库初始化。 --- src/main.py | 1 + src/plugin_system/core/permission_manager.py | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main.py b/src/main.py index 22c6218c9..734502271 100644 --- a/src/main.py +++ b/src/main.py @@ -223,6 +223,7 @@ MoFox_Bot(第三方修改版) from src.plugin_system.apis.permission_api import permission_api permission_manager = PermissionManager() + await permission_manager.initialize() permission_api.set_permission_manager(permission_manager) logger.info("权限管理器初始化成功") diff --git a/src/plugin_system/core/permission_manager.py b/src/plugin_system/core/permission_manager.py index eb6083fc9..c79012e13 100644 --- a/src/plugin_system/core/permission_manager.py +++ b/src/plugin_system/core/permission_manager.py @@ -22,10 +22,15 @@ class PermissionManager(IPermissionManager): """权限管理器实现类""" def __init__(self): - self.engine = get_engine() - self.SessionLocal = async_sessionmaker(bind=self.engine) + self.engine = None + self.SessionLocal = None self._master_users: Set[Tuple[str, str]] = set() self._load_master_users() + + async def initialize(self): + """异步初始化数据库连接""" + self.engine = await get_engine() + self.SessionLocal = async_sessionmaker(bind=self.engine) logger.info("权限管理器初始化完成") def _load_master_users(self): From b7fba5c8ed2ab337b61208df4287ba1ee21d749b Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Tue, 23 Sep 2025 14:13:44 +0800 Subject: [PATCH 5/9] =?UTF-8?q?fix(schedule):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=97=A5=E7=A8=8B=E7=94=9F=E6=88=90=E5=9C=A8=E8=BF=9E=E7=BB=AD?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E6=97=B6=E6=97=A0=E9=99=90=E9=87=8D=E8=AF=95?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 先前的日程生成逻辑使用无限循环进行重试。在 LLM 服务持续失败或返回无效数据的情况下,这可能导致程序陷入死循环。 本次修改将重试机制改为有固定上限(3次)的循环。如果所有尝试均失败,将记录错误并返回 None,从而确保程序的健壮性。 --- src/schedule/llm_generator.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/schedule/llm_generator.py b/src/schedule/llm_generator.py index 35e35b0b5..5c1464c71 100644 --- a/src/schedule/llm_generator.py +++ b/src/schedule/llm_generator.py @@ -94,11 +94,10 @@ class ScheduleLLMGenerator: 请你扮演我,以我的身份和口吻,为我生成一份完整的24小时日程表。 """ - attempt = 0 - while True: - attempt += 1 + max_retries = 3 + for attempt in range(1, max_retries + 1): try: - logger.info(f"正在生成日程 (第 {attempt} 次尝试)") + logger.info(f"正在生成日程 (第 {attempt}/{max_retries} 次尝试)") prompt = base_prompt if attempt > 1: failure_hint = f""" @@ -118,12 +117,16 @@ class ScheduleLLMGenerator: return schedule_data else: logger.warning(f"第 {attempt} 次生成的日程验证失败,继续重试...") - await asyncio.sleep(2) except Exception as e: logger.error(f"第 {attempt} 次生成日程失败: {e}") - logger.info("继续重试...") - await asyncio.sleep(3) + + if attempt < max_retries: + logger.info("2秒后继续重试...") + await asyncio.sleep(2) + + logger.error("所有尝试都失败,无法生成日程,将会在下次启动时自动重试") + return None @staticmethod def _validate_schedule_with_pydantic(schedule_data) -> bool: From 49baa68bbbab67a9d68ae8a9096da9620760c1c7 Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Tue, 23 Sep 2025 14:16:08 +0800 Subject: [PATCH 6/9] =?UTF-8?q?ci(workflow):=20=E4=B8=BA=E9=A2=84=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E5=B7=A5=E4=BD=9C=E6=B5=81=E6=B7=BB=E5=8A=A0=E5=86=99?= =?UTF-8?q?=E5=85=A5=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为 GITHUB_TOKEN 授予 `contents: write` 权限,以允许工作流创建 GitHub Release。 --- .github/workflows/create-prerelease.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/create-prerelease.yml b/.github/workflows/create-prerelease.yml index b48a894d9..91316e2a4 100644 --- a/.github/workflows/create-prerelease.yml +++ b/.github/workflows/create-prerelease.yml @@ -10,6 +10,8 @@ on: jobs: create-prerelease: runs-on: ubuntu-latest + permissions: + contents: write steps: - name: Checkout code uses: actions/checkout@v4 From 8e2a14a6e447280ec8e01b6ffda4379038704759 Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Tue, 23 Sep 2025 14:30:39 +0800 Subject: [PATCH 7/9] =?UTF-8?q?refactor(chat):=20=E7=A7=BB=E9=99=A4=20brea?= =?UTF-8?q?king=20=E6=A8=A1=E5=BC=8F=E4=B8=8B=E5=A4=8D=E6=9D=82=E7=9A=84?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E7=AD=89=E5=BE=85=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原有的 breaking 模式等待逻辑过于复杂,它会累积新消息的兴趣值,并根据动态阈值(受专注度和发言频率影响)决定何时响应。这种机制可能导致响应延迟且行为难以预测。 本次重构完全移除了该等待与累积机制。现在,系统一旦收到任何新消息,就会立即处理并计算其平均兴趣值,从而确保了响应的及时性和逻辑的简洁性。 --- src/chat/chat_loop/heartFC_chat.py | 66 ++++-------------------------- 1 file changed, 9 insertions(+), 57 deletions(-) diff --git a/src/chat/chat_loop/heartFC_chat.py b/src/chat/chat_loop/heartFC_chat.py index b1c7455b0..bf282da5e 100644 --- a/src/chat/chat_loop/heartFC_chat.py +++ b/src/chat/chat_loop/heartFC_chat.py @@ -559,64 +559,16 @@ class HeartFChatting: if not new_message: return False, 0.0 - new_message_count = len(new_message) - - talk_frequency = global_config.chat.get_current_talk_frequency(self.context.stream_id) - - modified_exit_count_threshold = self.context.focus_energy * 0.5 / talk_frequency - modified_exit_interest_threshold = 1.5 / talk_frequency - - # 计算当前批次消息的兴趣值 - batch_interest = 0.0 + # 计算平均兴趣值 + total_interest = 0.0 + message_count = 0 for msg_dict in new_message: interest_value = msg_dict.get("interest_value", 0.0) if msg_dict.get("processed_plain_text", ""): - batch_interest += interest_value + total_interest += interest_value + message_count += 1 + + avg_interest = total_interest / message_count if message_count > 0 else 0.0 - # 在breaking形式下累积所有消息的兴趣值 - if new_message_count > 0: - self.context.breaking_accumulated_interest += batch_interest - total_interest = self.context.breaking_accumulated_interest - else: - total_interest = self.context.breaking_accumulated_interest - - if new_message_count >= modified_exit_count_threshold: - # 记录兴趣度到列表 - self.recent_interest_records.append(total_interest) - # 重置累积兴趣值,因为已经达到了消息数量阈值 - self.context.breaking_accumulated_interest = 0.0 - - logger.info( - f"{self.context.log_prefix} 累计消息数量达到{new_message_count}条(>{modified_exit_count_threshold:.1f}),结束等待,累积兴趣值: {total_interest:.2f}" - ) - return True, total_interest / new_message_count - - # 检查累计兴趣值 - if new_message_count > 0: - # 只在兴趣值变化时输出log - if not hasattr(self, "_last_accumulated_interest") or total_interest != self._last_accumulated_interest: - logger.info( - f"{self.context.log_prefix} breaking形式当前累积兴趣值: {total_interest:.2f}, 专注度: {global_config.chat.focus_value:.1f}" - ) - self._last_accumulated_interest = total_interest - if total_interest >= modified_exit_interest_threshold: - # 记录兴趣度到列表 - self.recent_interest_records.append(total_interest) - # 重置累积兴趣值,因为已经达到了兴趣值阈值 - self.context.breaking_accumulated_interest = 0.0 - logger.info( - f"{self.context.log_prefix} 累计兴趣值达到{total_interest:.2f}(>{modified_exit_interest_threshold:.1f}),结束等待" - ) - return True, total_interest / new_message_count - - # 每10秒输出一次等待状态 - if ( - int(time.time() - self.context.last_read_time) > 0 - and int(time.time() - self.context.last_read_time) % 10 == 0 - ): - logger.info( - f"{self.context.log_prefix} 已等待{time.time() - self.context.last_read_time:.0f}秒,累计{new_message_count}条消息,累积兴趣{total_interest:.1f},继续等待..." - ) - await asyncio.sleep(0.5) - - return False, 0.0 + logger.info(f"{self.context.log_prefix} 收到 {len(new_message)} 条新消息,立即处理!平均兴趣值: {avg_interest:.2f}") + return True, avg_interest From 04e40624f09973ce395b1cefc42261e844525c86 Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Tue, 23 Sep 2025 14:32:26 +0800 Subject: [PATCH 8/9] =?UTF-8?q?ci(workflow):=20=E4=B8=BA=E9=A2=84=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E6=A0=87=E7=AD=BE=E6=B7=BB=E5=8A=A0=20'MoFox-'=20?= =?UTF-8?q?=E5=89=8D=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/create-prerelease.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/create-prerelease.yml b/.github/workflows/create-prerelease.yml index 91316e2a4..ea0cedcdf 100644 --- a/.github/workflows/create-prerelease.yml +++ b/.github/workflows/create-prerelease.yml @@ -21,7 +21,7 @@ jobs: - name: Generate tag name id: generate_tag - run: echo "TAG_NAME=prerelease-$(date -u +'%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT + run: echo "TAG_NAME=MoFox-prerelease-$(date -u +'%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT - name: Create Pre-release env: From 033752dc22572d3a28b59652c6401b3551f49cc0 Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Tue, 23 Sep 2025 14:35:16 +0800 Subject: [PATCH 9/9] =?UTF-8?q?refactor(config):=20=E7=A7=BB=E9=99=A4=20br?= =?UTF-8?q?eaking=20=E6=A8=A1=E5=BC=8F=E9=85=8D=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 随着 breaking 模式相关逻辑被移除,其配置项已不再需要。 本次提交从配置文件模板中删除了 `enable_breaking_mode` 选项,并更新了内部版本号。 --- template/bot_config_template.toml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index cb00cdebf..3185883ef 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -1,5 +1,5 @@ [inner] -version = "6.8.8" +version = "6.8.9" #----以下是给开发人员阅读的,如果你只是部署了MoFox-Bot,不需要阅读---- #如果你想要修改配置文件,请递增version的值 @@ -153,9 +153,6 @@ focus_value = 1 # 例如: ["qq:123456789", "qq:987654321"] focus_mode_quiet_groups = [] -# breaking模式配置 -enable_breaking_mode = true # 是否启用自动进入breaking模式,关闭后不会自动进入breaking形式 - # 强制私聊回复 force_reply_private = false # 是否强制私聊回复,开启后私聊将强制回复