Send /note to save something word for word in Baserow, and /find to read your notes back in the same chat.

UsesBaserowTelegram

Keep notes in Telegram, stored in Baserow

Whenever a message arrives in your Telegram chat, it is checked to see whether it starts with /note or /find. Send /note followed by anything you want to remember and it is kept in a Baserow table exactly as you typed it. Send /find on its own to read back your most recent notes, or /find with a word to see every note containing it, all in the same chat.

Nothing is rewritten, summarised or tagged on the way in or out, and no AI reads your notes at any point: what you send is exactly what is stored and exactly what comes back. A note that could not be saved, or a lookup that failed, is reported in the chat rather than silently lost. Long notes are shortened when listed but kept in full in the table, and a reply lists only the latest few and says how many were left out. Any other command gets a short reminder of the two that work.

Before the first run you need a Telegram bot, a private chat with it, and a Baserow table with three text columns named 'Note', 'From' and 'Saved'.

TelegramTelegramWhen a new message is received. Save it as message.When a new message is received. Save it as message.
ValuesSet notesTableId to blank.Set notesTableId to blank.
ValuesSet maxNotesShown to 10.Set maxNotesShown to 10.
MathSet notesShown to maxNotesShown multiplied by 1.Set notesShown to maxNotesShown multiplied by 1.
Decisions & LoopsIf notesShown is less than 1If notesShown is less than 1
Yes
Decisions & LoopsStop and report a problem: Set 'maxNotesShown' to 1 or more - it is how many notes one /find reply lists.Stop and report a problem: Set 'maxNotesShown' to 1 or more - it is how many notes one /find reply lists.
No
No steps
ValuesSet chatId to message.chat_id.Set chatId to message.chat_id.
ValuesSet messageText to blank.Set messageText to blank.
Decisions & LoopsIf a step below fails, save the error as noTextErrorIf a step below fails, save the error as noTextError
Try
TextTrim message.text and save it as messageText.Trim message.text and save it as messageText.
On error
ValuesShow in the output: This message carried no text, so there was nothing to do..Show in the output: This message carried no text, so there was nothing to do..
Decisions & LoopsIf messageText is emptyIf messageText is empty
Yes
Decisions & LoopsFinish the run: This message carried no text, so no note was saved or looked up.Finish the run: This message carried no text, so no note was saved or looked up.
No
No steps
TextSplit messageText by a space and save it as words.Split messageText by a space and save it as words.
TextMake the first item of words[0] split by @ lowercase and save it as command.Make the first item of words[0] split by @ lowercase and save it as command.
TextTrim the items from index 1 onward of words joined by a space and save it as rest.Trim the items from index 1 onward of words joined by a space and save it as rest.
Decisions & LoopsIf command is not /note and command is not /findIf command is not /note and command is not /find
Yes
Decisions & LoopsIf messageText starts with / (ignoring case)If messageText starts with / (ignoring case)
Yes
TelegramTelegramSend a message to chat chatId.Send a message to chat chatId.I keep notes for you. /note <what you want to remember> - saves it word for word /find <word> - shows the notes containing that word /find - shows your most recent notes
No
No steps
Decisions & LoopsFinish the run: This message was not a /note or /find command, so nothing was saved.Finish the run: This message was not a /note or /find command, so nothing was saved.
No
No steps
Decisions & LoopsIf command is /noteIf command is /note
Yes
Decisions & LoopsIf rest is emptyIf rest is empty
Yes
TelegramTelegramSend a message to chat chatId.Send a message to chat chatId.Write the note after /note, for example: /note the spare key is in the blue tin
Decisions & LoopsFinish the run: The /note command had nothing after it.Finish the run: The /note command had nothing after it.
No
No steps
ValuesSet author to unknown.Set author to unknown.
Decisions & LoopsIf a step below fails, save the error as noNameErrorIf a step below fails, save the error as noNameError
Try
TextTrim message.from_username and save it as author.Trim message.from_username and save it as author.
On error
ValuesShow in the output: This sender has no Telegram username..Show in the output: This sender has no Telegram username..
ValuesSet saveFailed to false.Set saveFailed to false.
Decisions & LoopsIf a step below fails, save the error as saveErrorIf a step below fails, save the error as saveError
Try
BaserowBaserowCreate a row in table notesTableId.Create a row in table notesTableId.
On error
ValuesChange saveFailed to true.Change saveFailed to true.
Decisions & LoopsIf saveFailed is yesIf saveFailed is yes
Yes
TelegramTelegramSend a message to chat chatId.Send a message to chat chatId.I could not save that note to Baserow, so it has not been kept. Nothing was changed - send it again in a moment.
Decisions & LoopsStop and report a problem: Baserow would not accept the new note.Stop and report a problem: Baserow would not accept the new note.
No
No steps
TelegramTelegramSend a message to chat chatId.Send a message to chat chatId.Saved: rest truncated to 200 characters using "…" as the ellipsis
Decisions & LoopsFinish the run: Note saved.Finish the run: Note saved.
No
ValuesSet notesPage to nothing.Set notesPage to nothing.
ValuesSet readFailed to false.Set readFailed to false.
Decisions & LoopsIf a step below fails, save the error as readErrorIf a step below fails, save the error as readError
Try
BaserowBaserowList rows in table notesTableId. Save it as notesPage.List rows in table notesTableId. Save it as notesPage. Rows per page: 200
On error
ValuesChange readFailed to true.Change readFailed to true.
Decisions & LoopsIf readFailed is yesIf readFailed is yes
Yes
TelegramTelegramSend a message to chat chatId.Send a message to chat chatId.I could not read your notes from Baserow just now. Nothing was changed - try again in a moment.
Decisions & LoopsStop and report a problem: Baserow would not return the notes table.Stop and report a problem: Baserow would not return the notes table.
No
No steps
ValuesSet savedRows to notesPage.results.Set savedRows to notesPage.results.
ValuesSet matches to an empty list.Set matches to an empty list.
Decisions & LoopsFor each savedRow in savedRows:For each savedRow in savedRows:
Decisions & Loops If a step below fails, save the error as rowError If a step below fails, save the error as rowError
Try
TextTrim savedRow.Note and save it as noteText.Trim savedRow.Note and save it as noteText.
Decisions & LoopsIf noteText isn't empty and rest is empty or noteText contains rest (ignoring…If noteText isn't empty and rest is empty or noteText contains rest (ignoring…
Yes
ListsAdd • noteText truncated to 300 characters using … as the ellipsis to the end of matches and save it as matches.Add • noteText truncated to 300 characters using … as the ellipsis to the end of matches and save it as matches.
No
No steps
On error
ValuesShow in the output: Skipped a row with no text in its Note column..Show in the output: Skipped a row with no text in its Note column..
Decisions & LoopsIf matches is emptyIf matches is empty
Yes
ValuesSet emptyReply to You have no notes saved yet. Send /note followed by anything you want to remember..Set emptyReply to You have no notes saved yet. Send /note followed by anything you want to remember..
Decisions & LoopsIf rest isn't emptyIf rest isn't empty
Yes
ValuesChange emptyReply to No saved note contains “@rest”.Change emptyReply to No saved note contains “@rest”.
No
No steps
TelegramTelegramSend a message to chat chatId.Send a message to chat chatId.emptyReply
Decisions & LoopsFinish the run: No matching notes.Finish the run: No matching notes.
No
No steps
ListsTake matches from position -notesShown on and save it as shown.Take matches from position -notesShown on and save it as shown.
ValuesSet header to Your most recent notes:.Set header to Your most recent notes:.
Decisions & LoopsIf rest isn't emptyIf rest isn't empty
Yes
ValuesChange header to Notes containing “@rest”:.Change header to Notes containing “@rest”:.
No
No steps
Decisions & LoopsIf the length of matches is greater than the length of shownIf the length of matches is greater than the length of shown
Yes
ValuesChange header to header (the latest the length of shown as text of the length of matches as text).Change header to header (the latest the length of shown as text of the length of matches as text).
No
No steps
TelegramTelegramSend a message to chat chatId.Send a message to chat chatId.header shown joined by a new line