Кава, автобусний квиток, записник. Дрібні покупки легко забути, поки ви відкриєте таблицю. А якби для запису покупки вистачало одного повідомлення в Telegram, а для перевірки підсумку за місяць ще одного?
У цьому посібнику ми створимо Pocket Ledger, трекер витрат у Telegram із Google Sheets. Надішліть покупку, підтвердьте запропоновані дані та запитайте місячний підсумок. Таблиця зберігає рядки й виконує обчислення, а бот веде розмову. Ось готовий результат.

Той самий результат у таблиці. Кава за 4,50 EUR збільшує 7,70 EUR до 12,20 EUR, а 6,00 USD залишається окремо.
Знімки екрана показують реальну демонстрацію з вигаданими витратами. Ми зіставили збережений рядок із викликом Action в Inbox, а потім порівняли обидві відповіді Telegram зі значеннями, які повернув Google Sheets. На опублікованих знімках особисті ідентифікатори та облікові дані приховано.
Перший результат: одна збережена кава. Другий: підсумок, який можна перевірити в таблиці. Ви також дізнаєтеся, чому слово «збережено» у відповіді бота є лише половиною доказу.
Завантажте набір для налаштування Pocket Ledger, щоб отримати оформлену стартову книгу, аватар, промпт, налаштування Actions і аркуш перевірок. Імпортуйте книгу в таблицю, створену Quickchat AI, а потім виконайте кроки нижче. Усі приклади для копіювання використовують англійську мову та листопад 2026 року, щоб ви могли порівняти свої результати зі знімками екрана.
Що потрібно для створення трекера витрат у Telegram?
Потрібні Telegram, обліковий запис Google і обліковий запис Quickchat AI. Для налаштування використовуються панель керування та формула таблиці, тому окрему програму розміщувати не потрібно.
- Створіть обліковий запис Quickchat AI, пройдіть перевірку та створіть Agent з назвою
Pocket Ledger. - Підготуйте обліковий запис Google для нової таблиці. Почніть із вигаданих записів нижче.
- Для цієї вправи використайте нового Telegram-бота. Для перевірки доступу наприкінці знадобиться другий довірений обліковий запис Telegram.
План Free у Quickchat AI призначений для особистого некомерційного навчання й має обмежений обсяг використання. Розмови з AI та Simulation Testing витрачають кредити. Перед вибором плану для постійного використання перегляньте актуальні плани й ліміти.
Два напрямки, дві Actions. Збереження рядка не дає Agent змоги читати попередні підсумки.
Крок 1. Як підключити приватного Telegram-бота?
BotFather створює ідентичність вашого бота. Quickchat AI надає Agent, який відповідає на його повідомлення.
Відкрийте офіційного @BotFather, надішліть /newbot, назвіть бота Pocket Ledger і виберіть вільне ім’я користувача, яке закінчується на bot. За допомогою /setuserpic завантажте аватар із набору. Тримайте токен у таємниці: ви вставите його безпосередньо в Quickchat AI.

У Quickchat AI відкрийте External Apps → Telegram → Your own bot. Виберіть Connect to Telegram, вставте облікові дані в Bot Token і підтвердьте діалог. Увімкніть Enable your own bot та виберіть Save. Покрокова інструкція BotFather докладно пояснює ці екрани.
Підключений бот має те саме ім’я Pocket Ledger, яке ви побачите в Telegram.
Відкрийте посилання нового бота в Telegram, надішліть /start, а потім Hello у приватному чаті. /start надсилає вітальне повідомлення, а звичайне повідомлення створює розмову в Inbox і метадані відправника, потрібні в наступних кроках. Під час налаштування залишайте Actions із персональними даними неактивними.

