一个简单的Telegram 机器人,用于将用户消息转发给管理员,管理员回复消息转发给客户。
- 消息转发:将用户消息转发给管理员
- 自动回复:支持自定义回复内容
- 教程功能:内置教程系统,帮助用户了解使用方法
- 数据持久化:使用 BoltDB 存储消息映射关系
- 日志系统:自动日志轮转,支持长期运行
bot.go 中包含了自用的欢迎消息和教程说明,需要自行修改。
建议使用 polling 模式,webhook 模式需要配置 Webhook 回调地址和端口号,且需要配置 HTTPS 域名,麻烦!
创建 bot.yaml 配置文件:
account:
# 工作模式:polling 或 webhook
mode: "polling"
# Telegram Bot Token,从 @BotFather 获取
token: "12345:xxxxxxx"
# 管理员的 Telegram ID,可以从 @userinfobot 获取
owner: 1025878772
# webhook 模式的回调地址(如果使用 polling 模式可以忽略)
endpoint: ""
# webhook 模式的端口(如果使用 polling 模式可以忽略)
port: 8443- 直接编译后运行即可:
./tgbot添加到 crontab:
crontab -e
# 添加以下行
@reboot cd /path/to/bot && ./start.sh start.
├── bot.go # 主程序文件
├── telegram.go # Telegram API 相关代码
├── bot.yaml # 配置文件
├── bot.log # 日志文件
└── bot.db # 数据库文件
-
数据库锁定问题
- 解决方案:重启前确保正常停止机器人,或删除
bot.db.lock文件
- 解决方案:重启前确保正常停止机器人,或删除
-
Webhook 模式配置
- 需要有可用的 HTTPS 域名
- 确保服务器防火墙允许指定端口访问
-
日志文件过大
- 系统会自动进行日志轮转
- 可以手动删除旧的日志文件
- 不要将 bot token 直接硬编码在代码中
- 定期检查日志文件是否有异常访问
- 在生产环境使用 HTTPS
- 定期备份数据库文件
MIT License