commercialista /komːertʃa'lista/ noun
accountant, business consultant
commercialista-bot is a Telegram bot that helps you enter records into a
beancount file using Fava as a backend.
The bot aims to speed up data entry while on the go, without going through the trouble of keeping track of receipts. It is not meant to be a full replacement for the beancount CLI tools.
- Register a new bot and get your token from BotFather
git clone https://github.com/ALCC01/commercialista-bot- Configure the bot creating a
.envfile (see.env.example) npm install --only=prodnpm start
commercialista-bot can be configured using environment variables or using a
.env file.
TELEGRAM_TOKEN: your bot's tokenFAVA_PRIVATE: your Fava endpoint (eghttps://localhost:5000/book). This can contain HTTP Basic Auth credentials or other secrets which must not be shared with the users.FAVA_PUBLIC: your public Fava endpoint that can be shared with users in links. Defaults toFAVA_PRIVATE.ALLOWED_USER_IDS: comma-separated list of Telegram user IDs who are allowed to use the bot (get yours from @RawDataBot)DEFAULT_CURRENCY: the default currency/commodity to use when none is provided by the user. Defaults to the file's operating currency or to EUR.SHORTCUTS_FILE: your shortcuts file location. Defaults to./shortcuts.jsonLOG_LEVEL: sets the level to display logs at. Defaults toinfo.
Shortcuts allow you to define custom dialogues that help users quickly create a transaction. This is most useful with frequent kinds of transactions, such as coffee, groceries, transportation, etc.
Shortcuts are loaded at startup from SHORTCUTS_FILE, a JSON file that conforms
to the schema. You can read
the example file for some ideas.
A shortcut is a JSON object with the following properties:
Copyright (C) 2021 Alberto Coscia
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
{ "name": "Coffee", // The name of this shortcut "icon": "☕", // An emoji to represent this shortcut "narration": "", // Can be a custom string or 'ask' to prompt the user to provide it "payee": "Coffee", // Can be a custom string, 'ask' or 'ignore' "script": [ // Questions that will be asked to the user { "var": "$cost", // Defines a variable $cost "type": "amount", // Can be 'amount' or 'account' "question": "💶 Amount" // The custom question that will be asked to the user }, { "var": "$account", "type": "account", "question": "💳 Payment method", "filter": "Assets:" // Only accounts that start with this value will be show to the user } ], "postings": [ // The postings that will constitute the transaction { "account": "Expenses:Food:Coffee", "amount": "$cost" }, { "account": "$account", "amount": "-$cost" } ] }