Відкрийте цю розмову в Quickchat AI: Inbox → Details → Visitor. Знайдіть Telegram User Id і Telegram Chat Type (ключі метаданих: telegram_user_id і telegram_chat_type). Скопіюйте числовий ID користувача кнопкою, що з’являється при наведенні, і переконайтеся, що тип чату: private.
Візьміть ідентифікатор відправника з цього поля. Особисті ідентифікатори на знімку приховано. Використовуйте власне справжнє значення.
ID надходить із метаданих відправника Telegram. Ваше ім’я користувача, число, введене в повідомленні, та ID самого бота є різними значеннями. У наступних кроках ви обмежите обидві Actions за ID відправника.
Крок 2. Як підготувати таблицю Google?
Інтеграція Google Sheets створює таблицю та початкову Action. Використовуйте цей файл, щоб Action і дозвіл Google стосувалися одного ресурсу.
- Відкрийте Actions & MCPs → Add Action → Google Sheets і авторизуйте обліковий запис Google. Інструкція з підключення Google Sheets пояснює надання згоди та початкове налаштування.
- Одразу вимкніть початкову Action. Вона створюється активною. Збережіть назву
log_lead_to_google_sheet, оскільки під час повторного підключення її знаходять за цією назвою. Ми змінимо її призначення на збереження витрат. - Відкрийте створену таблицю та назвіть її
Pocket Ledger demo. У цьому новому демонстраційному файлі виберіть File → Import → Upload, укажітьpocket-ledger-starter.xlsxіз набору та виберіть Replace spreadsheet, а потім натисніть Import data. Так ви підготуєтеExpensesіSummaryу файлі, до якого має доступ Quickchat AI. Використовуйте цей варіант лише в новій демонстраційній таблиці. - Перевірте три початкові рядки нижче. У
Summaryпочаткові підсумки мають становити 7,70 EUR і 6,00 USD. Крок 6 пояснює формулу та підключає Action для читання.
Почніть із підключення Google Sheets. Авторизація створює таблицю, яку використовують обидві Actions.
Хочете створити аркуші самостійно? Перейменуйте початковий аркуш на Expenses. Для цих англомовних прикладів установіть File → Settings → Locale → United States. Задайте для A:D і F:H формат Plain text, а для E формат Number із двома десятковими знаками, потім вставте блок нижче в A1. Закріпіть рядок заголовків і розширте стовпці. Додайте Summary за кроком 6. Google також описує імпорт книги Excel в наявну таблицю.
Скопіювати три початкові витрати
date month item category amount currency note conversation_url
2026-11-01 2026-11 coffee food 4.50 EUR synthetic example
2026-11-02 2026-11 bus ticket transport 3.20 EUR synthetic example
2026-11-03 2026-11 notebook stationery 6.00 USD synthetic example
Три початкові витрати готові до четвертої. Суми в E є числами, а коди валют у F є окремими текстовими значеннями.
Стовпець conversation_url пов’язуватиме кожну нову витрату з її розмовою. Для трьох прикладів, введених вручну, залиште його порожнім. Дозвіл Google drive.file охоплює файли, створені застосунком або явно надані йому. Ця інструкція використовує таблицю, створену інтеграцією, і не надає доступ до всього Drive.
Крок 3. Як обмежити доступ до витрат власним чатом?
Установіть Run only when для кожної Action, що читає або змінює записник. Мають виконуватися обидві умови, тому лише вашого ID у груповому чаті недостатньо.
| Ключ метаданих | Порівняння | Значення |
|---|---|---|
telegram_user_id | equals | Ваш справжній числовий ID відправника з кроку 1 |
telegram_chat_type | equals | private |
- Відкрийте неактивну Action
log_lead_to_google_sheetі знайдіть Run only when. - Додайте обидві умови з таблиці. Використовуйте точні ключі метаданих і цифри вашого ID, без імені користувача та префікса
@. - Збережіть Action, залишивши її неактивною. Застосуйте ті самі умови до Action читання, коли створюватимете її в кроці 6.
Умови Action збереження в локальній демонстрації. Замініть вигаданий ID на свій справжній ID відправника й повторіть обидві умови для Action читання.
Обидві умови потрібні для обох Actions. Інший відправник або груповий чат мають не пройти перевірку ще до того, як HTTP-запит надійде до Google Sheets.
Це умови Actions, які перевіряє сервер. Фраза «відповідай лише мені» в промпті не перевіряє доступ. Також обмежте спільний доступ до таблиці та доступ до облікового запису Quickchat AI.
Крок 4. Як навчити бота зберігати підтверджену витрату?
Переналаштуйте початкову Action на додавання одного рядка в порядку стовпців таблиці. Установіть When to run → AI decides, щоб вона могла чекати підтвердження. Перш ніж увімкнути її, задайте Agent правило підтвердження.
Налаштуйте поля витрати
У розділі What to ask the user first замініть поля ліда цими параметрами. Збережіть назви параметрів точно як показано.
| Параметр | Формат | Обов’язковий | Опис для введення |
|---|---|---|---|
date | Text | Так | Дата витрати у форматі YYYY-MM-DD, підтверджена власником. Запитайте, якщо відсутня. |
month | Text | Так | YYYY-MM із підтвердженої дати. |
item | Text | Так | Коротка назва покупки. |
category | Text | Так | Проста категорія, узгоджена з власником, наприклад їжа або транспорт. |
amount | Decimal Number | Так | Додатна числова сума без символу валюти. |
currency | Text | Так | Підтверджений код валюти ISO, наприклад EUR або USD. Уточнюйте неоднозначні символи. |
note | Text | Ні | Необов’язкова примітка. Залиште порожньою, якщо її не надано. |
Збережіть справжній ID таблиці з наявного API Endpoint. Змініть діапазон на Expenses!A:H, залиште метод POST і задайте Query Params: valueInputOption=RAW та insertDataOption=INSERT_ROWS. Видаліть дубльовані параметри запиту, якщо вони вже є в URL.
Скопіювати зразок запиту додавання
POST https://sheets.googleapis.com/v4/spreadsheets/YOUR_CREATED_SHEET_ID/values/Expenses!A:H:append
Query Params:
valueInputOption = RAW
insertDataOption = INSERT_ROWS
Headers:
Authorization = Bearer {{google_sheets_access_token}}
Content-Type = application/json
YOUR_CREATED_SHEET_ID є пояснювальним заповнювачем. Збережіть справжній ID, уже наявний у початковій URL-адресі, а не вставляйте замість нього цей текст. У значенні Authorization виберіть наявний System Token Google Sheets, а в тілі запиту: вбудовану змінну URL розмови.
На вкладці Body введіть:
{"values":[["{{date}}","{{month}}","{{item}}","{{category}}","{{amount}}","{{currency}}","{{note}}","{{conversation_url}}"]]}
Локальні налаштування Action витрат. Тіло запиту визначає порядок клітинок, а формат параметра суми визначає її числовий тип.
Залиште лапки навколо {{amount}} у редакторі. Цей точний заповнювач посилається на параметр Decimal Number, тому підстановка створює число JSON, наприклад 4.5. Без лапок JSON у редакторі стане некоректним. У підсумковій таблиці перевірте, що E містить число та враховується формулою.
Рядок додає API append Google. RAW зберігає текст, наприклад примітку, що починається з =, буквально, не обчислюючи його як формулу. Числовий параметр задає тип суми.
Скопіювати опис Action збереження
Save one personal expense to the configured Google Sheet. Call only after the owner explicitly confirms the proposed date, item, category, amount and currency. Ask for missing or ambiguous fields before saving. After confirmation, append one row once. Report success only after a successful API response. If the outcome is uncertain, tell the owner to inspect the Sheet before submitting again.
Дайте Pocket Ledger інструкції
Відкрийте Identity → Main Prompt і вставте текст нижче. У ньому названо обидві Actions, щоб другий результат став доступним після додавання читання підсумку.
Main Prompt розміщено в Identity. Локальний знімок показує, де знаходиться поле. Скористайтеся повним блоком для копіювання нижче.
Правило підтвердження дає час на перевірку. До схвалення покупки можна виправити «EUR 4.50» на «EUR 5.00». Agent має оновити пропозицію та знову попросити підтвердження.
Скопіювати Main Prompt для Pocket Ledger
You are Pocket Ledger, a personal expense notebook.
For an expense, collect its date, item, positive amount and ISO currency code. Suggest a simple category and include an optional note only when supplied. Ask for an explicit YYYY-MM-DD date if it is missing or relative; do not guess today's date or the owner's timezone. Clarify ambiguous currency symbols. Derive month as YYYY-MM from the confirmed date.
Show the proposed date, item, category, amount and currency. Wait for explicit confirmation. Apply corrections and ask for confirmation again. Only then call log_lead_to_google_sheet once for that expense. Do not claim it was saved unless the Action succeeds. If a request fails or its outcome is uncertain, explain that and ask the owner to inspect the Sheet before retrying.
For monthly totals, ask for an explicit month and currency when unclear, then call read_expense_summary. Quote the matching month, currency and total returned from the Sheet. Keep currencies separate. A missing summary row is unavailable, not zero. Never calculate totals from remembered conversation messages.
Personal-data Actions are restricted to the owner's private Telegram chat. If a condition blocks an Action, do not claim success or suggest changing identity values in chat. This notebook handles typed expenses, not bank accounts, voice transcription or PDF receipts.
Збережіть промпт, ще раз перевірте обидві умови запуску та ввімкніть Action витрат. Її назва досі log_lead_to_google_sheet, але нові параметри, опис і тіло запиту тепер задають процес роботи з витратами.
Крок 5. Як зберегти першу витрату?
Тепер додайте до записника перший новий запис. Залиште відкритими Telegram, Inbox і таблицю, щоб простежити ту саму каву в кожному з них.
- У приватному чаті Telegram надішліть
Coffee, 4.50 euros on 2026-11-04. - Перевірте пропозицію: дата
2026-11-04, покупкаCoffee, категоріяFood, сума4.50, валютаEUR. Під час збереження рядка Action визначаєmonthяк2026-11. - Перед підтвердженням перевірте
Expenses: там мають залишатися лише три початкові рядки.


