From 2a180db6c633ba18760becbc78d5c554ec4a7da2 Mon Sep 17 00:00:00 2001 From: lxh Date: Mon, 17 Feb 2025 09:18:57 +0800 Subject: [PATCH] :tada: first commit --- .gitea/workflows/build-image.yaml | 54 +++++++++++++++++++++++++++++++ Dockerfile | 41 +++++++++++++++++++++++ WechatAPI/core/placeholder | 0 main_config.toml | 48 +++++++++++++++++++++++++++ utils/xybot.py | 0 5 files changed, 143 insertions(+) create mode 100644 .gitea/workflows/build-image.yaml create mode 100644 Dockerfile create mode 100644 WechatAPI/core/placeholder create mode 100644 main_config.toml create mode 100644 utils/xybot.py diff --git a/.gitea/workflows/build-image.yaml b/.gitea/workflows/build-image.yaml new file mode 100644 index 0000000..83318fd --- /dev/null +++ b/.gitea/workflows/build-image.yaml @@ -0,0 +1,54 @@ +name: BuildImage + +on: + push: + branches: + - main + # tags: + # - '*' + +jobs: + build-image: + runs-on: ubuntu-latest + container: + # 使用这个镜像,不然Docker无法打包镜像 + image: catthehacker/ubuntu:act-latest + + steps: + - name: Setup Golang + uses: actions/setup-go@v3 + with: + go-version: '>=1.21.0' + cache: false + + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Gen Tags + id: gen_tags + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: lxh01/xybotv2 + tags: | + type=ref,event=branch + type=schedule,pattern={{date 'YYYYMMDD'}} + + - name: Print Tags + run: | + echo "${{ steps.gen_tags.outputs.tags }}" + echo "----------------- labels -----------------" + echo "${{ steps.meta.outputs.labels }}" + + - name: Login to Repository + uses: docker/login-action@v2 + with: + username: ${{ secrets.USERNAME }} + password: ${{ secrets.PASSWORD }} + + - name: Build image + uses: docker/build-push-action@v2 + with: + push: true + tags: ${{ steps.gen_tags.outputs.tags }} + labels: ${{ steps.gen_tags.outputs.labels }} + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e9b1cae --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +FROM python:3.11-slim AS core + +RUN pip install --no-cache-dir xywechatpad-binary +RUN pip show xywechatpad-binary + + +FROM debian:bookworm-slim AS runner +LABEL org.opencontainers.image.authors="lxh@cxh.cn" + +# 预定义参数 +ENV TZ="Asia/Shanghai" +ENV PORT=9000 +ENV MODE=release +ENV REDIS_HOST="127.0.0.1" +ENV REDIS_PORT=6379 +ENV REDIS_PASSWORD="" +ENV REDIS_DB=0 + +# 设置时区 +#RUN apk add --no-cache tzdata && \ +# cp /usr/share/zoneinfo/${TZ} /etc/localtime && \ +# echo "${TZ}" > /etc/timezone + +# 设置工作目录 +WORKDIR /app + +# 复制文件 +COPY . . +COPY --from=core /usr/local/lib/python3.11/site-packages/xywechatpad_binary/binaries/linux_x64 ./WechatAPI/core/ +#RUN ls -lah ./WechatAPI/core + +# 开始运行 +#CMD ["/app/WechatAPI/core/XYWechatPad-linux-x86", "--port", "${PORT}", "--mode", "${MODE}", "--redis-host", "${REDIS_HOST}", " --redis-port", "${REDIS_PORT}", "--redis-password", "${REDIS_PASSWORD}", "--redis-db", "${REDIS_DB}"] +CMD /app/WechatAPI/core/XYWechatPad \ + --port $PORT \ + --mode $MODE \ + --redis-host $REDIS_HOST \ + --redis-port $REDIS_PORT \ + --redis-password $REDIS_PASSWORD \ + --redis-db $REDIS_DB + diff --git a/WechatAPI/core/placeholder b/WechatAPI/core/placeholder new file mode 100644 index 0000000..e69de29 diff --git a/main_config.toml b/main_config.toml new file mode 100644 index 0000000..05229b8 --- /dev/null +++ b/main_config.toml @@ -0,0 +1,48 @@ +[WechatAPIServer] +port = 9000 # WechatAPI服务器端口,默认9000,如有冲突可修改 +mode = "release" # 运行模式:release(生产环境),debug(调试模式) +redis-host = "127.0.0.1" # Redis服务器地址,本地使用127.0.0.1 +redis-port = 6379 # Redis端口,默认6379 +redis-password = "" # Redis密码,如果有设置密码则填写 +redis-db = 0 # Redis数据库编号,默认0 + +# XYBot 核心设置 +[XYBot] +version = "v1.0.0" # 版本号,请勿修改 +ignore-protection = false # 是否忽略风控保护机制,建议保持false +database-url = "sqlite:///xybot.db" # SQLite数据库地址,一般无需修改 + +# 管理员设置 +admins = ["admin-wxid", "admin-wxid"] # 管理员的wxid列表,可从消息日志中获取 +disabled-plugins = ["ExamplePlugin"] # 禁用的插件列表,不需要的插件名称填在这里 +timezone = "Asia/Shanghai" # 时区设置,中国用户使用 Asia/Shanghai + +# 实验性功能,如果main_config.toml配置改动,或者plugins文件夹有改动,自动重启。可以在开发时使用,不建议在生产环境使用。 +auto-restart = false # 仅建议在开发时启用,生产环境保持false + +# 消息过滤设置 +ignore-mode = "None" # 消息处理模式: +# "None" - 处理所有消息 +# "Whitelist" - 仅处理白名单消息 +# "Blacklist" - 屏蔽黑名单消息 + +whitelist = [# 白名单列表 + "wxid_1", # 个人用户微信ID + "wxid_2", + "chatroom@111", # 群聊ID + "chatroom@222" +] + +blacklist = [# 黑名单列表 + "wxid_3", # 个人用户微信ID + "wxid_4", + "chatroom@333", # 群聊ID + "chatroom@444" +] + +# OpenAI格式API设置 +[OpenAI] +api-key = "sk-xxxx" # OpenAI格式API密钥,必须填写有效的API Key +base-url = "https://api.openai.com/v1" # API接口地址 +# 使用OpanAI官方API填写 https://api.openai.com/v1 +# 使用其他API或者代理API需要修改为对应地址 \ No newline at end of file diff --git a/utils/xybot.py b/utils/xybot.py new file mode 100644 index 0000000..e69de29