Files
ProjectAGiPrompt/4-ProjectNaughtyMan/0-需求规格书/1.1-初始需求稿.md
2025-11-20 16:18:35 +08:00

4.2 KiB
Raw Blame History

Telegram详细内容

  1. 官方API参考内容

    https://core.telegram.org/bots/api

模块功能需求

消息通知

  1. 功能概述: 能够根据不同的消息来源, 操作TelegramBotAPI发送消息消息来源如下

    1. 接口暴露
    2. AI智能体
    3. 机器人功能
  2. 实现优先级: 高

接口暴露

  1. 通过GIN框架暴露接口能够方便的进行消息通知

  2. 需要有强Token验证才行

    1. 设计握手式Token获取法
    2. 每个Token的有效期为6小时

消息通知范围

  1. 单对单消息
  2. 群组消息

通知消息体

  1. 通知等级

    1. 消息具备等级
    2. 不同等级的消息模板不一样
  2. 通知消息模板

    1. 服务器类-ProjectOctopus
    2. 金融类-ProjectTonyStack

通知时间

  1. 与通知等级匹配

  2. 正常通知时间

    1. 白天时间 8:00-23:00
  3. 紧急通知时间

    1. 全天

Telegram通知实现

  1. 向特定用户发送消息
  2. 向特定群组发送消息

机器人预定义功能

  1. 模块描述: 按照预设的特定指令,执行操作
  2. 实现优先级: 低
  3. 该模块充分考虑功能拓展性,方便后续拓展其他的功能

定时提醒功能

  1. 机器人指令/notify

  2. 当输入指令之后弹出时间选择窗口参照iOS的提醒事项设计

    1. 最下方 提醒内容输入框
    2. 上方显示 日期选项按钮,时间选项按钮,重复选项按钮
    3. 日期选项选中,可以以日历的形式选择提醒日期
    4. 时间按钮选中,默认勾选日期为今天,弹出时间选择
    5. 重复按钮选中,弹出重复提醒选项,每日 每周 每两周 每月 自定义(任意选择星期几)
    6. 显示提交按钮,点击后可以提交
  3. 机器人记录提醒时间及内容,按照设计的时间发送提醒内容到对应的聊天

    1. 提醒内容需要持久化保存

定时提醒查看清除功能

  1. 机器人执行 /notify-list

  2. 当输入指令后,弹出本人的全部定时提醒内容

    1. 按照如下的顺序显示
    2. 提醒频率(无则显示 单次提醒) 提醒日期 提醒时间 摘要显示提醒内容
    3. 最右侧显示删除按键,点击弹出确认删除此定时提醒窗口
    4. 确认删除后,项目删除此提醒事项
  3. 若无提醒事项

    1. 显示无提醒事项

Telegram管理功能

用户群组管理

  1. 能够查看所有添加的用户ID 及 群组ID
  2. 能够根据用户ID查询用户的相关信息
    1. 持久化保存
  3. 使用接口的形式向外暴露

机器人功能管理

  1. 能够查看机器人现在注册的功能
  2. 能够删除机器人注册的功能
  3. 能够修改机器人注册的功能
  4. 需要将机器人预定义功能注册给Bot能够正常运行

智能体功能

  1. 模块描述: 响应群组中的@ 及用户单独发送至Bot的消息根据消息的上下文给出AI智能解答
  2. 实现优先级: 低
  3. 消息回复需要引用被@的那条消息或用户单独询问的那条消息和之前的三条消息
  4. 后台需要能够打印发送Bot消息的 用户ID/群组ID 用户名/群组名 用户手机号/空

AI来源

  1. 需要支持如下厂家来源的API
    1. OpenAI chatgpt
    2. Google Gemini
    3. xAI Grok
    4. OpenRouter
  2. 需要支持思考过程和流式响应
    1. 持续返回消息需要满足消息限制器的要求
  3. 暂时只实现OpenRouter的API调用方式
    1. 使用OpenAI SDK的go版本实现功能

AI消息通知

  1. 包装普通消息通知发送器
    1. 发送普通的消息,非模板消息
  2. 包装AI消息通知发送器
    1. AI消息为markdown格式

基础架构设计

白名单功能

  1. 只能允许白名单内的用户或者群组访问此机器人

消息限制器

  1. TelegramAPI的消息频率有限制请参考官方文档设计相应的消息发送限制器
  2. 参照单例模式设计所有与Telegram交互全部通过消息限制器发送

机器人网络代理

  1. Telegram机器人构建需要考虑到网络代理的情况机器人请求TelegramAPI可以接受socks5和http代理

持久化保存

  1. 持久化信息采用sqlite保存

    1. windows保存至 \naughty_man\
    2. linux保存至 /usr/local/etc/naughty_man/