Feature

Personal Finance Telegram Bot: Chat and Approve by Tap

Connect your own Telegram bot to Open Net Worth: chat with Lucius from your phone, approve changes with a tap and get reports. Setup, approvals and privacy.

Personal Finance Telegram Bot: Chat and Approve by Tap, over the Open Net Worth ledger and a confirm card from Lucius, on demo data.

A personal finance Telegram bot is useful for one reason: your money questions and approvals happen where you already read messages. Open Net Worth, an open-source personal wealth agent, lets you create your own bot and talk to Lucius, the AI agent inside the app, from your phone. You can ask for your net worth, send a photo of a receipt, tap to approve a change and get your reports there.

Short answer: Create a bot with @BotFather, open Connectors → Browse & add → Channels → Telegram, paste the token and choose who can chat. The app connects out to Telegram, so you open no port. Manual approval pauses every Ask on a card you tap, and Auto lets ordinary changes through.

Note: Open Net Worth is software, not a financial advisor. This guide shows how a connector works; it is not financial, investment, tax or legal advice.

What connecting Telegram does

Three things change once the bot is online:

  • You chat with Lucius. It works like the in-app chat. Ask a question, send a photo or a document, or tell him to log a purchase.
  • You approve changes with a tap. When Lucius wants to change something that needs your OK, the message arrives with buttons: ✓ Once, ✓ Always and ✗ Deny, or ✓ Apply and ✗ Discard. They behave like confirm cards in the app, and the change that runs is exactly the one shown.
  • Reports and alerts arrive. The ready-made Daily briefing, Weekly report and Monthly report Automations send to Telegram once it’s connected. Lucius writes each one from your own book every time it runs. Price and news alerts can arrive there too.

The bot is yours. You create it, you hold its token and only the chats you approve can reach it. There’s no shared bot run by the project.

Set up the bot step by step

  1. Create the bot. In Telegram, open a chat with @BotFather, Telegram’s own bot for making bots. Check for the blue verified tick.
  2. Name it. Send /newbot. Give it a display name such as My Lucius, then a username that ends in bot, such as my_lucius_bot.
  3. Copy the token. BotFather replies with a token that looks like 123456789:ABCdef…. Telegram’s bot tutorial says to treat it like a password and share it with nobody.
  4. Add the connector. In Open Net Worth, open Connectors, click Browse & add, choose Channels, click Telegram, then Add connector.
  5. Paste the token into Bot token.
  6. Choose who can chat (next section), then click Save. The bot goes online within a few seconds.

Then send /start: the bot introduces itself and lists its commands. Ask something real, such as “What’s my net worth?”.

Pairing or Allowlist: who can chat

Who can chat is the real access control, so pick it on purpose.

OptionHow you get inBest for
PairingMessage the bot, approve its codeLetting yourself in the easy way
AllowlistType your chat ID into Allowed chat IDsFixed IDs, nothing to approve

With Pairing: send the bot any ordinary message, such as hi. It replies with a pairing code and says you need approval first. In the app, open the Telegram connector, choose ⋯ → Edit configuration, find the code under Pending approvals and click Approve. Your chat now shows under People who can chat.

With Allowlist: send /id to the bot. It replies with your chat ID, a number. Type it into Allowed chat IDs, separate several with commas, and click Save. A group chat’s ID starts with -. A new connector starts on Allowlist, and a blank list means nobody can chat.

Reports and alerts go to the same list, and only that list. If it’s empty, nothing is sent.

How the app connects out, with no open port

Telegram’s Bot API gives a bot two exclusive ways to receive messages: long polling and webhooks. A webhook needs Telegram to reach a public address on your side. Open Net Worth uses long polling instead. The app keeps a request open to Telegram’s servers, asks for new messages and answers over HTTPS.

That’s why your computer doesn’t need to be reachable from the internet: no domain, tunnel or forwarded port.

Two limits come with it.

  • One copy per token. Telegram allows one poller per bot. Run the app on two machines with the same token and they knock each other offline. Use a separate bot for each copy, or set ONW_DISABLE_TELEGRAM=1 on the one that should stay out.
  • The app has to be running. When it starts, it discards messages that were waiting, and Telegram keeps undelivered updates 24 hours at most. If you wrote while the app was off, send it again.

Commands worth knowing

CommandWhat it does
/newStart a fresh conversation
/stopStop the reply being written
/idShow this chat’s ID
/modelShow or switch the AI model
/statusModel, depth, approvals, today’s AI cost
/costToday’s and the last 30 days’ AI spend
/approvalsChoose manual or auto

/help lists the rest.

Manual or Auto: what happens when Lucius sends a message

Lucius sending you a Telegram message counts as a change that reaches outside the app. By default the tool for it, like sending an email or a webhook, is set to Ask. The approval mode decides what asking means.

ModeWhen Lucius wants to send or change something
ManualPauses on a card and waits for your tap
AutoA model checks it; ordinary calls pass

Manual is the strict one. Every tool set to Ask stops on a card, and nothing runs until you tap Once, Always or Deny. Auto checks each call against what you asked for. A call that is plainly what you typed happens straight away, and the reply shows what changed. Anything that goes further stops for you. The Permissions v2 docs cover both.

Pick the mode from the bot. Send /approvals and tap manual or auto. It is the same setting as the control in the app, so changing it in either place changes it in the other, and it applies from your next message. /status shows the current one, and /new keeps Manual. This needs the experimental Permissions v2 switch under Settings → Developer → Experimental, which is off by default. Without it, cards still arrive with buttons.

