Mindket

Telegram 机器人:每个人在 Supabase 里有自己的记忆

新上架第 1 版 · 更新于

概览

一个 n8n 工作流,让 Telegram 机器人为每个人保留记忆。它为每个新用户开一个 OpenAI 对话,把对话 id 存进 Supabase 表,之后每条消息都接着那段对话继续。

Telegram 机器人:每个人在 Supabase 里有自己的记忆 是一款 n8n 工作流,属于开发类,由 Mindket 上架。可免费获取。当前为第 1 版,最近更新于 。在本页下载,或复制它的 JSON,再导入 n8n 画布。在 n8n 里启用之前,它不会运行。

速览

用在
  • n8n Cloud:在那里新建一个工作流,把文件导入进去
  • 你自己的 n8n 服务器:同一个文件,同样的步骤,前提是服务器有公开的 HTTPS 地址
  • Supabase:Supabase Cloud,或者 n8n 能访问到的你自己的服务器
  • 换一个数据库:把 Supabase 节点换成能存两个值的别的数据库的节点

平台

连接 3 个应用

运行方式

触发

Telegram 消息

有人给你的机器人发消息时就开始运行,没有表单:

  • 消息的文字
  • 聊天的号码

动作

  1. 在 Supabase 表里查这个人的 Telegram 号码
  2. 对新用户,开一个 OpenAI 对话,并把它的 id 存在号码旁边
  3. 把消息连同对话 id 和 Bot settings 里的规则一起交给 OpenAI 的 Responses API
  4. 从回答里取出回复的文字
  5. 把回复发回同一个 Telegram 聊天

结果

一条接着这个人自己对话的 Telegram 回复,每个人在表里有一行

集成

开始之前要准备好这些。

Telegram

聊天应用

把每条消息送到工作流,并把回复发回去。

需要来自 BotFather 的机器人令牌,用 Telegram 凭据发送

Supabase

记忆表

保存每个人的 Telegram 号码和对话 id。

需要项目地址和它的 secret key,以及一个名为 telegram_users 的表

OpenAI

AI 模型

保存每段对话并写出回复。

需要OpenAI API 密钥和一些额度

工作流检查

由 Mindket 于 2026年11月13日检查

步骤
10 个步骤,由 Telegram 事件启动
AI
没有步骤调用 AI 模型
登录
需要登录:Supabase、OpenAI、Telegram
API 密钥
文件里没有留下 API 密钥
步骤类型
Mindket 的检查器能读懂它全部 7 种步骤类型

以上内容读自工作流文件,并非实际运行的结果。

关于

它是什么

这个 n8n 工作流让 Telegram 机器人记住每一个给它发消息的人。Supabase 表里每个人有一行,记着他的聊天号码和他的 OpenAI 对话 id。新用户得到一段新对话,老用户接着原来的对话。OpenAI 的 Responses API 写出每条回答,Telegram 再把它发回去。十个节点完成全部工作,旁边有五张便签。

适合谁

想让 Telegram 机器人把每个聊天的线索保留几天甚至几周的开发者和小团队。你需要一个 Supabase 项目和一个 OpenAI 密钥。如果所有人共用一份记忆就够了,就别选它,因为简单的聊天机器人更容易运行。

谁在用,怎么用
行业谁在用怎么用例子
客服小店回答回头客,不用再问同样的事顾客一周后回来,机器人仍然知道他问的是哪一张订单。
教育家教和每个学生保持一个学习聊天学生说想再练习上星期二的那个主题,机器人就从那里接着讲。
健康与养生教练在每个客户自己的对话里跟进机器人记得某位客户想多走路,并问这一周过得怎么样。
社群社团组织者帮每位成员解答他自己的问题成员追问一场活动,机器人知道他指的是哪一场。

你需要会一点 n8n:导入一个文件,添加四个凭据,运行两条简短的查询,再改一段文字。

用在哪里

任何有公开 HTTPS 地址的 n8n 都能运行它,因为 Telegram 会把每条消息发到那个地址。

  • n8n Cloud:在那里新建一个工作流,把文件导入进去
  • 你自己的 n8n 服务器:同一个文件,同样的步骤,前提是服务器有公开的 HTTPS 地址
  • Supabase:Supabase Cloud,或者 n8n 能访问到的你自己的服务器
  • 换一个数据库:把 Supabase 节点换成能存两个值的别的数据库的节点

设置

点“下载”会把一个压缩包存到你的下载文件夹,里面有 workflow.json 和 Mindket 写的设置说明。你需要一个 Telegram 机器人令牌、一个 Supabase 项目和一个 OpenAI API 密钥。

