Video sweep alert: admin channels only

The alert names a member's campaign and their email address. It fell back to the
shared payments topic when no admin chat was configured, which would have put a
member's broken ad in front of the whole team. Admin chat or email, or it logs
and stays quiet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
martbost
2026-09-24 13:58:17 -05:00
parent 2854e2a7ba
commit 170d9963f7
+3 -1
View File
@@ -485,9 +485,11 @@ async function boot() {
videosweep.init({ dataDir: DATA_DIR, fs, path, db, videoCheck, videosweep.init({ dataDir: DATA_DIR, fs, path, db, videoCheck,
alert: async text => { alert: async text => {
const sc = siteConfig(); const sc = siteConfig();
// Admin channels ONLY. This names a member's campaign and their email, so it must never
// fall back to the shared payments topic where the whole team would read it.
if (sc.telegramBotToken && sc.telegramAdminChatId) return telegramSend(sc.telegramAdminChatId, text); if (sc.telegramBotToken && sc.telegramAdminChatId) return telegramSend(sc.telegramAdminChatId, text);
if (sc.telegramBotToken && sc.telegramEchoChatId) return telegramSend(sc.telegramEchoChatId, text, sc.telegramEchoTopicId);
if (ADMIN_EMAIL && mailer.hasKey()) return mailer.send(ADMIN_EMAIL, 'InstantAdPay: broken video sources', text.replace(/<[^>]+>/g, '')); if (ADMIN_EMAIL && mailer.hasKey()) return mailer.send(ADMIN_EMAIL, 'InstantAdPay: broken video sources', text.replace(/<[^>]+>/g, ''));
console.log('videosweep: no admin channel configured, alert not sent');
} }); } });
videosweep.start(); videosweep.start();
toolkit.init({ dataDir: DATA_DIR, ads, accounts, siteConfig, coach, messages, promos, videomaker, chain }); toolkit.init({ dataDir: DATA_DIR, ads, accounts, siteConfig, coach, messages, promos, videomaker, chain });