diff --git a/README.md b/README.md index 6555ed7..b8ec005 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ - 当传送的内容为视频时,自动在正文前面添加 `#视频` 标签。可以在配置文件中禁用或自定义此功能。 - 输入 `/chatid` 命令时,将返回当前会话和用户的名称和 ID 。该命令仅在配置文件中启用调试模式时有效,并且无视使用者白名单限制。可用于使用者加入白名单之前获取自己的 用户/群组/频道 的 ID 。 -## 部署 +## 编译 开发时所用 golang 版本: `1.19.5` @@ -29,16 +29,33 @@ go get go build ``` -然后创建配置文件 `config.json` ,和编译出来的可执行文件 `rbq_anonymous_bot` 放一起。 +### 跨平台编译 + +在 Windows x64 中也可以通过批处理一键生成全平台二进制文件: + +```bat +go build +MKDIR bin +build.bat +``` + +批处理脚本最后会调用 `MAKECAB` 和 `7z` 命令进行压缩。 + +## 部署 + +1. 创建配置文件 `config.json` ,和编译出来的可执行文件放一起。 +2. Linux 或 macOS 需要使用 `chmod +x [可执行文件名]` 给予权限。 +3. 运行可执行文件。 ### 使用 Docker 部署 -1. 使用 `build_linux.bat` 或参考里面的操作生成可执行文件压缩档 `bin/rbq_anonymous_bot.xz` 。 -2. 修改 `./docker.sh` 为需要的 Docker 操作。 -3. 将 `bin/rbq_anonymous_bot.xz` + `config.json` + `Dockerfile` + `docker.sh` 复制到服务器中的同一个文件夹中。 -4. 进入服务器中的该文件夹,执行 `chmod +x docker.sh` 和 `./docker.sh` 即可运行 -5. 让 bot 转发一条消息,等待大约一分钟,该 Docker 容器状态会显示为 `healthy` 。 -6. 如果没有出现停止问题,可以将 RESTART POLICIES 设置为 `Always` 。 +1. 创建配置文件 `config.json` 。 +2. 使用 `build_linux.bat` 或参考里面的操作生成可执行文件压缩档 `bin/rbq_anonymous_bot.xz` 。 +3. 修改 `./docker.sh` 为需要的 Docker 操作。 +4. 将 `bin/rbq_anonymous_bot.xz` + `config.json` + `Dockerfile` + `docker.sh` 复制到服务器中的同一个文件夹中。 +5. 进入服务器中的该文件夹,执行 `chmod +x docker.sh` 和 `./docker.sh` 即可运行 +6. 让 bot 转发一条消息,等待大约一分钟,该 Docker 容器状态会显示为 `healthy` 。 +7. 如果没有出现停止问题,可以将 RESTART POLICIES 设置为 `Always` 。 ### 配置文件示例 @@ -75,7 +92,7 @@ go build - `debug` 调试模式。显示所有通信日志,并将无命令的内容直接返回。 - `proxy` 是代理服务器,支持 `http` 和 `socks5`,不需要时留空字符串。 - `apikey` Telegram 的会话令牌(去问 [BotFather](https://t.me/BotFather) 要)。 -- `healthcheck` Docker 健康检查用会话文件名,需要和 `Dockerfile` 中的 `HEALTHCHECK` 想对应。 +- `healthcheck` Docker 健康检查用会话文件名,需要和 `Dockerfile` 中的 `HEALTHCHECK` 相对应。 - `timezone` GMT 时间偏移量,用于显示时间时所用的时区。 - `whitelist` 是白名单,只允许这些 UID 使用这个 BOT 。 - `to` 是会话代号(预定义的发送目标)。 diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..dc5c268 --- /dev/null +++ b/build.bat @@ -0,0 +1,36 @@ +SET NAME=rbq_anonymous_bot_v1.1.0_ +DEL /Q bin\* +SET CGO_ENABLED=0 +SET GOARCH=amd64 +go generate +SET GOOS=windows +go build -o bin\%NAME%Windows64.exe . +DEL /Q *.syso +SET GOOS=linux +go build -o bin\%NAME%Linux64 . +SET GOOS=darwin +go build -o bin\%NAME%macOS64 . +SET GOARCH=386 +go generate +SET GOOS=windows +go build -o bin\%NAME%Windows32.exe . +DEL /Q *.syso +SET GOOS=linux +go build -o bin\%NAME%Linux32 . +CD bin +MAKECAB /d compressiontype=lzx /d compressionmemory=21 %NAME%Windows32.exe +RENAME %NAME%Windows32.ex_ %NAME%Windows32.exe.cab +MAKECAB /d compressiontype=lzx /d compressionmemory=21 %NAME%Windows64.exe +RENAME %NAME%Windows64.ex_ %NAME%Windows64.exe.cab +DEL /Q *.exe +7z a -txz -mx9 %NAME%Linux64.xz %NAME%Linux64 +DEL /Q %NAME%Linux64 +7z a -txz -mx9 %NAME%Linux32.xz %NAME%Linux32 +DEL /Q %NAME%Linux32 +7z a -tzip -mx9 %NAME%macOS64.zip %NAME%macOS64 +DEL /Q %NAME%macOS64 +CD .. +SET NAME= +SET CGO_ENABLED= +SET GOARCH= +SET GOOS= diff --git a/build_linux.bat b/build_linux.bat deleted file mode 100644 index 995cbe2..0000000 --- a/build_linux.bat +++ /dev/null @@ -1,6 +0,0 @@ -SET CGO_ENABLED=0 -SET GOARCH=amd64 -SET GOOS=linux -DEL /Q bin\* -go build -o bin\rbq_anonymous_bot . -xz -z -e -9 -T 0 -v bin\rbq_anonymous_bot diff --git a/desktop.ini b/desktop.ini new file mode 100644 index 0000000..9bc02b9 --- /dev/null +++ b/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=rc.ico,0 diff --git a/go.mod b/go.mod index ca15cb2..1a73991 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,8 @@ require ( ) require ( + github.com/akavel/rsrc v0.10.2 // indirect github.com/andybalholm/cascadia v1.3.1 // indirect + github.com/josephspurrier/goversioninfo v1.4.0 // indirect github.com/technoweenie/multipartstreamer v1.0.1 // indirect ) diff --git a/main.exe.manifest b/main.exe.manifest new file mode 100644 index 0000000..5cda712 --- /dev/null +++ b/main.exe.manifest @@ -0,0 +1,32 @@ + + + + + + + + + + + True + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/main.go b/main.go index a465647..96b830f 100644 --- a/main.go +++ b/main.go @@ -1,3 +1,4 @@ +//go:generate goversioninfo -icon=rc.ico -manifest=main.exe.manifest package main import ( @@ -18,7 +19,7 @@ type ChatObj struct { } func main() { - fmt.Println("絨!") + fmt.Println("rbq_anonymous_bot v1.1.0") if !loadConfig() { return } diff --git a/rc.icns b/rc.icns new file mode 100644 index 0000000..0774e6b Binary files /dev/null and b/rc.icns differ diff --git a/rc.ico b/rc.ico new file mode 100644 index 0000000..533bf96 Binary files /dev/null and b/rc.ico differ diff --git a/versioninfo.json b/versioninfo.json new file mode 100644 index 0000000..10bc854 --- /dev/null +++ b/versioninfo.json @@ -0,0 +1,43 @@ +{ + "FixedFileInfo": { + "FileVersion": { + "Major": 1, + "Minor": 0, + "Patch": 0, + "Build": 0 + }, + "ProductVersion": { + "Major": 1, + "Minor": 0, + "Patch": 0, + "Build": 0 + }, + "FileFlagsMask": "3f", + "FileFlags ": "00", + "FileOS": "040004", + "FileType": "01", + "FileSubType": "00" + }, + "StringFileInfo": { + "Comments": "绒布球频道更新姬", + "CompanyName": "神楽坂雅詩", + "FileDescription": "绒布球频道更新姬", + "FileVersion": "v1.1.0.0", + "InternalName": "rbq_anonymous_bot", + "LegalCopyright": "2022, rbqgroup.", + "LegalTrademarks": "", + "OriginalFilename": "main.exe", + "PrivateBuild": "", + "ProductName": "绒布球频道 BOT", + "ProductVersion": "v1.1.0.0", + "SpecialBuild": "" + }, + "VarFileInfo": { + "Translation": { + "LangID": "0804", + "CharsetID": "04B0" + } + }, + "IconPath": "rc.ico", + "ManifestPath": "main.exe.manifest" +}