一个 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
你可以 Fork 本仓库,然后一键部署到 Vercel。需要在 Vercel ENV 中配置如下变量:
BOT_TOKEN:Telegram Bot 的 TokenREFRESH_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 初始化即可。
您需要做的是,在根目录创建 .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 不会存储任何与消息内容有关的信息。
Bendan Bot is licensed under the MIT License.