This commit is contained in:
SengokuCola
2025-02-28 20:10:43 +08:00
6 changed files with 122 additions and 6 deletions

31
.github/workflows/docker-image.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
name: Docker Build and Push
on:
push:
branches:
- main # 推送到main分支时触发
tags:
- 'v*' # 推送v开头的tag时触发例如v1.0.0
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and Push Docker Image
uses: docker/build-push-action@v5
with:
context: . # Docker构建上下文路径
file: ./Dockerfile # Dockerfile路径
tags: |
${{ secrets.DOCKERHUB_USERNAME }}/maimbot:${{ github.ref_name }}
${{ secrets.DOCKERHUB_USERNAME }}/maimbot:latest
push: true

14
Dockerfile Normal file
View File

@@ -0,0 +1,14 @@
FROM nonebot/nb-cli:latest
WORKDIR /
RUN apt update && apt install -y git
RUN git clone https://github.com/SengokuCola/MaiMBot
WORKDIR /MaiMBot
RUN mkdir config
RUN mv /MaiMBot/env.example /MaiMBot/config/.env \
&& mv /MaiMBot/src/plugins/chat/bot_config_toml /MaiMBot/config/bot_config.toml
RUN ln -s /MaiMBot/config/.env /MaiMBot/.env \
&& ln -s /MaiMBot/config/bot_config.toml /MaiMBot/src/plugins/chat/bot_config.toml
RUN pip install -r requirements.txt
VOLUME [ "/MaiMBot/config" ]
EXPOSE 8080
ENTRYPOINT [ "nb","run" ]

View File

@@ -31,6 +31,17 @@
### 安装方法(还没测试好,现在部署可能遇到未知问题!!!!)
#### Linux 使用 Docker Compose 部署
获取项目根目录中的```docker-compose.yml```文件,运行以下命令
```bash
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker compose up -d
```
配置文件修改完成后,运行以下命令
```bash
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker compose restart
```
#### 手动运行
1. **创建Python环境**
推荐使用conda或其他环境管理来管理你的python环境
```bash

50
docker-compose.yml Normal file
View File

@@ -0,0 +1,50 @@
services:
napcat:
container_name: napcat
environment:
- tz=Asia/Shanghai
- NAPCAT_UID=${NAPCAT_UID}
- NAPCAT_GID=${NAPCAT_GID}
ports:
- 3000:3000
- 3001:3001
- 6099:6099
restart: always
volumes:
- napcatQQ:/app/.config/QQ
- napcatCONFIG:/app/napcat/config
image: mlikiowa/napcat-docker:latest
mongodb:
container_name: mongodb
environment:
- tz=Asia/Shanghai
expose:
- "27017"
restart: always
volumes:
- mongodb:/data/db
- mongodbCONFIG:/data/configdb
image: mongo:latest
maimbot:
container_name: maimbot
environment:
- tz=Asia/Shanghai
expose:
- "8080:8080"
restart: always
depends_on:
- mongodb
- napcat
volumes:
- maimbotCONFIG:/MaiMBot/config
image: jiajiu/maimbot:latest
volumes:
maimbotCONFIG:
napcatQQ:
napcatCONFIG:
mongodb:
mongodbCONFIG:

View File

@@ -2,13 +2,15 @@ from typing import Union, List, Optional, Deque, Dict
from nonebot.adapters.onebot.v11 import Bot, MessageSegment
import asyncio
import random
import os
from .message import Message, Message_Thinking, MessageSet
from .cq_code import CQCode
from collections import deque
import time
from .storage import MessageStorage
from .config import global_config
from .message_visualizer import message_visualizer
if os.name == "nt":
from .message_visualizer import message_visualizer
class SendTemp:
@@ -161,7 +163,10 @@ class MessageSendControl:
self._paused = False
self._current_bot = None
self.storage = MessageStorage() # 添加存储实例
try:
message_visualizer.start()
except(NameError):
pass
def set_bot(self, bot: Bot):
"""设置当前bot实例"""
@@ -222,7 +227,10 @@ class MessageSendControl:
# 并行处理所有群组的消息
await asyncio.gather(*tasks)
try:
message_visualizer.update_content(self.send_temp_container)
except(NameError):
pass
def set_typing_speed(self, min_speed: float, max_speed: float):
"""设置打字速度范围"""

View File

@@ -1,6 +1,8 @@
import datetime
import os
from typing import List, Dict
from .schedule_llm_module import LLMModel
from dotenv import load_dotenv
from ...common.database import Database # 使用正确的导入语法
@@ -10,9 +12,9 @@ from ...common.database import Database # 使用正确的导入语法
# from src.common.database import Database # 使用正确的导入语法
Database.initialize(
"127.0.0.1",
27017,
"MegBot"
os.getenv("MONGODB_HOST"),
int(os.getenv("MONGODB_PORT")),
os.getenv("DATABASE_NAME")
)
class ScheduleGenerator: