520 字
3 分钟
Telegram双向机器人-验证码版
前言
本周双向私信机器人被轰炸,我一天收到了上千条垃圾广告。故拿AI搓了一个
Telegram 消息转发机器人
具有图片验证码和用户管理功能的 Telegram 消息转发机器人。
✨ 特性
- 🔐 图片验证码防垃圾消息
- 💬 主人回复功能(直接回复转发消息)
- 🚫 用户拉黑/解除拉黑(
/block和/unblock命令) - ☁️ Supabase 云数据库(数据永不丢失)
- 🐳 Docker 支持
🚀 快速开始
先配置数据库
配置 Supabase 数据库
在 Supabase 创建项目,然后在 SQL Editor 中执行:
-- 消息映射表CREATE TABLE message_mappings ( id BIGSERIAL PRIMARY KEY, forwarded_message_id BIGINT UNIQUE NOT NULL, user_id BIGINT NOT NULL, username TEXT, created_at TIMESTAMPTZ DEFAULT NOW());
-- 已验证用户表CREATE TABLE verified_users ( id BIGSERIAL PRIMARY KEY, user_id BIGINT UNIQUE NOT NULL, username TEXT, verified_at TIMESTAMPTZ DEFAULT NOW());
-- 待验证用户表CREATE TABLE pending_verifications ( id BIGSERIAL PRIMARY KEY, user_id BIGINT UNIQUE NOT NULL, code TEXT NOT NULL, attempts INTEGER DEFAULT 0, expires_at TIMESTAMPTZ NOT NULL, created_at TIMESTAMPTZ DEFAULT NOW());
-- 拉黑用户表CREATE TABLE blocked_users ( id BIGSERIAL PRIMARY KEY, user_id BIGINT UNIQUE NOT NULL, blocked_at TIMESTAMPTZ DEFAULT NOW());
-- 创建索引CREATE INDEX idx_message_mappings_forwarded_id ON message_mappings(forwarded_message_id);CREATE INDEX idx_verified_users_user_id ON verified_users(user_id);CREATE INDEX idx_pending_verifications_user_id ON pending_verifications(user_id);CREATE INDEX idx_blocked_users_user_id ON blocked_users(user_id);🐳 Docker 部署
方法一:直接运行
docker run -d \ --name telegram-bot \ --restart unless-stopped \ -e BOT_TOKEN="你的Bot_Token" \ -e OWNER_ID="你的用户ID" \ -e SUPABASE_URL="你的Supabase_URL" \ -e SUPABASE_KEY="你的Supabase_Key" \ -v $(pwd)/logs:/app/logs \ ghcr.io/ham0mer/tgbot:latest方法二:使用 docker-compose
修改 docker-compose.yml:
services: telegram-bot: image: ghcr.io/ham0mer/tgbot:latest container_name: telegram-bot restart: unless-stopped environment: - BOT_TOKEN=${BOT_TOKEN} - OWNER_ID=${OWNER_ID} - SUPABASE_URL=${SUPABASE_URL} - SUPABASE_KEY=${SUPABASE_KEY} - LOG_LEVEL=info volumes: - ./logs:/app/logs logging: driver: "json-file" options: max-size: "10m" max-file: "3"然后启动:
docker compose up -d启动并查看日志
docker compose up -d && docker compose logs -f🔄 更新镜像
更新到最新版本
docker compose pull && docker compose down && docker compose up -d && docker compose logs -fdocker image prune使用说明
用户使用
- 发送
/start获取验证码 - 回复验证码完成验证
- 验证后可正常发送消息
主人功能
- 回复用户:直接回复转发的消息
- 拉黑用户:回复用户消息并发送
/block - 解除拉黑:回复用户消息并发送
/unblock
发现错误或想要改进这篇文章?
在 GitHub 上编辑此页