简体中文 | English
Papaya 是一个使用 Go 编写的双平台(Telegram & Discord)机器人。它集成了 OpenAI (GPT-4 Vision) 能力,支持每日签到、积分系统、个性化聊天、长短期记忆自动总结,以及基于 Cloudflare R2 的媒体管理。
项目内置 Dockerfile 和 docker-compose,开箱即用。
- 多平台支持:同时支持 Telegram 和 Discord(只需配置对应 Token)。
- 智能聊天:
- 个性化人设:用户可自定义机器人对自己的称呼和性格 (
/setpersona)。 - 长久记忆:自动总结过往对话,保持长期记忆同时节省 Token。
- 智能识图:集成 GPT-4 Vision,支持图片内容分析与自动打标。
- 个性化人设:用户可自定义机器人对自己的称呼和性格 (
- 积分系统:每日签到赚取积分,聊天消耗积分(可配置)。
- 媒体管理:
- 支持随机查看美图/视频 (
/image)。 - 管理员可通过 Cloudflare R2 上传、管理媒体文件。
- 支持新媒体自动推送订阅。
- 支持随机查看美图/视频 (
- 系统特性:
- 结构化日志:基于
log/slog的 JSON 日志。 - 持久化存储:使用 BoltDB 存储用户数据、对话历史和配置。
- 结构化日志:基于
| 命令 | 说明 | 权限 |
|---|---|---|
/start /help |
查看帮助 | 全员 |
/checkin |
每日签到,获取积分 | 全员 |
/points /me |
查看当前积分 | 全员 |
/setpersona <text> |
设置只属于你的机器人人设 | 全员 |
/image |
随机查看一张美图或视频 | 全员 |
/vision |
开启/关闭智能识图功能 | 管理员 |
/users |
查看用户列表 | 管理员 |
/addpoints <id> <val> |
增减用户积分 | 管理员 |
/setpoints <id> <val> |
设定用户积分 | 管理员 |
/setmodel <model> |
切换 OpenAI 模型 | 管理员 |
/ratelimit |
查看速率限制 | 管理员 |
/r2upload |
回复图片上传至 R2 并自动打标 | 管理员 |
/r2list /r2del |
R2 文件管理 | 管理员 |
/sub /unsub |
订阅/取消订阅新图推送 | 管理员 |
注:Discord 目前支持 /checkin, /points, /help 及直接对话功能。
| 变量名 | 必填 | 说明 |
|---|---|---|
TG_BOT_SECRET |
否 | Telegram Bot Token (若为空则不启动 TG 机器人) |
DISCORD_TOKEN |
否 | Discord Bot Token (若为空则不启动 Discord 机器人) |
TG_ADMIN_IDS |
否 | Telegram 管理员 ID 列表 (逗号分隔) |
OPENAI_API_KEY |
是 | OpenAI API Key |
OPENAI_BASE_URL |
否 | 自定义接口地址 |
OPENAI_MODEL |
否 | 默认模型 (如 gpt-4-vision-preview) |
R2_ACCOUNT_ID |
否 | Cloudflare R2 Account ID |
R2_ACCESS_KEY_ID |
否 | Cloudflare R2 Access Key |
R2_SECRET_ACCESS_KEY |
否 | Cloudflare R2 Secret Key |
R2_BUCKET_NAME |
否 | R2 Bucket 名称 |
R2_PUBLIC_URL |
否 | R2 公开访问域名 (用于图片链接) |
- 创建
compose.yml(参考仓库中的compose.yml)。 - 配置环境变量。
- 运行:
docker compose up --build -dgo mod download
go run ./...main.go: 程序入口,并发启动多平台机器人。internal/telegram: Telegram 机器人实现。internal/discord: Discord 机器人实现。internal/chat: 核心聊天逻辑 (OpenAI, 记忆, 总结, 识图)。internal/store: BoltDB 数据存储 (用户, 历史, 媒体)。internal/r2: Cloudflare R2 存储集成。internal/config: 配置加载。internal/logger: 结构化日志封装。
Papaya is a dual-platform (Telegram & Discord) bot written in Go. It integrates OpenAI (GPT-4 Vision) capabilities and features daily check-ins, a points system, personalized chat, auto-summarization of chat history, and media management based on Cloudflare R2.
- Dual Platform: Supports Telegram and Discord simultaneously.
- Smart Chat:
- Persona: Customize how the bot talks to you (
/setpersona). - Long-term Memory: Auto-summarizes past conversations.
- Vision: Analyzes and tags images using GPT-4 Vision.
- Persona: Customize how the bot talks to you (
- Points System: Earn points via check-ins, spend them on chat.
- Media Management:
- Random image/video viewing (
/image). - Admin management via Cloudflare R2 (
/r2upload). - Subscription system for new media alerts.
- Random image/video viewing (
- System:
- Structured Logging: JSON logs via
log/slog. - Persistence: BoltDB for data storage.
- Structured Logging: JSON logs via
| Command | Description | Role |
|---|---|---|
/checkin |
Daily check-in | User |
/points |
Check points | User |
/setpersona |
Customize bot personality | User |
/image |
View random media | User |
/vision |
Toggle AI Vision | Admin |
/r2upload |
Upload reply-media to R2 | Admin |
| ... | (See Help for more) | ... |
Note: Discord currently supports /checkin, /points, /help and direct chat.
See the environment variable table above. Add DISCORD_TOKEN to enable Discord support.
docker compose up --build -d