通过 Telegram 机器人管理 Audiobookshelf 用户。
该机器人适合 Audiobookshelf 站点管理员使用,可提供用户自助面板、账号创建与绑定、签到积分、兑换码、续期、注册队列、换绑审批、管理员面板和数据库备份等能力。
/pp 或 /pp tgid 管理指定用户。docker pull dddddluo/absboss:latest
推荐使用 Docker Compose 同时启动 MySQL 和机器人服务。
.env创建 .env 文件:
BOT_TOKEN=123456:replace_me
OWNER_TG_ID=123456789
ADMIN_TG_IDS=123456789,987654321
MYSQL_ROOT_PASSWORD=123456
MYSQL_DATABASE=audiobookshelf_bot
MYSQL_PORT=33306
MYSQL_DSN=mysql+aiomysql://root:123456@mysql:3306/audiobookshelf_bot?charset=utf8mb4
ABS_BASE_URL=https://abs.example.com
ABS_API_TOKEN=replace_me
BOT_TIMEZONE=Asia/Shanghai
LOG_LEVEL=INFO
LOG_FILE=logs/app.log
LOG_MAX_BYTES=10485760
LOG_BACKUP_COUNT=5
BACKUP_DIR=backups
BACKUP_KEEP_COUNT=7
REGISTRATION_QUEUE_DELAY_SECONDS=2
docker-compose.ymlservices:
mysql:
image: mysql:8.0
container_name: absboos-db
restart: unless-stopped
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-123456}
MYSQL_DATABASE: ${MYSQL_DATABASE:-audiobookshelf_bot}
ports:
- "${MYSQL_PORT:-33306}:3306"
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$${MYSQL_ROOT_PASSWORD}"]
interval: 10s
timeout: 5s
retries: 5
absboss:
image: dddddluo/absboss:latest
container_name: absboss
restart: unless-stopped
depends_on:
mysql:
condition: service_healthy
environment:
BOT_TOKEN: ${BOT_TOKEN:?set BOT_TOKEN in .env}
OWNER_TG_ID: ${OWNER_TG_ID:-}
ADMIN_TG_IDS: ${ADMIN_TG_IDS:?set ADMIN_TG_IDS in .env}
ABS_BASE_URL: ${ABS_BASE_URL:?set ABS_BASE_URL in .env}
ABS_API_TOKEN: ${ABS_API_TOKEN:?set ABS_API_TOKEN in .env}
BOT_TIMEZONE: ${BOT_TIMEZONE:-Asia/Shanghai}
LOG_LEVEL: ${LOG_LEVEL:-INFO}
LOG_FILE: ${LOG_FILE:-logs/app.log}
LOG_MAX_BYTES: ${LOG_MAX_BYTES:-10485760}
LOG_BACKUP_COUNT: ${LOG_BACKUP_COUNT:-5}
BACKUP_DIR: ${BACKUP_DIR:-backups}
BACKUP_KEEP_COUNT: ${BACKUP_KEEP_COUNT:-7}
REGISTRATION_QUEUE_DELAY_SECONDS: ${REGISTRATION_QUEUE_DELAY_SECONDS:-2}
MYSQL_DSN: ${MYSQL_DSN:?set MYSQL_DSN in .env}
volumes:
- ./logs:/app/logs
- ./backups:/app/backups
volumes:
mysql_data:
docker compose up -d
查看日志:
docker logs -f absboss
停止服务:
docker compose down
首次启动后,请使用 OWNER_TG_ID 对应的 Telegram 用户向机器人私聊发送:
/setup
然后根据向导完成主群组、注册天数、签到积分等运行期配置。初始化完成后,机器人即可正常使用。
| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
BOT_TOKEN | 是 | 无 | BotFather 创建的 Telegram bot token。 |
OWNER_TG_ID | 建议 | 空 | 机器人所有者 Telegram ID,用于执行 /setup 初始化向导,也会被视为管理员。 |
ADMIN_TG_IDS | 是 | 无 | 管理员 Telegram ID,多个用英文逗号分隔。 |
MYSQL_DSN | 是 | 无 | MySQL 连接串。Compose 内置 MySQL 时主机名通常为 mysql。 |
ABS_BASE_URL | 是 | 无 | Audiobookshelf 服务地址,例如 https://abs.example.com。 |
ABS_API_TOKEN | 是 | 无 | Audiobookshelf 管理员 API token。 |
BOT_TIMEZONE | 否 | Asia/Shanghai | 定时任务使用的时区。 |
LOG_LEVEL | 否 | INFO | 日志级别。 |
LOG_FILE | 否 | logs/app.log | 容器内日志文件路径。 |
LOG_MAX_BYTES | 否 | 10485760 | 单个日志文件最大字节数。 |
LOG_BACKUP_COUNT | 否 | 5 | 日志轮转保留数量。 |
BACKUP_DIR | 否 | backups | 容器内数据库备份目录。 |
BACKUP_KEEP_COUNT | 否 | 7 | 数据库备份保留数量。 |
REGISTRATION_QUEUE_DELAY_SECONDS | 否 | 2 | 注册队列处理延迟秒数。 |
建议至少持久化以下数据:
mysql_data:/var/lib/mysql./logs:/app/logs./backups:/app/backups如果使用外部 MySQL,可以删除 Compose 中的 mysql 服务,并将 MYSQL_DSN 改为外部数据库连接串。
连接宿主机 MySQL 时,通常可以使用:
MYSQL_DSN=mysql+aiomysql://absbot:[email protected]:3306/audiobookshelf_bot?charset=utf8mb4
docker compose pull
docker compose down absboss
docker compose up -d
# 启动
docker compose up -d
# 查看运行状态
docker compose ps
# 查看机器人日志
docker logs -f absboss
# 重启机器人
docker compose restart absboss
# 停止全部服务
docker compose down
BOT_TOKEN 和 ABS_API_TOKEN 是敏感信息,请不要公开提交到仓库或截图中。MYSQL_DSN 中的用户名、密码、数据库名和主机名是否与 Compose 配置一致。MYSQL_DSN 中的主机名应使用服务名 mysql,不要使用 127.0.0.1。Content type
Image
Digest
sha256:23ca7beaa…
Size
82.3 MB
Last updated
5 months ago
docker pull dddddluo/absboss