Details that matter:

  • It works for one person. /approvals applies only on a bot with exactly one approved person, in that person’s private chat. Approve a second person, or use a group, and every Ask becomes a card.
  • Deny sticks. After a ✗ Deny, the rest of that reply keeps asking, even in Auto.
  • Cards stay put. A card only answers taps in the chat it was sent to. If it can’t be sent, nothing has run and you can answer in the app.

Automations use their own mode. A report Automation runs on its own approval mode, not the one from your chat. The Daily briefing, Weekly report and Monthly report templates start in Automatically approve, because nobody is at the screen at 9am to tap a card. An Automation you build yourself starts in Manually approve: it pauses on a card, the run shows Needs you, and nothing is sent until you answer. See Automations.

What passes through Telegram’s servers

Everything you type to the bot and everything Lucius says back goes through Telegram. That includes photos and documents you send, Lucius’s answers with your figures in them, the text on each approval card and the reports he delivers.

Telegram’s own pages say:

  • Bot API requests are HTTPS calls to api.telegram.org, which is Telegram’s server, so the bot’s traffic passes through it.
  • Telegram’s FAQ says end-to-end encryption is a feature of Secret Chats. Cloud chats use server-client encryption and are stored encrypted in Telegram’s cloud. Secret Chats are started from another person’s profile.
  • The MTProto page describes the basic layer for cloud chats as server-client encryption.

So don’t treat the chat as end-to-end private. Telegram can process what passes through it, under its own terms. If a figure shouldn’t leave your machine, ask for it in the app. The wider picture is in where your financial data goes.

The token stays on your machine. It’s never sent to Lucius or the AI model, never included in an export and left out of a sanitised backup. Your AI provider still sees your conversation, exactly as in the app. To revoke a leaked token, send /revoke to @BotFather, then paste the new one into Bot token and click Save.

Who can reach Lucius

Anyone in an approved chat is treated as you, with the same access as the web app, financial data included. Only approve chats you control.

  • Groups are risky. In a group chat, everyone in it can talk to Lucius and tap approval buttons. Prefer a private chat.
  • Removing someone. Delete their ID from People who can chat or Allowed chat IDs and click Save.
  • Pause on the connector’s page stops the bot answering anyone until you click Resume.
  • Remove connector, under ⋯, deletes the token and shuts the bot out completely.

Limits to plan around

  • Messages are split. Telegram caps a text message at 4,096 characters, so long answers arrive in several parts.
  • Files have size limits. A bot can download files up to 20 MB through Telegram’s Bot API. If Telegram can’t hand a file over even after one retry, the bot asks you to send it again instead of going quiet.
  • It’s a chat, not the full app. Charts and settings pages stay in the app. There’s no phone app; for the whole interface on your phone, see the multi-device docs.
  • It’s not a bank connection. Telegram doesn’t pull transactions. For that, see SimpleFIN or Plaid in the US and Canada.

If the bot doesn’t reply

Check the connector isn’t paused. Under Allowlist, your chat ID must be in Allowed chat IDs; send /id and compare. A reply starting “Hi! You’ll need to be added” means your chat isn’t approved, and it includes the ID to add. If no pairing request appears, set Who can chat to Pairing, save, and send an ordinary message, not a / command. Last, paste the token again in case it was revoked.

Put it to work

The phone is where the smallest jobs happen. A cash purchase becomes one message, and the weekly workflow keeps its review to a short sit-down after the Monday report lands. Telegram also carries the summary of the email-based flow in budget app without bank sync. When a balance looks wrong, this guide to a budget that doesn’t match the bank helps you find out why. And for what Lucius can do with your books once he’s reachable, read AI agent for personal finance. The full connector reference is in the Telegram docs, and the broader picture of what is stored where is on the security and privacy page.

Frequently asked questions

Do I need to open a port to use the Telegram bot?

No. Open Net Worth polls Telegram from your machine, so the connection goes out and nothing connects in. Telegram's Bot API offers long polling as one of two ways to receive messages, and the app uses it.

Is a chat with the bot end-to-end encrypted?

Treat it as not. Telegram's FAQ describes end-to-end encryption as a feature of Secret Chats and says cloud chats use server-client encryption and are stored in Telegram's cloud. Your messages to the bot and Lucius's replies pass through Telegram's servers.

Can Lucius change my books from Telegram without asking?

Only if you let him. In Manual he pauses on a card for every tool set to Ask. In Auto a small model checks each call and asks when something looks unsafe. You can switch between them with /approvals on a bot that has one approved person.

What happens to messages I send while the app is off?

Don't count on them. The app discards what was waiting when it starts polling, and Telegram keeps undelivered updates for 24 hours at most. Send it again once the app is running.

Can two people share one bot?

They can, but everyone you approve is treated as you, with the same access to your financial data. A second approved person also turns off the Auto setting on Telegram, so every ask becomes a card. Prefer a private chat with one person.

Sources

  1. Telegram connector, Open Net Worth docsofficial
  2. Confirm cards, Open Net Worth docsofficial
  3. Automations, Open Net Worth docsofficial
  4. Permissions v2, Open Net Worth docsofficial
  5. Telegram bot lifecycle and polling, bot.py, Open Net Worth repositoryofficial
  6. Telegram send tool, notifications.py, Open Net Worth repositoryofficial
  7. A Telegram owner's turn follows the approval mode, ADR, Open Net Worth repositoryofficial
  8. Telegram bot tutorial: tokens and @BotFather, Telegram Bot Platformofficial
  9. Bot API: making requests, getUpdates and file limits, Telegram Bot Platformofficial
  10. Bot FAQ: getting updates, Telegram Bot Platformofficial
  11. Telegram FAQ: cloud chats and secret chats, telegram.orgofficial
  12. MTProto: server-client encryption for cloud chats, Telegram APIofficial

Share