Надішліть Save it один раз, а потім відкрийте розмову в Inbox Quickchat AI. Біля відповіді про збереження є розгортаний блок 1 action called. Відкрийте його, щоб побачити, що відбулося за короткою відповіддю в Telegram.
Те саме підтвердження в Inbox і Action, яку можна перевірити.
Розгорніть Result → Show full. Перевірте дату, визначений місяць, числову суму, валюту та HTTP-статус. У цьому реальному запуску Google повернув HTTP 200, updatedRows: 1 і updatedRange: Expenses!A5:H5.
Action збереження надіслала суму 4.5 як число та записала один рядок. Приватні ідентифікатори приховано, повернений діапазон і результат залишаються видимими.
Насамкінець відкрийте Expenses. Рядок 5 має містити ту саму каву, 2026-11 у стовпці місяця, 4.50 у сумі та EUR у валюті. Останній стовпець посилається на розмову в Inbox, тож можна простежити запис до повідомлення, з якого він виник.
Четверта витрата надійшла через Telegram. Приватне посилання на Inbox приховано на опублікованому зображенні.
Тепер у вас є корисна щоденна звичка: надіслати, підтвердити, перевірити. Далі надайте боту надійне джерело для читання, коли запитаєте, куди пішли гроші за місяць.
Крок 6. Як запитати місячний підсумок?
Нехай Google Sheets обчислює підсумок, а Action читання отримує його. Коли обчислення залишаються в таблиці, відповідь можна перевірити навіть після завершення розмови.
Додайте вкладку Summary
Якщо ви імпортували стартову книгу, Summary та його формули вже готові. Початкові значення становлять 7,70 EUR і 6,00 USD. Збереження кави змінює лише рядок EUR. Якщо створюєте таблицю вручну, виконайте кроки нижче.
Початкова точка: дві валюти, два незалежні підсумки.
- Створіть вкладку
Summary. Задайте стовпцям A:B формат Plain text, потім введітьmonth,currency,totalу A1:C1. - Введіть
2026-11іEURу A2:B2, потім2026-11іUSDу A3:B3. - Введіть цю формулу в C2 та заповніть нею C3. Задайте C числовий формат із двома десятковими знаками.
=SUMIFS(Expenses!$E$2:$E$501,Expenses!$B$2:$B$501,A2,Expenses!$F$2:$F$501,B2)
Функція SUMIFS додає суми, місяць і валюта яких відповідають рядку підсумку. Якщо локаль таблиці вимагає крапок із комою між аргументами, замініть коми формули крапками з комою. Числа в JSON-запиті все одно використовують десяткову крапку.
Виберіть C2, щоб побачити формулу суми 12,20 EUR. Рядок USD залишається 6,00.
Початкові 7,70 EUR плюс нова кава за 4,50 EUR дають 12,20 EUR. Блокнот за 6,00 USD належить до окремого підсумку.
Стартова формула охоплює рядки від 2 до 501. У зафіксованому запуску після вставлення нового рядка всі три діапазони закінчуються на 502. Sheets може коригувати посилання під час вставлення. Перевіряйте, щоб усі три діапазони Expenses залишалися узгодженими, і розширюйте їх разом, перш ніж записи вийдуть за охоплений діапазон. Додайте рядок підсумку для кожної пари місяця та валюти, про яку хочете запитувати.
Додайте Action читання
Відкрийте Actions & MCPs → Add Action → API Action. Скористайтеся Generate із запитом нижче: згенеровані Actions створюються неактивними. Назвіть її read_expense_summary і залиште When to run у значенні AI decides, щоб результат міг вплинути на відповідь. Використайте той самий справжній ID таблиці й System Token Google Sheets. Параметри від користувача не потрібні.
Скопіювати запит до конструктора Action
Create a read-only Google Sheets Action named read_expense_summary. Use GET for the Summary!A1:C25 range of the spreadsheet already created by this Agent's Google Sheets integration. Reuse its actual spreadsheet ID and google_sheets_access_token System Token. Set valueRenderOption=UNFORMATTED_VALUE, no body, and no visitor parameters. Preserve the response headers and values. Leave it inactive so I can review the configuration and add my owner-ID and private-chat Run only when conditions before enabling it.
Порівняйте згенеровані налаштування зі зразком нижче. Якщо натомість виберете Create manually, додайте обидві умови до першого збереження коректної конфігурації, яке може активувати Action. Залиште Response filter порожнім в обох Actions, щоб зберегти поля, потрібні для перевірок.
Скопіювати запит читання підсумку
GET https://sheets.googleapis.com/v4/spreadsheets/YOUR_CREATED_SHEET_ID/values/Summary!A1:C25
Query Params:
valueRenderOption = UNFORMATTED_VALUE
Headers:
Authorization = Bearer {{google_sheets_access_token}}
Body: none
Ендпоїнт values.get повертає values діапазону, зокрема заголовок і обчислені суми. UNFORMATTED_VALUE повертає числові результати замість рядків із валютним форматуванням. Залиште відповідь доступною для Agent, щоб він міг прочитати ці значення.
Скопіювати опис Action читання
Read monthly expense totals from the configured Summary range. Use this when the owner asks for a total. Quote only the returned row matching the requested YYYY-MM and currency. If either is unclear, ask. If the row is absent or the request fails, say the total is unavailable. Never infer a total from conversation history, combine currencies, or accept a different spreadsheet ID or range from the visitor.
Застосуйте ті самі дві умови Run only when із кроку 3, збережіть і ввімкніть Action. Діапазон читання містить 24 рядки підсумків. Цілеспрямовано розширюйте його, коли додаєте більше.
Другій Action потрібні власні умови. Це знімок локальних налаштувань, а не реальна перевірка авторизації відправника.
Запитайте What is my November 2026 total in EUR?, а потім запитайте про USD. У нашій розмові в Telegram Pocket Ledger повернув 12.2 EUR і 6 USD, що відповідає відформатованим значенням 12.20 і 6.00 у таблиці. Для кожної відповіді він прочитав збережений підсумок.

