a09ee4a5fb64924007fa65227b9268c0910bba40
Проблема: scheduledPostsRunner (статьи) и zeroNotesRunner (заметки Зеро)
держали каждый свою копию sendPhoto/sendMessage. Логика разъезжалась —
у статей фото работало через multipart, у заметок ломалось (URL-режим →
'wrong type of web page content'). Чинили в одном месте — в другом
оставалось сломано.
Решение: src/services/tgSend.js — единый источник правды:
- resolveLocalPhoto: /uploads/* → локальный файл (multipart), внешний → URL
- tgSend({botToken, chatId, text, photoUrl, replyMarkup, parseMode}):
фото+caption<=1024 → sendPhoto (multipart для локальных, URL для внешних)
иначе → sendMessage (текст<=4096)
- extractTgError: единый разбор ошибок Telegram
zeroNotesRunner и scheduledPostsRunner.publishToTelegram теперь оба зовут
tgSend. Кнопка-на-сайт у статей и reply_markup у заметок сохранены.
parseMode: статьи — Markdown, заметки Зеро — без разметки (текст от первого
лица с произвольными символами не должен падать на parse entities).
VK/MAX публикация не затронута (там свой resolveLocalPhoto/FormData).
zeropost-engine
ZeroPost - zeropost-engine
Description
Languages
JavaScript
100%