颜文字分割问题修正

This commit is contained in:
Ark-Hakobune
2025-03-17 22:51:21 +08:00
parent 5795efa593
commit 300a0d4129
2 changed files with 691 additions and 637 deletions

View File

@@ -2,12 +2,12 @@
@setlocal enabledelayedexpansion @setlocal enabledelayedexpansion
@chcp 936 @chcp 936
@REM <EFBFBD><EFBFBD><EFBFBD>ð汾<EFBFBD><EFBFBD> @REM 设置版本号
set "VERSION=1.0" set "VERSION=1.0"
title <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bot<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨ v%VERSION% title 麦麦Bot控制台 v%VERSION%
@REM <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Python<EFBFBD><EFBFBD>Git<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @REM 设置PythonGit环境变量
set "_root=%~dp0" set "_root=%~dp0"
set "_root=%_root:~0,-1%" set "_root=%_root:~0,-1%"
cd "%_root%" cd "%_root%"
@@ -21,14 +21,14 @@ if exist "%_root%\python" (
call "%_root%\venv\Scripts\activate.bat" call "%_root%\venv\Scripts\activate.bat"
set "PYTHON_HOME=%_root%\venv\Scripts" set "PYTHON_HOME=%_root%\venv\Scripts"
) else ( ) else (
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Python<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 正在自动查找Python解释器...
where python >nul 2>&1 where python >nul 2>&1
if %errorlevel% equ 0 ( if %errorlevel% equ 0 (
for /f "delims=" %%i in ('where python') do ( for /f "delims=" %%i in ('where python') do (
echo %%i | findstr /i /c:"!LocalAppData!\Microsoft\WindowsApps\python.exe" >nul echo %%i | findstr /i /c:"!LocalAppData!\Microsoft\WindowsApps\python.exe" >nul
if errorlevel 1 ( if errorlevel 1 (
echo <EFBFBD>ҵ<EFBFBD>Python<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%%i echo 找到Python解释器:%%i
set "py_path=%%i" set "py_path=%%i"
goto :validate_python goto :validate_python
) )
@@ -41,46 +41,46 @@ if exist "%_root%\python" (
goto :validate_python goto :validate_python
) )
) )
echo û<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>Python<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D2AA>װ<EFBFBD><D7B0>? echo 没有找到Python解释器,要安装吗?
set /p pyinstall_confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/n): " set /p pyinstall_confirm="继续?(Y/n): "
if /i "!pyinstall_confirm!"=="Y" ( if /i "!pyinstall_confirm!"=="Y" (
cls cls
echo <EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD>װPython... echo 正在安装Python...
winget install --id Python.Python.3.13 -e --accept-package-agreements --accept-source-agreements winget install --id Python.Python.3.13 -e --accept-package-agreements --accept-source-agreements
if %errorlevel% neq 0 ( if %errorlevel% neq 0 (
echo <EFBFBD><EFBFBD>װʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>װPython echo 安装失败,请手动安装Python
start https://www.python.org/downloads/ start https://www.python.org/downloads/
exit /b exit /b
) )
echo <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤Python... echo 安装完成,正在验证Python...
goto search_python goto search_python
) else ( ) else (
echo ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>װPython<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>... echo 取消安装Python按任意键退出...
pause >nul pause >nul
exit /b exit /b
) )
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>Python<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 错误未找到可用的Python解释器
exit /b 1 exit /b 1
:validate_python :validate_python
"!py_path!" --version >nul 2>&1 "!py_path!" --version >nul 2>&1
if %errorlevel% neq 0 ( if %errorlevel% neq 0 (
echo <EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>Python<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%py_path% echo 无效的Python解释器:%py_path%
exit /b 1 exit /b 1
) )
:: <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>װĿ¼ :: 提取安装目录
for %%i in ("%py_path%") do set "PYTHON_HOME=%%~dpi" for %%i in ("%py_path%") do set "PYTHON_HOME=%%~dpi"
set "PYTHON_HOME=%PYTHON_HOME:~0,-1%" set "PYTHON_HOME=%PYTHON_HOME:~0,-1%"
) )
if not exist "%PYTHON_HOME%\python.exe" ( if not exist "%PYTHON_HOME%\python.exe" (
echo Python·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤ʧ<EFBFBD>ܣ<EFBFBD>%PYTHON_HOME% echo Python路径验证失败:%PYTHON_HOME%
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Python<EFBFBD><EFBFBD>װ·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>python.exe<EFBFBD>ļ<EFBFBD> echo 请检查Python安装路径中是否有python.exe文件
exit /b 1 exit /b 1
) )
echo <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Python·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%PYTHON_HOME% echo 成功设置Python路径:%PYTHON_HOME%
@@ -89,7 +89,7 @@ cls
if exist "%_root%\tools\git\bin" ( if exist "%_root%\tools\git\bin" (
set "GIT_HOME=%_root%\tools\git\bin" set "GIT_HOME=%_root%\tools\git\bin"
) else ( ) else (
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Git... echo 正在自动查找Git...
where git >nul 2>&1 where git >nul 2>&1
if %errorlevel% equ 0 ( if %errorlevel% equ 0 (
@@ -98,7 +98,7 @@ if exist "%_root%\tools\git\bin" (
goto :validate_git goto :validate_git
) )
) )
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ·<EFBFBD><EFBFBD>... echo 正在扫描常见安装路径...
set "search_paths=!ProgramFiles!\Git\cmd" set "search_paths=!ProgramFiles!\Git\cmd"
for /f "tokens=*" %%d in ("!search_paths!") do ( for /f "tokens=*" %%d in ("!search_paths!") do (
if exist "%%d\git.exe" ( if exist "%%d\git.exe" (
@@ -106,31 +106,31 @@ if exist "%_root%\tools\git\bin" (
goto :validate_git goto :validate_git
) )
) )
echo û<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>Git<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 没有找到Git要安装吗
set /p confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/N): " set /p confirm="继续?(Y/N): "
if /i "!confirm!"=="Y" ( if /i "!confirm!"=="Y" (
cls cls
echo <EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD>װGit... echo 正在安装Git...
set "custom_url=https://ghfast.top/https://github.com/git-for-windows/git/releases/download/v2.48.1.windows.1/Git-2.48.1-64-bit.exe" set "custom_url=https://ghfast.top/https://github.com/git-for-windows/git/releases/download/v2.48.1.windows.1/Git-2.48.1-64-bit.exe"
set "download_path=%TEMP%\Git-Installer.exe" set "download_path=%TEMP%\Git-Installer.exe"
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Git<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>... echo 正在下载Git安装包...
curl -L -o "!download_path!" "!custom_url!" curl -L -o "!download_path!" "!custom_url!"
if exist "!download_path!" ( if exist "!download_path!" (
echo <EFBFBD><EFBFBD><EFBFBD>سɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>װGit... echo 下载成功,开始安装Git...
start /wait "" "!download_path!" /SILENT /NORESTART start /wait "" "!download_path!" /SILENT /NORESTART
) else ( ) else (
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>װGit echo 下载失败,请手动安装Git
start https://git-scm.com/download/win start https://git-scm.com/download/win
exit /b exit /b
) )
del "!download_path!" del "!download_path!"
echo <EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 临时文件已清理。
echo <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤Git... echo 安装完成,正在验证Git...
where git >nul 2>&1 where git >nul 2>&1
if %errorlevel% equ 0 ( if %errorlevel% equ 0 (
for /f "delims=" %%i in ('where git') do ( for /f "delims=" %%i in ('where git') do (
@@ -140,28 +140,28 @@ if exist "%_root%\tools\git\bin" (
goto :search_git goto :search_git
) else ( ) else (
echo <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ҵ<EFBFBD>Git<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>װGit echo 安装完成但未找到Git请手动安装Git
start https://git-scm.com/download/win start https://git-scm.com/download/win
exit /b exit /b
) )
) else ( ) else (
echo ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>װGit<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>... echo 取消安装Git按任意键退出...
pause >nul pause >nul
exit /b exit /b
) )
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>Git<EFBFBD><EFBFBD> echo 错误:未找到可用的Git
exit /b 1 exit /b 1
:validate_git :validate_git
"%git_path%" --version >nul 2>&1 "%git_path%" --version >nul 2>&1
if %errorlevel% neq 0 ( if %errorlevel% neq 0 (
echo <EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>Git<EFBFBD><EFBFBD>%git_path% echo 无效的Git%git_path%
exit /b 1 exit /b 1
) )
:: <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>װĿ¼ :: 提取安装目录
for %%i in ("%git_path%") do set "GIT_HOME=%%~dpi" for %%i in ("%git_path%") do set "GIT_HOME=%%~dpi"
set "GIT_HOME=%GIT_HOME:~0,-1%" set "GIT_HOME=%GIT_HOME:~0,-1%"
) )
@@ -170,40 +170,40 @@ if exist "%_root%\tools\git\bin" (
cls cls
sc query | findstr /i "MongoDB" >nul sc query | findstr /i "MongoDB" >nul
if !errorlevel! neq 0 ( if !errorlevel! neq 0 (
echo MongoDB<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo MongoDB服务未运行,是否尝试运行服务?
set /p confirm="<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/N): " set /p confirm="是否启动?(Y/N): "
if /i "!confirm!"=="Y" ( if /i "!confirm!"=="Y" (
echo <EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MongoDB<EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 正在尝试启动MongoDB服务...
powershell -Command "Start-Process -Verb RunAs cmd -ArgumentList '/c net start MongoDB'" powershell -Command "Start-Process -Verb RunAs cmd -ArgumentList '/c net start MongoDB'"
echo <EFBFBD><EFBFBD><EFBFBD>ڵȴ<EFBFBD>MongoDB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 正在等待MongoDB服务启动...
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>... echo 按下任意键跳过等待...
timeout /t 30 >nul timeout /t 30 >nul
sc query | findstr /i "MongoDB" >nul sc query | findstr /i "MongoDB" >nul
if !errorlevel! neq 0 ( if !errorlevel! neq 0 (
echo MongoDB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>а<EFBFBD>װ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo MongoDB服务启动失败,可能是没有安装,要安装吗?
set /p install_confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>(Y/N): " set /p install_confirm="继续安装?(Y/N): "
if /i "!install_confirm!"=="Y" ( if /i "!install_confirm!"=="Y" (
echo <EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD>װMongoDB... echo 正在安装MongoDB...
winget install --id MongoDB.Server -e --accept-package-agreements --accept-source-agreements winget install --id MongoDB.Server -e --accept-package-agreements --accept-source-agreements
echo <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MongoDB<EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 安装完成,正在启动MongoDB服务...
net start MongoDB net start MongoDB
if !errorlevel! neq 0 ( if !errorlevel! neq 0 (
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD>MongoDB<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 启动MongoDB服务失败,请手动启动
exit /b exit /b
) else ( ) else (
echo MongoDB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѳɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo MongoDB服务已成功启动
) )
) else ( ) else (
echo ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>װMongoDB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>... echo 取消安装MongoDB,按任意键退出...
pause >nul pause >nul
exit /b exit /b
) )
) )
) else ( ) else (
echo "<EFBFBD><EFBFBD><EFBFBD>MongoDB<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MaiMBot<EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ⣡" echo "警告:MongoDB服务未运行将导致MaiMBot无法访问数据库"
) )
) else ( ) else (
echo MongoDB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo MongoDB服务已运行
) )
@REM set "GIT_HOME=%_root%\tools\git\bin" @REM set "GIT_HOME=%_root%\tools\git\bin"
@@ -212,47 +212,47 @@ set "PATH=%PYTHON_HOME%;%GIT_HOME%;%PATH%"
:install_maim :install_maim
if not exist "!_root!\bot.py" ( if not exist "!_root!\bot.py" (
cls cls
echo <EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD>û<EFBFBD>а<EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bot<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>װ<EFBFBD>ڵ<EFBFBD>ǰĿ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 你似乎没有安装麦麦Bot要安装在当前目录吗
set /p confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/N): " set /p confirm="继续?(Y/N): "
if /i "!confirm!"=="Y" ( if /i "!confirm!"=="Y" (
echo Ҫʹ<EFBFBD><EFBFBD>Git<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 要使用Git代理下载吗
set /p proxy_confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/N): " set /p proxy_confirm="继续?(Y/N): "
if /i "!proxy_confirm!"=="Y" ( if /i "!proxy_confirm!"=="Y" (
echo <EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bot... echo 正在安装麦麦Bot...
git clone https://ghfast.top/https://github.com/SengokuCola/MaiMBot git clone https://ghfast.top/https://github.com/SengokuCola/MaiMBot
) else ( ) else (
echo <EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bot... echo 正在安装麦麦Bot...
git clone https://github.com/SengokuCola/MaiMBot git clone https://github.com/SengokuCola/MaiMBot
) )
xcopy /E /H /I MaiMBot . >nul 2>&1 xcopy /E /H /I MaiMBot . >nul 2>&1
rmdir /s /q MaiMBot rmdir /s /q MaiMBot
git checkout main-fix git checkout main-fix
echo <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 安装完成,正在安装依赖...
python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
python -m pip install virtualenv python -m pip install virtualenv
python -m virtualenv venv python -m virtualenv venv
call venv\Scripts\activate.bat call venv\Scripts\activate.bat
python -m pip install -r requirements.txt python -m pip install -r requirements.txt
echo <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 安装完成,要编辑配置文件吗?
set /p edit_confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/N): " set /p edit_confirm="继续?(Y/N): "
if /i "!edit_confirm!"=="Y" ( if /i "!edit_confirm!"=="Y" (
goto config_menu goto config_menu
) else ( ) else (
echo ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>... echo 取消编辑配置文件,按任意键返回主菜单...
) )
) )
) )
@REM git<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @REM git获取当前分支名并保存在变量里
for /f "delims=" %%b in ('git symbolic-ref --short HEAD 2^>nul') do ( for /f "delims=" %%b in ('git symbolic-ref --short HEAD 2^>nul') do (
set "BRANCH=%%b" set "BRANCH=%%b"
) )
@REM <EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ͬ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ò<EFBFBD>ͬ<EFBFBD><EFBFBD>ɫ @REM 根据不同分支名给分支名字符串使用不同颜色
echo <EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>: %BRANCH% echo 分支名: %BRANCH%
if "!BRANCH!"=="main" ( if "!BRANCH!"=="main" (
set "BRANCH_COLOR=" set "BRANCH_COLOR="
) else if "!BRANCH!"=="main-fix" ( ) else if "!BRANCH!"=="main-fix" (
@@ -266,48 +266,48 @@ if "!BRANCH!"=="main" (
@REM endlocal & set "BRANCH_COLOR=%BRANCH_COLOR%" @REM endlocal & set "BRANCH_COLOR=%BRANCH_COLOR%"
:check_is_venv :check_is_venv
echo <EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬... echo 正在检查虚拟环境状态...
if exist "%_root%\config\no_venv" ( if exist "%_root%\config\no_venv" (
echo <EFBFBD><EFBFBD><EFBFBD>no_venv,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 检测到no_venv,跳过虚拟环境检查
goto menu goto menu
) )
:: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :: 环境检测
if defined VIRTUAL_ENV ( if defined VIRTUAL_ENV (
goto menu goto menu
) )
echo ===================================== echo =====================================
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 虚拟环境检测警告:
echo <EFBFBD><EFBFBD>ǰʹ<EFBFBD><EFBFBD>ϵͳPython·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>!PYTHON_HOME! echo 当前使用系统Python路径:!PYTHON_HOME!
echo δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 未检测到激活的虚拟环境!
:env_interaction :env_interaction
echo ===================================== echo =====================================
echo <EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 请选择操作:
echo 1 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Venv<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 1 - 创建并激活Venv虚拟环境
echo 2 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>Conda<64><61><EFBFBD><EFBFBD><E2BBB7> echo 2 - 创建/激活Conda虚拟环境
echo 3 - <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD> echo 3 - 临时跳过本次检查
echo 4 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 4 - 永久跳过虚拟环境检查
set /p choice="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>(1-4): " set /p choice="请输入选项(1-4): "
if "!choice!"=="4" ( if "!choice!"=="4" (
echo Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 要永久跳过虚拟环境检查吗?
set /p no_venv_confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/N): ....." set /p no_venv_confirm="继续?(Y/N): ....."
if /i "!no_venv_confirm!"=="Y" ( if /i "!no_venv_confirm!"=="Y" (
echo 1 > "%_root%\config\no_venv" echo 1 > "%_root%\config\no_venv"
echo <EFBFBD>Ѵ<EFBFBD><EFBFBD><EFBFBD>no_venv<EFBFBD>ļ<EFBFBD> echo 已创建no_venv文件
pause >nul pause >nul
goto menu goto menu
) else ( ) else (
echo ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 取消跳过虚拟环境检查,按任意键返回...
pause >nul pause >nul
goto env_interaction goto env_interaction
) )
) )
if "!choice!"=="3" ( if "!choice!"=="3" (
echo <EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD> echo 警告:使用系统环境可能导致依赖冲突!
timeout /t 2 >nul timeout /t 2 >nul
goto menu goto menu
) )
@@ -315,29 +315,29 @@ if "!choice!"=="3" (
if "!choice!"=="2" goto handle_conda if "!choice!"=="2" goto handle_conda
if "!choice!"=="1" goto handle_venv if "!choice!"=="1" goto handle_venv
echo <EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-4֮<34><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 无效的输入请输入1-4之间的数字
timeout /t 2 >nul timeout /t 2 >nul
goto env_interaction goto env_interaction
:handle_venv :handle_venv
python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
echo <EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><EFBFBD>Venv<EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 正在初始化Venv环境...
python -m pip install virtualenv || ( python -m pip install virtualenv || (
echo <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!errorlevel! echo 安装环境失败,错误码:!errorlevel!
pause pause
goto env_interaction goto env_interaction
) )
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>venv echo 创建虚拟环境到:venv
python -m virtualenv venv || ( python -m virtualenv venv || (
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!errorlevel! echo 环境创建失败,错误码:!errorlevel!
pause pause
goto env_interaction goto env_interaction
) )
call venv\Scripts\activate.bat call venv\Scripts\activate.bat
echo <EFBFBD>Ѽ<EFBFBD><EFBFBD><EFBFBD>Venv<EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 已激活Venv环境
echo Ҫ<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 要安装依赖吗?
set /p install_confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/N): " set /p install_confirm="继续?(Y/N): "
if /i "!install_confirm!"=="Y" ( if /i "!install_confirm!"=="Y" (
goto update_dependencies goto update_dependencies
) )
@@ -345,70 +345,70 @@ goto menu
:handle_conda :handle_conda
where conda >nul 2>&1 || ( where conda >nul 2>&1 || (
echo δ<EFBFBD><EFBFBD><EFBFBD>⵽conda<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 未检测到conda可能原因
echo 1. δ<EFBFBD><EFBFBD>װMiniconda echo 1. 未安装Miniconda
echo 2. conda<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 2. conda配置异常
timeout /t 10 >nul timeout /t 10 >nul
goto env_interaction goto env_interaction
) )
:conda_menu :conda_menu
echo <EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>Conda<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 请选择Conda操作
echo 1 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD><EFBFBD><EFBFBD> echo 1 - 创建新环境
echo 2 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD> echo 2 - 激活已有环境
echo 3 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><EFBFBD>˵<EFBFBD> echo 3 - 返回上级菜单
set /p choice="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>(1-3): " set /p choice="请输入选项(1-3): "
if "!choice!"=="3" goto env_interaction if "!choice!"=="3" goto env_interaction
if "!choice!"=="2" goto activate_conda if "!choice!"=="2" goto activate_conda
if "!choice!"=="1" goto create_conda if "!choice!"=="1" goto create_conda
echo <EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-3֮<33><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 无效的输入请输入1-3之间的数字
timeout /t 2 >nul timeout /t 2 >nul
goto conda_menu goto conda_menu
:create_conda :create_conda
set /p "CONDA_ENV=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>" set /p "CONDA_ENV=请输入新环境名称:"
if "!CONDA_ENV!"=="" ( if "!CONDA_ENV!"=="" (
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD> echo 环境名称不能为空!
goto create_conda goto create_conda
) )
conda create -n !CONDA_ENV! python=3.13 -y || ( conda create -n !CONDA_ENV! python=3.13 -y || (
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!errorlevel! echo 环境创建失败,错误码:!errorlevel!
timeout /t 10 >nul timeout /t 10 >nul
goto conda_menu goto conda_menu
) )
goto activate_conda goto activate_conda
:activate_conda :activate_conda
set /p "CONDA_ENV=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>" set /p "CONDA_ENV=请输入要激活的环境名称:"
call conda activate !CONDA_ENV! || ( call conda activate !CONDA_ENV! || (
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 激活失败,可能原因:
echo 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 1. 环境不存在
echo 2. conda<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 2. conda配置异常
pause pause
goto conda_menu goto conda_menu
) )
echo <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>conda<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!CONDA_ENV! echo 成功激活conda环境!CONDA_ENV!
echo Ҫ<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 要安装依赖吗?
set /p install_confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/N): " set /p install_confirm="继续?(Y/N): "
if /i "!install_confirm!"=="Y" ( if /i "!install_confirm!"=="Y" (
goto update_dependencies goto update_dependencies
) )
:menu :menu
@chcp 936 @chcp 936
cls cls
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bot<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨ v%VERSION% <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>֧: %BRANCH_COLOR%%BRANCH% echo 麦麦Bot控制台 v%VERSION% 当前分支: %BRANCH_COLOR%%BRANCH%
echo <EFBFBD><EFBFBD>ǰPython<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: !PYTHON_HOME! echo 当前Python环境: !PYTHON_HOME!
echo ====================== echo ======================
echo 1. <EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bot (Ĭ<EFBFBD><EFBFBD>) echo 1. 更新并启动麦麦Bot (默认)
echo 2. ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bot echo 2. 直接启动麦麦Bot
echo 3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD> echo 3. 启动麦麦配置界面
echo 4. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 4. 打开麦麦神奇工具箱
echo 5. <EFBFBD>˳<EFBFBD> echo 5. 退出
echo ====================== echo ======================
set /p choice="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (1-5)<29><><EFBFBD><EFBFBD><EFBFBD>»س<C2BB><D8B3><EFBFBD>ѡ<EFBFBD><D1A1>: " set /p choice="请输入选项数字 (1-5)并按下回车以选择: "
if "!choice!"=="" set choice=1 if "!choice!"=="" set choice=1
@@ -418,7 +418,7 @@ if "!choice!"=="3" goto config_menu
if "!choice!"=="4" goto tools_menu if "!choice!"=="4" goto tools_menu
if "!choice!"=="5" exit /b if "!choice!"=="5" exit /b
echo <EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-5֮<35><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 无效的输入请输入1-5之间的数字
timeout /t 2 >nul timeout /t 2 >nul
goto menu goto menu
@@ -441,18 +441,18 @@ goto menu
:tools_menu :tools_menu
@chcp 936 @chcp 936
cls cls
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǰ<EFBFBD><C7B0>֧: %BRANCH_COLOR%%BRANCH% echo 麦麦时尚工具箱 当前分支: %BRANCH_COLOR%%BRANCH%
echo ====================== echo ======================
echo 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 1. 更新依赖
echo 2. <EFBFBD>л<EFBFBD><EFBFBD><EFBFBD>֧ echo 2. 切换分支
echo 3. <EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD>֧ echo 3. 重置当前分支
echo 4. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> echo 4. 更新配置文件
echo 5. ѧϰ<EFBFBD>µ<EFBFBD>֪ʶ<EFBFBD><EFBFBD> echo 5. 学习新的知识库
echo 6. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ʶ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD> echo 6. 打开知识库文件夹
echo 7. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD> echo 7. 返回主菜单
echo ====================== echo ======================
set /p choice="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: " set /p choice="请输入选项数字: "
if "!choice!"=="1" goto update_dependencies if "!choice!"=="1" goto update_dependencies
if "!choice!"=="2" goto switch_branch if "!choice!"=="2" goto switch_branch
if "!choice!"=="3" goto reset_branch if "!choice!"=="3" goto reset_branch
@@ -461,29 +461,29 @@ if "!choice!"=="5" goto learn_new_knowledge
if "!choice!"=="6" goto open_knowledge_folder if "!choice!"=="6" goto open_knowledge_folder
if "!choice!"=="7" goto menu if "!choice!"=="7" goto menu
echo <EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-6֮<36><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 无效的输入请输入1-6之间的数字
timeout /t 2 >nul timeout /t 2 >nul
goto tools_menu goto tools_menu
:update_dependencies :update_dependencies
cls cls
echo <EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 正在更新依赖...
python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
python.exe -m pip install -r requirements.txt python.exe -m pip install -r requirements.txt
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>... echo 依赖更新完成,按任意键返回工具箱菜单...
pause pause
goto tools_menu goto tools_menu
:switch_branch :switch_branch
cls cls
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD>֧... echo 正在切换分支...
echo <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>֧: %BRANCH% echo 当前分支: %BRANCH%
@REM echo <EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>֧: main, debug, stable-dev @REM echo 可用分支: main, debug, stable-dev
echo 1. <EFBFBD>л<EFBFBD><EFBFBD><EFBFBD>main echo 1. 切换到main
echo 2. <EFBFBD>л<EFBFBD><EFBFBD><EFBFBD>main-fix echo 2. 切换到main-fix
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>֧: echo 请输入要切换到的分支:
set /p branch_name="<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>: " set /p branch_name="分支名: "
if "%branch_name%"=="" set branch_name=main if "%branch_name%"=="" set branch_name=main
if "%branch_name%"=="main" ( if "%branch_name%"=="main" (
set "BRANCH_COLOR=" set "BRANCH_COLOR="
@@ -498,32 +498,32 @@ if "%branch_name%"=="main" (
set "BRANCH_COLOR=" set "BRANCH_COLOR="
set "branch_name=main-fix" set "branch_name=main-fix"
) else ( ) else (
echo <EFBFBD><EFBFBD>Ч<EFBFBD>ķ<EFBFBD>֧<EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 无效的分支名, 请重新输入
timeout /t 2 >nul timeout /t 2 >nul
goto switch_branch goto switch_branch
) )
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧ %branch_name%... echo 正在切换到分支 %branch_name%...
git checkout %branch_name% git checkout %branch_name%
echo <EFBFBD><EFBFBD>֧<EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>֧: %BRANCH_COLOR%%branch_name% echo 分支切换完成,当前分支: %BRANCH_COLOR%%branch_name%
set "BRANCH=%branch_name%" set "BRANCH=%branch_name%"
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>... echo 按任意键返回工具箱菜单...
pause >nul pause >nul
goto tools_menu goto tools_menu
:reset_branch :reset_branch
cls cls
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD>֧... echo 正在重置当前分支...
echo <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>֧: !BRANCH! echo 当前分支: !BRANCH!
echo ȷ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD> echo 确认要重置当前分支吗?
set /p confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/N): " set /p confirm="继续?(Y/N): "
if /i "!confirm!"=="Y" ( if /i "!confirm!"=="Y" (
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD>֧... echo 正在重置当前分支...
git reset --hard !BRANCH! git reset --hard !BRANCH!
echo <EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>... echo 分支重置完成,按任意键返回工具箱菜单...
) else ( ) else (
echo ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>... echo 取消重置当前分支,按任意键返回工具箱菜单...
) )
pause >nul pause >nul
goto tools_menu goto tools_menu
@@ -531,44 +531,44 @@ goto tools_menu
:update_config :update_config
cls cls
echo <EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>... echo 正在更新配置文件...
echo <EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ĵ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD> echo 请确保已备份重要数据,继续将修改当前配置文件。
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴Y<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 继续请按Y取消请按任意键...
set /p confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/N): " set /p confirm="继续?(Y/N): "
if /i "!confirm!"=="Y" ( if /i "!confirm!"=="Y" (
echo <EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>... echo 正在更新配置文件...
python.exe config\auto_update.py python.exe config\auto_update.py
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>... echo 配置文件更新完成,按任意键返回工具箱菜单...
) else ( ) else (
echo ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>... echo 取消更新配置文件,按任意键返回工具箱菜单...
) )
pause >nul pause >nul
goto tools_menu goto tools_menu
:learn_new_knowledge :learn_new_knowledge
cls cls
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧϰ<EFBFBD>µ<EFBFBD>֪ʶ<EFBFBD><EFBFBD>... echo 正在学习新的知识库...
echo <EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ĵ<EFBFBD>ǰ֪ʶ<EFBFBD> echo 请确保已备份重要数据,继续将修改当前知识库。
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴Y<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 继续请按Y取消请按任意键...
set /p confirm="<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Y/N): " set /p confirm="继续?(Y/N): "
if /i "!confirm!"=="Y" ( if /i "!confirm!"=="Y" (
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧϰ<EFBFBD>µ<EFBFBD>֪ʶ<EFBFBD><EFBFBD>... echo 正在学习新的知识库...
python.exe src\plugins\zhishi\knowledge_library.py python.exe src\plugins\zhishi\knowledge_library.py
echo ѧϰ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>... echo 学习完成,按任意键返回工具箱菜单...
) else ( ) else (
echo ȡ<EFBFBD><EFBFBD>ѧϰ<EFBFBD>µ<EFBFBD>֪ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>... echo 取消学习新的知识库,按任意键返回工具箱菜单...
) )
pause >nul pause >nul
goto tools_menu goto tools_menu
:open_knowledge_folder :open_knowledge_folder
cls cls
echo <EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>֪ʶ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>... echo 正在打开知识库文件夹...
if exist data\raw_info ( if exist data\raw_info (
start explorer data\raw_info start explorer data\raw_info
) else ( ) else (
echo ֪ʶ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD> echo 知识库文件夹不存在!
echo <EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>... echo 正在创建文件夹...
mkdir data\raw_info mkdir data\raw_info
timeout /t 2 >nul timeout /t 2 >nul
) )
@@ -581,18 +581,18 @@ cls
git pull > temp.log 2>&1 git pull > temp.log 2>&1
findstr /C:"detected dubious ownership" temp.log >nul findstr /C:"detected dubious ownership" temp.log >nul
if %errorlevel% equ 0 ( if %errorlevel% equ 0 (
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>޸<EFBFBD>... echo 检测到仓库权限问题,正在自动修复...
git config --global --add safe.directory "%cd%" git config --global --add safe.directory "%cd%"
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>git pull... echo 已添加例外,正在重试git pull...
del temp.log del temp.log
goto retry_git_pull goto retry_git_pull
) )
del temp.log del temp.log
echo <EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 正在更新依赖...
python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
python -m pip install -r requirements.txt && cls python -m pip install -r requirements.txt && cls
echo <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: echo 当前代理设置:
echo HTTP_PROXY=%HTTP_PROXY% echo HTTP_PROXY=%HTTP_PROXY%
echo HTTPS_PROXY=%HTTPS_PROXY% echo HTTPS_PROXY=%HTTPS_PROXY%
@@ -604,17 +604,17 @@ set no_proxy=0.0.0.0/32
REM chcp 65001 REM chcp 65001
python bot.py python bot.py
echo. echo.
echo Bot<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>... echo Bot已停止运行,按任意键返回主菜单...
pause >nul pause >nul
goto menu goto menu
:start_bot :start_bot
cls cls
echo <EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... echo 正在更新依赖...
python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
python -m pip install -r requirements.txt && cls python -m pip install -r requirements.txt && cls
echo <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: echo 当前代理设置:
echo HTTP_PROXY=%HTTP_PROXY% echo HTTP_PROXY=%HTTP_PROXY%
echo HTTPS_PROXY=%HTTPS_PROXY% echo HTTPS_PROXY=%HTTPS_PROXY%
@@ -626,7 +626,7 @@ set no_proxy=0.0.0.0/32
REM chcp 65001 REM chcp 65001
python bot.py python bot.py
echo. echo.
echo Bot<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>... echo Bot已停止运行,按任意键返回主菜单...
pause >nul pause >nul
goto menu goto menu