先准备好这些
需要说明
n8nn8n Cloud,或有公开 HTTPS 地址的服务器
Telegram一个机器人和它的令牌,在 Telegram 里向 BotFather 申请
Supabase一个项目、它的地址和它的 secret key
OpenAI一个 API 密钥和一些额度
  1. 在 n8n 里新建一个工作流,打开它的菜单,选 Import from File,选中 workflow.json。
  2. 在 Supabase 的 SQL 编辑器里,运行便签里的那条查询,建出表 telegram_users:一个是 uuid 的 id、一个 telegram_id、一个 openai_conversation_id 和一个创建时间。
  3. 再运行第二条查询,给这张表打开 Row Level Security。n8n 用的 secret key 仍然可以使用。
  4. 在 Get New Message 里,添加一个 Telegram 凭据,填你的机器人令牌。在 Send Message to User 里选同一个凭据。
  5. 在 Find User 和 Create User 里,添加一个 Supabase 凭据,填你的项目地址和 secret key。
  6. 在 Create conversation 和 Ask OpenAI 里,添加一个 OpenAI 凭据,填你的 API 密钥。
  7. 打开 Bot settings,改写 instructions 里的规则。
  8. 点 Test workflow,给你的机器人发一条消息。telegram_users 里会多出一行,再发一条消息,机器人会接着聊,不会再多一行。
  9. 打开这个工作流,这样你不在的时候机器人也会继续回答。

如何使用

工作流打开之后会自己回答。有人给机器人发的每条消息都会开始一次运行,并发回一条回复。第一次来写消息的人会在表里增加一行。

想要不同的结果,改这里
要改的在哪里改
机器人遵守的规则Bot settings 里的 instructions
模型Bot settings 里的 model
没有答案时的致歉Pick the answer 里表达式的末尾
让某一个人重新开始删掉他在 telegram_users 里的那一行
谁可以使用机器人Get New Message 里的 Restrict to User IDs

示例

一位家教在 Telegram 上开着一个小型英语班。

一位学生写道“我们能再练一次过去时吗?”。工作流没有找到她号码的那一行,于是开了一段对话并存下它的 id。机器人给出三道简短的练习。两天后她写“上次那几道我做完了”。这时那一行已经在了,所以机器人接着同一段对话,知道她指的是哪些练习。在你依赖机器人之前,先检查它教的内容,因为答案是模型生成的。

新手与专家

新手:n8n 把工作流画成用线连起来的方框,每个方框,也就是节点,只做一件事。Supabase 是一个在线数据库,有点像程序也能读取的电子表格。这个工作流保存一份名单,记着谁给你的机器人发过消息,以及每个人对应哪一段对话。打开之前,先点 Test workflow,并给机器人发一条消息。

专家:记忆保存在 OpenAI 那边,表里只是把一个聊天号码对应到一个对话 id,所以工作流自己从不存聊天的文字。

想看细一点,看这里
节点它做什么要知道什么
Find User在 telegram_users 里查聊天号码Always Output Data 开着,所以新用户也能走到 If 节点
If User exists把老用户送到 Merge,把新用户送到 Create conversation它检查 id 是文字,所以 id 列是 uuid
Create conversation用 POST /v1/conversations 开一段对话回答里有它的 id
Create User保存号码和对话 idSupabase 会返回保存的那一行
Merge把到达的那一行传下去每次运行总有一个输入是空的
Ask OpenAI带着文字和对话 id 向 /v1/responses 发请求请求体用 JSON.stringify 生成,OpenAI 会加上这段对话之前的内容
Pick the answer读取 output 里 message 项的文字它跳过推理项,没有文字时写一句简短的致歉

注意事项

原来的副本跑在 OpenAI 已经关闭的 Assistants API 上,所以这份副本把它改到了 Responses 和 Conversations API。

  • API:OpenAI 的停用页面(2026 年 11 月 12 日查阅)给出 Assistants API 的关闭日期是 2026 年 8 月 26 日,并指明 Responses API 和 Conversations API 是它的替代
  • 规则:原来的副本用了一个属于它作者的 assistant。现在规则和模型放在 Bot settings 里
  • 列:openai_thread_id 现在叫 openai_conversation_id,建表的查询也重写了,id 用 uuid
  • 记忆:OpenAI 的指南(2026 年 11 月 12 日查阅)说,对话对象和其中的内容不受 30 天 TTL 限制。
  • 费用:每条回答都会把这段对话之前的所有内容作为输入发出,所以聊得越长,每条新消息越贵。模型 gpt-6-luna 每百万输入 token 收 0.10 美元,每百万输出 token 收 0.50 美元。
  • 指令:OpenAI 的参考文档没有说 instructions 在一段对话里会不会延续,所以这份副本每条消息都发送它们
  • 开放的机器人:任何找到机器人的人都能花掉你的 OpenAI 额度。Get New Message 里的 Restrict to User IDs 可以限制,它在节点版本 1.2 及以上有效,这个文件用的就是 1.2
  • 只读文字:照片或语音消息没有文字,所以 OpenAI 会拒绝这次调用
  • Secret key:Supabase 的 secret key 能完全访问你的数据,所以只把它放在 n8n 凭据里
  • 你的数据:每条消息都会发给 OpenAI,聊天号码和对话 id 存在你的 Supabase 表里
  • 没有实测:Mindket 没有调用 Telegram、Supabase 或 OpenAI 来测试这个文件,而是在测试运行器里用替身回答跑过它
  • 凭据:JSON 里没有任何凭据,原作者的 assistant id 也已去掉

