NapCat-Docker/entrypoint.sh
ATPQ c87efbaa0c
Update entrypoint.sh
删除napcat.mjs重启容器,更新容器中的NapCAT
2025-05-23 17:24:00 +08:00

122 lines
3.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
update_napcatfile() {
# 定义下载链接
URL1="https://github.moeyy.xyz/https://github.com/NapNeko/NapCatQQ/releases/latest/download/NapCat.Shell.zip"
URL2="https://github.com/NapNeko/NapCatQQ/releases/latest/download/NapCat.Shell.zip"
# 检查NapCat.Shell.zip是否存在不存在则下载
if [ ! -f "NapCat.Shell.zip" ]; then
echo "NapCat.Shell.zip 文件不存在,开始下载..."
# 尝试第一个下载链接
if curl -L -O "$URL1"; then
echo "文件下载成功,创建备份..."
cp -f "NapCat.Shell.zip" "NapCat.Shell_old.zip"
else
echo "第一个下载链接失败,尝试第二个链接..."
# 尝试第二个下载链接
if curl -L -O "$URL2"; then
echo "文件下载成功,创建备份..."
cp -f "NapCat.Shell.zip" "NapCat.Shell_old.zip"
else
echo "两个下载链接都失败了,尝试使用备份文件。"
# 如果备份文件存在则克隆为NapCat.Shell.zip
if [ -f "NapCat.Shell_old.zip" ]; then
echo "使用备份文件恢复..."
cp -f "NapCat.Shell_old.zip" "NapCat.Shell.zip"
else
echo "备份文件不存在,请手动下载。"
exit 1
fi
fi
fi
else
echo "已存在文件,创建备份..."
cp -f "NapCat.Shell.zip" "NapCat.Shell_old.zip"
fi
}
# 安装 napcat
if [ ! -f "napcat/napcat.mjs" ]; then
update_napcatfile
unzip -q NapCat.Shell.zip -d ./NapCat.Shell
if [ -f "napcat/config/napcat.json" ]; then
echo "发现napcat/config/napcat.json排除NapCat.Shell/config文件夹。"
#rsync -av --exclude='config/' NapCat.Shell/ napcat/
find NapCat.Shell -path NapCat.Shell/config -prune -o -exec cp -r {} napcat/ \;
else
echo "未发现napcat/config/napcat.json全部内容将被复制。"
cp -rf NapCat.Shell/* napcat/
fi
rm -rf ./NapCat.Shell
rm -rf ./NapCat.Shell.zip
fi
if [ ! -f "napcat/config/napcat.json" ]; then
unzip -q NapCat.Shell_old.zip -d ./NapCat.Shell_old
cp -rf NapCat.Shell_old/config/* napcat/config/
rm -rf ./NapCat.Shell_old
fi
# 配置 WebUI Token
CONFIG_PATH=/app/napcat/config/webui.json
if [ ! -f "${CONFIG_PATH}" ] && [ -n "${WEBUI_TOKEN}" ]; then
echo "正在配置 WebUI Token..."
cat > "${CONFIG_PATH}" << EOF
{
"host": "0.0.0.0",
"prefix": "${WEBUI_PREFIX}",
"port": 6099,
"token": "${WEBUI_TOKEN}",
"loginRate": 3
}
EOF
fi
# 删除字符串两端的引号
remove_quotes() {
local str="$1"
local first_char="${str:0:1}"
local last_char="${str: -1}"
if [[ ($first_char == '"' && $last_char == '"') || ($first_char == "'" && $last_char == "'") ]]; then
# 两端都是双引号
if [[ $first_char == '"' ]]; then
str="${str:1:-1}"
# 两端都是单引号
else
str="${str:1:-1}"
fi
fi
echo "$str"
}
if [ -n "${MODE}" ]; then
cp /app/templates/$MODE.json /app/napcat/config/onebot11.json
fi
rm -rf "/tmp/.X1-lock"
: ${NAPCAT_GID:=0}
: ${NAPCAT_UID:=0}
usermod -o -u ${NAPCAT_UID} napcat
groupmod -o -g ${NAPCAT_GID} napcat
usermod -g ${NAPCAT_GID} napcat
chown -R ${NAPCAT_UID}:${NAPCAT_GID} /app
gosu napcat Xvfb :1 -screen 0 1080x760x16 +extension GLX +render > /dev/null 2>&1 &
sleep 2
export FFMPEG_PATH=/usr/bin/ffmpeg
export DISPLAY=:1
cd /app/napcat
if [ -n "${ACCOUNT}" ]; then
gosu napcat /opt/QQ/qq --no-sandbox -q $ACCOUNT
else
gosu napcat /opt/QQ/qq --no-sandbox
fi