View File

@@ -1,6 +1,7 @@
import math import math
import random import random
import time import time
import re
from collections import Counter from collections import Counter
from typing import Dict, List from typing import Dict, List
@@ -253,7 +254,7 @@ def split_into_sentences_w_remove_punctuation(text: str) -> List[str]:
# 统一将英文逗号转换为中文逗号 # 统一将英文逗号转换为中文逗号
text = text.replace(',', '') text = text.replace(',', '')
text = text.replace('\n', ' ') text = text.replace('\n', ' ')
text, mapping = protect_kaomoji(text)
# print(f"处理前的文本: {text}") # print(f"处理前的文本: {text}")
text_no_1 = '' text_no_1 = ''
@@ -292,6 +293,7 @@ def split_into_sentences_w_remove_punctuation(text: str) -> List[str]:
current_sentence += ' ' + part current_sentence += ' ' + part
new_sentences.append(current_sentence.strip()) new_sentences.append(current_sentence.strip())
sentences = [s for s in new_sentences if s] # 移除空字符串 sentences = [s for s in new_sentences if s] # 移除空字符串
sentences = recover_kaomoji(sentences, mapping)
# print(f"分割后的句子: {sentences}") # print(f"分割后的句子: {sentences}")
sentences_done = [] sentences_done = []
@@ -446,3 +448,55 @@ def truncate_message(message: str, max_length=20) -> str:
if len(message) > max_length: if len(message) > max_length:
return message[:max_length] + "..." return message[:max_length] + "..."
return message return message
def protect_kaomoji(sentence):
""""
识别并保护句子中的颜文字(含括号与无括号),将其替换为占位符,
并返回替换后的句子和占位符到颜文字的映射表。
Args:
sentence (str): 输入的原始句子
Returns:
tuple: (处理后的句子, {占位符: 颜文字})
"""
kaomoji_pattern = re.compile(
r'('
r'[\(\[(【]' # 左括号
r'[^()\[\]()【】]*?' # 非括号字符(惰性匹配)
r'[^\u4e00-\u9fa5a-zA-Z0-9\s]' # 非中文、非英文、非数字、非空格字符(必须包含至少一个)
r'[^()\[\]()【】]*?' # 非括号字符(惰性匹配)
r'[\)\])】]' # 右括号
r')'
r'|'
r'('
r'[▼▽・ᴥω・﹏^><≧≦ ̄`´∀ヮДд︿﹀へ。゚╥╯╰︶︹•⁄]{2,15}'
r')'
)
kaomoji_matches = kaomoji_pattern.findall(sentence)
placeholder_to_kaomoji = {}
for idx, match in enumerate(kaomoji_matches):
kaomoji = match[0] if match[0] else match[1]
placeholder = f'__KAOMOJI_{idx}__'
sentence = sentence.replace(kaomoji, placeholder, 1)
placeholder_to_kaomoji[placeholder] = kaomoji
return sentence, placeholder_to_kaomoji
def recover_kaomoji(sentences, placeholder_to_kaomoji):
"""
根据映射表恢复句子中的颜文字。
Args:
sentences (list): 含有占位符的句子列表
placeholder_to_kaomoji (dict): 占位符到颜文字的映射表
Returns:
list: 恢复颜文字后的句子列表
"""
recovered_sentences = []
for sentence in sentences:
for placeholder, kaomoji in placeholder_to_kaomoji.items():
sentence = sentence.replace(placeholder, kaomoji)
recovered_sentences.append(sentence)
return recovered_sentences