Skip to content

Commit f0a1ee8

Browse files
committed
Merge branch 'dev'
2 parents b2eda7b + 82b53d7 commit f0a1ee8

File tree

360 files changed

+1939
-1371
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

360 files changed

+1939
-1371
lines changed

.github/workflows/publish.yml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,30 +78,38 @@ jobs:
7878
- name: Compress for Linux CLI x64
7979
run: |
8080
mkdir llbot-cli-linux-x64
81+
mkdir -p bin/llbot
82+
mkdir -p bin/pmhq
8183
cd llbot-cli-linux-x64
8284
cp ../dist/使用说明.txt ./
8385
cp ../dist/更新日志.txt ./
84-
cp -r ../dist ./llbot
86+
cp -r ../dist ./bin/llbot
8587
wget https://github.com/linyuchen/PMHQ/releases/latest/download/pmhq-linux-x64.zip
8688
unzip pmhq-linux-x64.zip
8789
rm pmhq-linux-x64.zip
88-
mv pmhq-linux-x64 llbot/pmhq
90+
mv pmhq-linux-x64 bin/pmhq/pmhq
91+
mv libpmhq.so bin/pmhq/
8992
wget https://github.com/LLOneBot/exe/releases/latest/download/node-linux-x64 -O llbot/node
93+
wget https://github.com/LLOneBot/LLBot.CLI/releases/latest/download/llbot-linux-x64 -O llbot
9094
cp ../script/start-linux.sh ./start.sh
9195
zip -r ../LLBot-CLI-linux-x64.zip ./*
9296
9397
- name: Compress for Linux CLI arm64
9498
run: |
9599
mkdir llbot-cli-linux-arm64
100+
mkdir -p bin/llbot
101+
mkdir -p bin/pmhq
96102
cd llbot-cli-linux-arm64
97103
cp ../dist/使用说明.txt ./
98104
cp ../dist/更新日志.txt ./
99-
cp -r ../dist ./llbot
105+
cp -r ../dist ./bin/llbot
100106
wget https://github.com/linyuchen/PMHQ/releases/latest/download/pmhq-linux-arm64.zip
101107
unzip pmhq-linux-arm64.zip
102108
rm pmhq-linux-arm64.zip
103-
mv pmhq-linux-arm64 llbot/pmhq
109+
mv pmhq-linux-arm64 llbot/pmhq/pmhq
110+
mv libpmhq.so bin/pmhq/
104111
wget https://github.com/LLOneBot/exe/releases/latest/download/node-linux-arm64 -O llbot/node
112+
wget https://github.com/LLOneBot/LLBot.CLI/releases/latest/download/llbot-linux-arm64 -O llbot
105113
cp ../script/start-linux.sh ./start.sh
106114
zip -r ../LLBot-CLI-linux-arm64.zip ./*
107115
@@ -191,7 +199,6 @@ jobs:
191199
${{ steps.changelog.outputs.BODY }}
192200
193201
**Windows Desktop 版本只支持 Windows Server 2016 / Windows 10 及以上版本**
194-
**Windows CLI 版本只支持 Windows server 2012 R2 / Windows 8.1 及以上版本**
195202
196203
- name: Publish to npm
197204
if: startsWith(github.ref, 'refs/tags/')

doc/更新日志.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
V7.4.1
2+
更新时间 2026-01-
3+
4+
* OneBot 支持发送视频时指定 cover
5+
6+
=================
17
V7.4.0
28
更新时间 2026-01-01
39

@@ -15,7 +21,7 @@ V7.4.0
1521
* OneBot 修复老版本 QQ 无法使用闪传相关接口
1622
* OneBot 修复 Docker 环境下可能无法发送合并转发图片
1723
* OneBot 修复获取合并转发内视频网址可能失败
18-
* Milky 修复 API `get_history_messages` 可能获取到空消息
24+
* Milky 修复 API `get_history_messages` 可能获取到被撤回的消息
1925
* Milky 修复 API `get_history_messages` 返回的 `next_message_seq` 不正确
2026

2127
=================

docker/Dockerfile.local

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
FROM node:22-alpine AS builder
2+
3+
WORKDIR /app
4+
5+
RUN corepack enable && corepack prepare [email protected] --activate
6+
7+
COPY package.json yarn.lock .yarnrc.yml ./
8+
COPY .yarn .yarn
9+
10+
RUN yarn install --immutable
11+
12+
COPY src/webui/FE/package.json src/webui/FE/
13+
RUN cd src/webui/FE && npm install
14+
15+
COPY . .
16+
17+
RUN yarn build-webui
18+
19+
RUN yarn build
20+
21+
22+
FROM node:22-alpine AS production
23+
24+
RUN set -eux; \
25+
apk update; \
26+
apk add --no-cache tzdata ffmpeg; \
27+
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime; \
28+
echo "Asia/Shanghai" > /etc/timezone; \
29+
rm -rf /var/cache/apk/*
30+
31+
WORKDIR /app/llbot
32+
33+
COPY --from=builder /app/dist .
34+
35+
COPY docker/startup.sh /startup.sh
36+
RUN chmod +x /startup.sh
37+
38+
ENTRYPOINT ["/startup.sh"]

script/build-ffmpeg.sh

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
#!/bin/bash
2+
# FFmpeg 精简版编译脚本 - 在 MSYS2 UCRT64 环境中运行
3+
set -e
4+
5+
INSTALL_DIR="${1:-./install}"
6+
7+
echo "========================================"
8+
echo "FFmpeg 精简版编译"
9+
echo "========================================"
10+
11+
if [ ! -f "./configure" ]; then
12+
echo "错误: 请在 FFmpeg 源码目录运行此脚本"
13+
exit 1
14+
fi
15+
16+
echo "清理旧构建..."
17+
make clean 2>/dev/null || true
18+
make distclean 2>/dev/null || true
19+
20+
echo "配置编译选项..."
21+
./configure \
22+
--prefix="$INSTALL_DIR" \
23+
--disable-everything \
24+
--enable-small \
25+
--disable-doc \
26+
--disable-debug \
27+
--disable-shared \
28+
--enable-static \
29+
--disable-network \
30+
--disable-autodetect \
31+
--enable-zlib \
32+
--enable-ffmpeg \
33+
--enable-ffprobe \
34+
--disable-ffplay \
35+
--enable-avcodec \
36+
--enable-avformat \
37+
--enable-avfilter \
38+
--enable-swresample \
39+
--enable-swscale \
40+
--enable-decoder=pcm_s16le \
41+
--enable-decoder=pcm_s16be \
42+
--enable-decoder=pcm_u8 \
43+
--enable-decoder=pcm_f32le \
44+
--enable-decoder=mp3 \
45+
--enable-decoder=mp3float \
46+
--enable-decoder=aac \
47+
--enable-decoder=aac_fixed \
48+
--enable-decoder=flac \
49+
--enable-decoder=opus \
50+
--enable-decoder=vorbis \
51+
--enable-decoder=amrnb \
52+
--enable-decoder=amrwb \
53+
--enable-decoder=h264 \
54+
--enable-decoder=hevc \
55+
--enable-decoder=vp8 \
56+
--enable-decoder=vp9 \
57+
--enable-decoder=av1 \
58+
--enable-decoder=mpeg4 \
59+
--enable-decoder=mjpeg \
60+
--enable-decoder=png \
61+
--enable-decoder=gif \
62+
--enable-decoder=webp \
63+
--enable-decoder=bmp \
64+
--enable-encoder=pcm_s16le \
65+
--enable-encoder=png \
66+
--enable-encoder=mjpeg \
67+
--enable-demuxer=pcm_s16le \
68+
--enable-demuxer=pcm_s16be \
69+
--enable-demuxer=pcm_f32le \
70+
--enable-demuxer=wav \
71+
--enable-demuxer=mp3 \
72+
--enable-demuxer=aac \
73+
--enable-demuxer=flac \
74+
--enable-demuxer=ogg \
75+
--enable-demuxer=amr \
76+
--enable-demuxer=mov \
77+
--enable-demuxer=matroska \
78+
--enable-demuxer=webm \
79+
--enable-demuxer=avi \
80+
--enable-demuxer=flv \
81+
--enable-demuxer=mpegts \
82+
--enable-demuxer=image2 \
83+
--enable-demuxer=image2pipe \
84+
--enable-muxer=pcm_s16le \
85+
--enable-muxer=pcm_s16be \
86+
--enable-muxer=pcm_f32le \
87+
--enable-muxer=wav \
88+
--enable-muxer=image2 \
89+
--enable-muxer=image2pipe \
90+
--enable-parser=h264 \
91+
--enable-parser=hevc \
92+
--enable-parser=vp8 \
93+
--enable-parser=vp9 \
94+
--enable-parser=av1 \
95+
--enable-parser=mpeg4video \
96+
--enable-parser=aac \
97+
--enable-parser=mp3 \
98+
--enable-parser=flac \
99+
--enable-parser=opus \
100+
--enable-parser=vorbis \
101+
--enable-parser=png \
102+
--enable-parser=mjpeg \
103+
--enable-parser=gif \
104+
--enable-parser=webp \
105+
--enable-parser=bmp \
106+
--enable-filter=aresample \
107+
--enable-filter=aformat \
108+
--enable-filter=anull \
109+
--enable-filter=scale \
110+
--enable-filter=thumbnail \
111+
--enable-filter=fps \
112+
--enable-filter=format \
113+
--enable-filter=null \
114+
--enable-filter=split \
115+
--enable-protocol=file \
116+
--enable-protocol=pipe \
117+
--enable-bsf=h264_mp4toannexb \
118+
--enable-bsf=hevc_mp4toannexb \
119+
--enable-bsf=aac_adtstoasc \
120+
--extra-ldflags='-static -static-libgcc -static-libstdc++' \
121+
--extra-cflags='-static' \
122+
--pkg-config-flags='--static' \
123+
--disable-w32threads \
124+
--enable-pthreads
125+
126+
echo ""
127+
echo "开始编译 (使用 $(nproc) 核心)..."
128+
make -j$(nproc)
129+
130+
echo ""
131+
echo "安装..."
132+
make install
133+
134+
echo ""
135+
echo "检查依赖..."
136+
# 检查是否真正静态链接
137+
if command -v ldd >/dev/null 2>&1; then
138+
echo "ffmpeg.exe 依赖:"
139+
ldd "$INSTALL_DIR/bin/ffmpeg.exe" || echo "完全静态链接 ✓"
140+
fi
141+
142+
echo ""
143+
echo "========================================"
144+
echo "编译完成!"
145+
echo "输出目录: $INSTALL_DIR/bin"
146+
ls -lh "$INSTALL_DIR/bin/"
147+
148+
# 如果静态链接成功,就不需要复制 DLL
149+
if "$INSTALL_DIR/bin/ffmpeg.exe" -version > /dev/null 2>&1; then
150+
echo "✓ ffmpeg 可以独立运行,无需额外 DLL"
151+
else
152+
echo "静态链接失败,复制运行时库..."
153+
# 复制必要的运行时库到 bin 目录
154+
DLLS=("libgcc_s_seh-1.dll" "libstdc++-6.dll" "libwinpthread-1.dll")
155+
for dll in "${DLLS[@]}"; do
156+
if [ -f "/ucrt64/bin/$dll" ]; then
157+
cp "/ucrt64/bin/$dll" "$INSTALL_DIR/bin/"
158+
echo "复制: $dll"
159+
fi
160+
done
161+
fi
162+
163+
# 测试 ffmpeg 是否能运行
164+
echo ""
165+
echo "测试 ffmpeg..."
166+
if "$INSTALL_DIR/bin/ffmpeg.exe" -version > /dev/null 2>&1; then
167+
echo "✓ ffmpeg 可以正常运行"
168+
else
169+
echo "✗ ffmpeg 运行失败,可能缺少依赖库"
170+
fi
171+
172+
echo "========================================"
173+
echo "按 Enter 键退出..."
174+
read

script/install-llbot-docker.sh

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,44 @@ docker_mirror=""
6363
PMHQ_TAG="latest"
6464
LLBOT_TAG="latest"
6565

66+
# Docker 镜像源列表
67+
DOCKER_MIRRORS=(
68+
"docker.1panel.live"
69+
"docker.1ms.run"
70+
"hub.rat.dev"
71+
"001090.xyz"
72+
)
73+
74+
# 测试镜像源是否可用
75+
test_mirror() {
76+
local mirror=$1
77+
local tag=$2
78+
echo "测试镜像源: ${mirror} ..."
79+
if docker manifest inspect "${mirror}/linyuchen/llbot:${tag}" > /dev/null 2>&1; then
80+
return 0
81+
fi
82+
return 1
83+
}
84+
85+
# 查找可用的镜像源
86+
find_available_mirror() {
87+
local tag=$1
88+
for mirror in "${DOCKER_MIRRORS[@]}"; do
89+
if test_mirror "$mirror" "$tag"; then
90+
echo "找到可用镜像源: ${mirror}"
91+
echo "${mirror}/"
92+
return 0
93+
fi
94+
echo "镜像源 ${mirror} 不可用"
95+
done
96+
echo "所有镜像源均不可用,将使用官方源"
97+
echo ""
98+
return 1
99+
}
100+
66101
read -p "是否使用docker镜像源(y/n): " use_docker_mirror
67102

68103
if [[ "$use_docker_mirror" =~ ^[yY]$ ]]; then
69-
docker_mirror="docker.1panel.live/"
70104
echo "正在获取最新版本信息..."
71105

72106
# 获取PMHQ最新标签
@@ -83,12 +117,14 @@ if [[ "$use_docker_mirror" =~ ^[yY]$ ]]; then
83117
LLBOT_RELEASE=$(curl -s -L "https://gh-proxy.com/https://api.github.com/repos/LLOneBot/LuckyLilliaBot/releases/latest")
84118
if [ $? -eq 0 ]; then
85119
LLBOT_TAG=$(echo "$LLBOT_RELEASE" | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4 | sed 's/^v//')
86-
# 如果获取到的 TAG 为空,则使用 latest
87120
[ -z "$LLBOT_TAG" ] && LLBOT_TAG="latest"
88121
echo "LLBot 最新版本: $LLBOT_TAG"
89122
else
90123
echo "警告: 无法获取LLBot最新版本,使用latest"
91124
fi
125+
126+
echo "正在检测可用的镜像源..."
127+
docker_mirror=$(find_available_mirror "$LLBOT_TAG")
92128
fi
93129
# 生成docker-compose.yml(使用双引号包裹并保留转义)
94130
cat << EOF > docker-compose.yml

0 commit comments

Comments
 (0)