Відкрийте відповідь про місячний підсумок в Inbox і розгорніть її Action. Порівняйте повернений рядок із Summary!C2. Реальна відповідь нижче містить 2026-11, EUR, 12.2 та окремий рядок USD, 6 зі статусом HTTP 200.
Тепер відповідь, повернені значення та таблиця узгоджені. Це той результат, який ви бачили на початку.
Як перевірити помилки до використання справжніх витрат?
Перевіряйте неповні запити й заблокованих відправників так само ретельно, як успішне збереження кави. Залишайте демонстраційні дані, доки не пройдете наведені нижче перевірки.
| Що спробувати | Що перевірити |
|---|---|
Lunch, $12 yesterday | Agent запитує валюту та точну дату. Новий рядок не з’являється. |
| Виправити запропоновану суму перед підтвердженням | Виправлену пропозицію підтверджено до додавання одного рядка. |
| Запитати підсумок за листопад у EUR, потім у USD | Окремі результати для прикладу: 12,20 EUR і 6,00 USD. |
| Запитати грудень 2026 року без рядка підсумку за грудень | Agent повідомляє, що підсумок недоступний, замість вигаданого нуля. |
| Другий відправник запитує підсумок і пробує зберегти витрату | Обидві Actions відхилено, персональні значення не розкриваються. |
| Власник робить ті самі запити в групі | Обидві Actions відхилено, оскільки чат не приватний. |
| Збереження завершується помилкою або тайм-аутом | Відповідь повідомляє про помилку або невизначеність. Перевірте таблицю перед повторною спробою. |
Для повторюваних мовних тестів відкрийте Testing → Create Dataset → Paste messages і використайте повідомлення та критерії оцінювання з набору. Окремо проведіть повну розмову для послідовності підтвердження. Метадані Preview або Simulation є тестовими даними й не доводять, що справжній другий відправник Telegram заблокований.
Локальний набір даних підготовлено для тестування. Його наявність не означає завершеного запуску Simulation і не доводить запис до Google Sheets.
Якщо поведінка неправильна, змініть одну відповідну інструкцію, повторіть ті самі вхідні дані та знову перевірте виклик і таблицю. Наприклад, передчасне додавання потребує уважнішого перегляду формулювання підтвердження в Action збереження. Підтвердження є інструкцією, а не гарантією унікальності в базі даних. Після тайм-ауту важливіше перевірити таблицю, ніж знову натиснути «надіслати».
Коли весь шлях працюватиме, видаліть вигадані витрати, залиште заголовки й формули та додайте рядки підсумків для місяців і валют, які справді використовуєте. Першу реальну покупку можна записати так само, як каву.
Чи може AI-асистент допомогти налаштувати Pocket Ledger?
Підключений асистент для керування обліковим записом може допомогти підготувати Agent і перевірити налаштування Actions. Скористайтеся Manage with AI через інтеграцію Quickchat AI для ChatGPT або інтеграцію для Claude. Надайте йому набір налаштувань і цей запит:
Help me configure Pocket Ledger from this setup kit. Inspect the available Quickchat AI tools first. Prepare the Main Prompt and the two HTTP Actions using the exact field names, numeric amount type and fixed ranges. Keep log_lead_to_google_sheet as the starter name. Ask me to complete Google OAuth and Telegram Bot Token setup in the dashboard. Apply both owner/private run conditions before enabling either Action. Do not run credit-consuming tests or append expenses until I ask. Report any setting your tools cannot configure so I can complete it in the dashboard.
Власник надає згоду Google та підключає Telegram. Перевірте налаштування й виконайте ті самі перевірки незалежно від того, хто їх увів.
Поширені запитання
Як відстежувати витрати в Telegram за допомогою Google Sheets?
Підключіть Telegram-бота до Quickchat AI Agent і авторизуйте Google Sheets. Налаштуйте одну Action для додавання витрати після підтвердження, а іншу для читання місячного підсумку, обчисленого формулою. Обмежте обидві Actions своїм ID користувача Telegram і приватним чатом.
Чи може бот сказати, скільки я витратив цього місяця?
Так, якщо для запитаного місяця й валюти є рядок у налаштованому діапазоні Summary. Google Sheets обчислює підсумок за допомогою SUMIFS, а Action читання отримує його. Action лише для додавання не може отримувати підсумки, а відсутній рядок підсумку не означає нуль.
Чи може хтось інший прочитати мої витрати через Telegram-бота?
Обидві Actions із персональними даними мають вимагати ваш перевірений telegram_user_id і telegram_chat_type зі значенням private. Ці умови блокують виклики від інших відправників і з груп. Перевірте обидва випадки, перш ніж додавати персональні дані, та також обмежте доступ до таблиці й облікового запису Quickchat AI.
Чи безкоштовний цей трекер витрат у Telegram?
Створення Telegram-бота безкоштовне. План Free у Quickchat AI підтримує особисте некомерційне навчання з обмеженою кількістю AI-кредитів. Відповіді AI та Simulation Testing витрачають кредити, тому подальше використання залежить від доступного залишку та плану.
Чи потрібні Apps Script, Python або сервер автоматизації?
Ця інструкція використовує Quickchat AI Actions і формулу Google Sheets. Ви вставляєте надані налаштування запиту, тіло JSON і промпт у панель керування. Розгортати Apps Script, Python-бота або сервер автоматизації не потрібно.
Чи можна використати наявну таблицю витрат?
Ця інструкція використовує таблицю, створену інтеграцією Google Sheets у Quickchat AI. Її дозвіл drive.file не дає необмеженого доступу до Drive. Не замінюйте ID таблиці на довільний наявний файл, припускаючи, що він доступний.
Чи може бот читати фотографії чеків або голосові повідомлення?
Ця інструкція охоплює витрати, введені текстом. Перш ніж покладатися на розпізнавання чеків, потрібна окрема перевірка передавання зображень із Telegram і підтвердження. Розпізнавання голосу та обробка PDF-чеків не входять до цього налаштування.
Як обробляються різні валюти та дублікати записів?
Кожна валюта має окремий місячний підсумок, конвертація валют не виконується. Підтвердження зменшує випадкові записи, але не забезпечує атомарного захисту від дублікатів. Якщо збереження перевищило час очікування, перевірте таблицю, перш ніж надсилати його знову.