README 和文件

README

Telegram 机器人:每个人在 Supabase 里有自己的记忆

一个让 Telegram 机器人为每个人保留记忆的 n8n 工作流。有人第一次给机器人发消息时,工作流为他开一段 OpenAI 对话,并把对话 id 存进 Supabase 表里他的聊天号码旁边。之后的每条消息都接着同一段对话,所以机器人在重启或隔了一天之后仍记得这个聊天。

包里有什么

  • workflow.json:n8n 导出的工作流,十个节点和五张便签。里面没有任何凭据。
  • README.md:这份设置说明,压缩包里的是英文版。

我们相对原来的副本改了什么

  • 原来的副本用的是 OpenAI 的 Assistants API,每条回复都要用一个 thread、一条 message、一次 run 和一次读取消息列表。OpenAI 的停用页面(2026 年 11 月 12 日查阅)给出 Assistants API 的关闭日期是 2026 年 8 月 26 日,并指明 Responses API 和 Conversations API 是它的替代。这份副本用的就是它们。
  • Create conversation 取代了创建 thread 的那次调用。Ask OpenAI 取代了发送消息、启动 run 和读回消息的三次调用。一次对 /v1/responses 的调用就返回答案,新节点 Pick the answer 负责读取它。
  • 原来的副本用了一个属于它作者的 assistant,bot 的规则就放在那个 assistant 里。现在规则放在新节点 Bot settings 里,模型名也在那里,是 gpt-6-luna。
  • Supabase 的列 openai_thread_id 现在叫 openai_conversation_id,建表的查询也重写了。id 列特意用 uuid,因为 If User exists 检查的是 id 是文字。
  • Get New Message 现在是节点版本 1.2,它可以限制谁能使用机器人。见“要知道的事”里的第一条。
  • 原来的八张便签链接到作者自己的页面。现在换成五张新便签,没有外部链接。
  • 所有凭据引用都去掉了,所以由你自己选。

开始之前

  • 一个有公开 HTTPS 地址的 n8n 实例。Telegram 用 HTTPS POST 把更新发到 webhook 地址。
  • 一个 Telegram 机器人和它的令牌。你在 Telegram 里和 BotFather 聊天就能创建。
  • 一个 Supabase 项目。它的地址和 secret key 填进一个 n8n 凭据。
  • 一个有一些额度的 OpenAI API 密钥。

设置

  1. 在 n8n 里新建一个工作流,打开它的菜单,选 Import from File。选中 workflow.json。
  2. 在 Supabase 的 SQL 编辑器里,运行下面这条查询来建表:
create table public.telegram_users (
  id uuid primary key default gen_random_uuid(),
  telegram_id bigint not null unique,
  openai_conversation_id text not null,
  created_at timestamptz not null default now()
)
  1. 再运行第二条查询,alter table public.telegram_users enable row level security。这样这张表对你项目的公开密钥就是关着的,n8n 用的 secret key 仍然可以使用。
  2. 在 Get New Message 里,添加一个 Telegram 凭据,填你的机器人令牌。在 Send Message to User 里选同一个凭据。
  3. 在 Find User 和 Create User 里,添加一个 Supabase 凭据,填你的项目地址和 secret key。
  4. 在 Create conversation 和 Ask OpenAI 里,添加一个 OpenAI 凭据,填你的 API 密钥。
  5. 打开 Bot settings,改写 instructions 里的规则。你也可以在那里换模型。
  6. 点 Test workflow,给你的机器人发一条消息。telegram_users 里会多出一行。再发一条消息,机器人会接着聊,不会再多一行。
  7. 打开这个工作流,这样你不在的时候机器人也会继续回答。

