8000 GitHub - woodchen-ink/Q58Bot: Telegram群组管理机器人, 支持 撤回关键词消息, 定时推送币安币对价格, 重复链接拦截
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Telegram群组管理机器人, 支持 撤回关键词消息, 定时推送币安币对价格, 重复链接拦截

Notifications You must be signed in to change notification settings

woodchen-ink/Q58Bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Q58-Telegram-Bot

示例

image image image

项目功能

TeleGuard

  • 自动删除包含指定关键词的消息
  • 支持通过命令添加、删除和列出关键词
  • 只有管理员可以管理关键词列表

币安价格更新器

  • 定期获取指定加密货币的价格信息
  • 发送详细的价格更新,包括当前价格、24小时变化、高低点等
  • 可自定义货币对, 更新频率可自行在代码里修改

虚拟币价格实时获取

  • 从币安获取所有交易对, 缓存到内存里, 每小时刷新一次
  • 当群消息为虚拟币名称时, 会返回对应虚拟币/USDT的价格
    • 例如,如果用户发送 "BTC"、"btc" 或 "Btc",都会触发比特币的价格信息发送,但发送 "What's the price of BTC?" 则不会触发。

链接拦截

  • 新增: 当非管理员时, 才会进行链接拦截
  • 非白名单域名链接, 在发送第二次会被拦截撤回

白名单域名

  • 当用户发送链接, 属于白名单域名, 则不进行操作. 如果不属于白名单域名, 则会第一次允许发送, 第二次进行撤回操作.
  • 会匹配链接中的域名, 包括二级域名和三级域名
  • 例如,如果白名单中有 "example.com",它将匹配 "example.com"、"sub.example.com" 和 "sub.sub.example.com"。
  • 同时,如果白名单中有 "sub.example.com",它将匹配 "sub.example.com" 和 "subsub.sub.example.com",但不会匹配 "example.com" 或 "othersub.example.com"。

提示词自动回复

  • 当用户发送包含特定关键词的消息时,机器人将自动回复提示词。
  • 管理员通过/prompt进行设置, 支持添加, 删除, 列出.

群组快捷管理

  • 管理员可以对成员消息回复/ban, 会进行以下处理:
    1. 将成员消息撤回, 无限期封禁成员, 并发送封禁通知
    2. 在3分钟后, 撤回管理员指令消息和机器人的封禁通知

安装与配置

  1. 确保服务器已安装 Docker 和 Docker Compose
  2. 使用 docker-compose.yml 文件构建和启动容器

使用方法

构建并启动 Docker 容器:

docker-compose up -d 

注意事项

  • 确保 Telegram 机器人已被添加到目标群组,并被赋予管理员权限
  • 定期检查日志以确保服务正常运行

项目结构

Q58Bot/
│
├── core/
│   ├── bot_commands.go # 注册机器人命令
│   ├── database.go # 数据库操作
│   ├── init.go # 初始化全局变量
│   └── ratelimiter.go # 限速器
│
├── service/
│   ├── binance/
│   │   └── binance.go # 获取币安价格信息
│   │   
|   |── group_member_management/
|   |  └── group_member_management.go # 对群组进行管理
│   │  
│   ├── link_filter/
│   │   └── link_filter.go # 链接过滤器
│   │
│   ├── prompt_reply/
│   |   └── prompt_reply.go # 提示词自动回复
│   │
│   └── message_handler.go # 消息处理器
│
├── docker-compose.yml
├── Dockerfile.multi
├── go.mod
├── go.sum
├── main.go # 入口文件
└── README.md

设计规范

自己记录

  1. 关于数据库的操作, 需要在运行时进行一次加载数据
  2. 任何操作需要添加相关日志, 日志需要包含时间戳
  3. 要使用全局的数据库实例core.DB, 相关代码如下:
    • init.go
      // 初始化数据库
      DB_FILE = filepath.Join("/app/data", "q58.db")
      var err error
      DB, err = NewDatabase()
      if err != nil {
         return fmt.Errorf("初始化数据库失败: %v", err)
      }

贡献

欢迎提交 Issues 和 Pull Requests 来帮助改进这个项目。

许可证

MIT License

About

Telegram群组管理机器人, 支持 撤回关键词消息, 定时推送币安币对价格, 重复链接拦截

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages

0