Skip to content
cyunreiPublic
forked from sxyazi/bendan

About

Bendan Bot

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

79 Commits

Folders and files

Repository files navigation

Bendan Bot

一个 Telegram 的 @bendan_bot

功能

目前包含以下指令或功能:

  • 对消息回复 /*。如 /吃,Bot 发送一个 a 吃了 b !
  • 对消息回复 /* *。如 /吃 豆腐,Bot 发送一个 a 吃 b 豆腐!
  • 直接发送或回复 /me *。如 /me 喝醉了,Bot 发送一个 a 喝醉了!
  • 对消息回复 //pin,Bot 将消息置顶(若有权限),最多保留 10 条由 Bot 置顶的消息
  • 直接发送或回复 //whoami,Bot 发送指令调用者 ID、当前群组 ID
  • 直接发送或回复 /没关系、/没事的,生存鼓励师猫猫发送一条“没关系……”句子
  • 识别具有跟踪参数的 URL,并自动净化它们
  • 直接发送或回复 ?,Bot 回复一个 ?
  • 直接发送或回复 看看…,Bot 半随机地回复一个内容
  • 直接发送或回复 是…吗、有…吗、是…还是…、有…还是…,Bot 半随机地回复一个内容
  • 直接发送或回复 是不是…、有没有…、会不会…、能不能…、…行不行、这么有…,Bot 半随机地回复一个内容
  • 直接发送或回复 //lang code 执行代码(可多行),目前支持 Go、JavaScript,如 //js Math.sin(45)
  • 直接发送或回复 /ai <问题>,Bot 调用 AI 回答;引用一条消息后发送 /ai <指令>(如 总结、翻译成英文),Bot 将被引用消息与指令一起交给 AI 处理
  • 直接发送或回复 /aiws <问题>:Bot 先用 Gemini flash-lite 把问题提炼成最佳搜索关键词,再通过 Tavily 联网检索 5 条结果,然后交给 AI 总结并附引用编号([1][2]);回复末尾列出来源链接(需要配置 ai_search_api_key)。引用消息后的 /aiws 同 /ai,会把被引用消息一起带去用于关键词提炼
  • 转发 Telegram channel 消息到 Twitter、Mastodon

部署到 Vercel

你可以 Fork 本仓库,然后一键部署到 Vercel。需要在 Vercel ENV 中配置如下变量:

  • BOT_TOKEN:Telegram Bot 的 Token
  • REFRESH_KEY:用于第一次触发 Webhook 配置的密钥
  • DB_URI:(可选)MongoDB 的连接 URI。用于置顶、转发功能,不需要这些功能则不配置
  • DB_NAME:(可选)MongoDB 的数据库名称。同上,可不配置
  • FORWARD_CONFIG:(可选)转发功能配置,JSON 字符串,具体字段见 部署到 Server。无需该功能则不配置
  • AI_API_KEY:(可选)Google AI Studio 的 API Key,用于 /ai 命令。可在 https://aistudio.google.com/app/apikey 申请
  • AI_MODEL:(可选)调用的 Gemini 模型,默认 gemini-pro。如需 gemini-1.5-flash、gemini-1.5-pro 等请显式指定
  • AI_SEARCH_API_KEY:(可选)Tavily Search 的 API Key,用于 /ai 命令联网检索。配置后 Bot 会先调用 Tavily 搜索 5 条结果再交给 AI 总结,并在回复末尾附上来源链接。不配置则不启用搜索。申请地址 https://tavily.com

设置完成后,访问 https://your-domain.vercel.app/?key=<refresh_key> 对 Webhook 初始化即可。

部署到 Server

您需要做的是,在根目录创建 .config 文件,并做如下配置:

{
  "bot_token": "...",
  "refresh_key": "secret",
  "db_uri": "mongodb+srv://...",
  "db_name": "bendan",
  "ai_api_key": "Google AI Studio 的 API Key",
  "ai_model": "gemini-pro",
  "ai_search_api_key": "Tavily Search 的 API Key(可选;不配置则 /ai 不联网)",
  "forward_config": {
    "group": {
      "id": "channel 关联群组 ID,可通过 //whoami 指令查询",
      "owner": "群组所有者 ID,用于后续转发交互鉴权"
    },
    "twitter": {
      "consumer_key": "Twitter 应用ID,在 developer.twitter.com 创建应用",
      "consumer_secret": "Twitter 应用密钥,同上",
      "user_token": "对应 Twitter 用户的 Access Token,单用户可在 developer.twitter.com 生成,或多用户基于应用的 OAuth1 授权",
      "user_secret": "user_token 对应的 secret"
    },
    "mastodon": {
      "endpoint": "如 https://mastodon.social",
      "token": "Preferences - Development 中创建应用得到"
    },
    "allowed_tags": ["随原文一起转发的 tag"]
  }
}

以上参数同 部署到 Vercel,配置完成后直接运行主程序即可。

隐私

受 Telegram Bot API 限制,无法获取所有已置顶消息,以用于“仅保留 10 条置顶”功能。

因此需要将由 Bot 置顶的消息存储下来,但也仅存储了 (置顶消息ID, 群组ID, 置顶时间) 用于取消老的消息置顶,该 Bot 不会存储任何与消息内容有关的信息。

License

Bendan Bot is licensed under the MIT License.

About

Bendan Bot

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

Contributors

Languages