一次运行是怎样的

  1. 有人给你的机器人发消息时,Get New Message 开始这次运行。
  2. Find User 在 telegram_users 里查这个人的聊天号码。没有这一行时,它输出一个空项。
  3. If User exists 把老用户直接送到 Merge。
  4. 对新用户,Create conversation 在 OpenAI 开一段对话,Create User 把它的 id 和他的聊天号码一起保存。保存的那一行进入 Merge 的第二个输入。
  5. Merge 把到达的那一行传下去,对话 id 在 openai_conversation_id 里。
  6. Bot settings 加上模型名和规则。
  7. Ask OpenAI 把消息文字连同对话 id 一起发出。OpenAI 会把这段对话之前的内容加进输入。
  8. Pick the answer 取出模型回复的文字。如果没有文字,它写一句简短的致歉。
  9. Send Message to User 把它发到消息来的那个聊天。

改变外观

  • 规则和模型:Bot settings。
  • 致歉的话:Pick the answer 里表达式末尾的文字。
  • 让某一个人重新开始:删掉他在 telegram_users 里的那一行。他的下一条消息会开一段新对话。
  • 谁可以使用机器人:见“要知道的事”里的第一条。

要知道的事

  • 任何找到机器人的人都能给它发消息,花掉你的 OpenAI 额度。想限制的话,打开 Get New Message,在 Additional Fields 下加上 Restrict to User IDs 字段,列出可以使用的 Telegram 用户号码。其他人的消息会被直接丢弃,不报错。这个字段在节点版本 1.2 及以上才会生效。
  • 记忆保存在 OpenAI 那边。OpenAI 关于对话状态的指南(2026 年 11 月 12 日查阅)说,对话对象和其中的内容不受 30 天 TTL 限制。
  • 每条回答都会把这段对话之前的所有内容作为输入发出,所以聊得越长,每条新消息越贵。在 OpenAI 的模型页面上,gpt-6-luna 每百万输入 token 收 0.10 美元,每百万输出 token 收 0.50 美元。
  • OpenAI 的参考文档没有说 instructions 在一段对话里会不会延续,所以这份副本每条消息都发送它们。
  • 机器人只读文字。照片或语音消息没有文字,所以 OpenAI 会拒绝这次调用,发送的人收不到回复。
  • 回复用 Telegram 的 Markdown 模式发出,这是 n8n 的默认值。答案里单独的 _ 或 * 可能让 Telegram 拒收这条消息。
  • Supabase 的 secret key 能完全访问你的数据。只把它放在 n8n 凭据里,别的地方都不要放。
  • 你的数据:每条消息都会发给 OpenAI,聊天号码和对话 id 存在你的 Supabase 表里。
  • 没有实测:我们没有调用 Telegram、Supabase 或 OpenAI 来测试这个文件,而是在测试运行器里用替身回答跑过它,分别是新用户、老用户和没有文字的回复。
  • 凭据:JSON 里没有任何凭据。
文件
NOTICE.md  659 B
README.md  6 KB
workflow.json  11 KB

3 个文件,共 18 KB,以 zip 压缩包下载。

更新内容

  • 第 1 版 · 2026-11-12

评价

还没有评分

写评价

还没有评价。

Mindket 的更多商品

查看 Mindket 的全部商品

Nanosaur2-670M

well9472 · 工具包

用一个 670M 参数的小型扩散模型,根据文字提示生成插画,在 ComfyUI 中运行。这是一个低预算的研究模型,适合想试用或训练自己 LoRA 的人。

新上架

waqf-ocr-hand-written-v1

Waqf-AI · 工具包

读取图片中的阿拉伯语手写文字并以文本形式返回。这是微调过的 PaddleOCR-VL 模型,适合要把阿拉伯语手写内容数字化的人。

新上架

Wan2.2-TI2V-5B-Diffusers

Wan-AI · 工具包

根据文本提示或图像加文字生成视频片段,最高 720P、每秒 24 帧,Diffusers 格式,适合单块消费级 GPU。

新上架

开发类的相似商品

查看开发类的全部商品

Wan2.2-S2V-14B

Wan-AI · 工具包

根据音频生成电影感的角色视频,也能给现有视频做口型同步。适合有大显卡的视频创作者、动画师和研究人员。

新上架

Wan2.2-Animate-14B

Wan-AI · 工具包

通过复制表演者的动作和表情,让角色动起来,或把角色换进视频里,是 Wan2.2 视频系列中的一个模型。只能使用你有权使用的面孔和形象。

新上架

d3-turbo

vllm-sr · 工具包

在一次调用中回答关于文字、图片或视频的选择、是非、打分、框选和跟踪类问题,并为每个答案给出概率。适合构建路由或视觉检查的人。

新上架