Log every Telegram send with a per-process id while tracing duplicate payment lines
Members are seeing payment receipts twice. This process has a durable announce-once per on-chain event and a send-level dedupe, and neither is firing, which says the second copy is not originating here. Rather than keep reasoning about it, log every send with a random per-process id so the log answers it directly: two ids means a second instance is posting, one id twice means the dedupe key differs. Temporary. Comes out once the source is confirmed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -174,6 +174,8 @@ function sendTelegram(text, topicId, replyMarkup) {
|
|||||||
// to the same chat twice within the window. Distinct events never collide — every line
|
// to the same chat twice within the window. Distinct events never collide — every line
|
||||||
// carries its own ids, amount and transaction hash.
|
// carries its own ids, amount and transaction hash.
|
||||||
const TG_RECENT = new Map();
|
const TG_RECENT = new Map();
|
||||||
|
// random per-process id: if two instances are posting, their sends carry different ids
|
||||||
|
const TG_INSTANCE = Math.random().toString(36).slice(2, 8);
|
||||||
const TG_DEDUPE_MS = 15 * 60 * 1000;
|
const TG_DEDUPE_MS = 15 * 60 * 1000;
|
||||||
function tgSeenRecently(chatId, topicId, text) {
|
function tgSeenRecently(chatId, topicId, text) {
|
||||||
const k = String(chatId) + '|' + String(topicId || '') + '|' + text;
|
const k = String(chatId) + '|' + String(topicId || '') + '|' + text;
|
||||||
@@ -191,6 +193,13 @@ function sendTelegramTo(chatId, text, topicId, replyMarkup, parseMode) {
|
|||||||
console.warn('telegram duplicate suppressed:', String(text).replace(/\s+/g, ' ').slice(0, 90));
|
console.warn('telegram duplicate suppressed:', String(text).replace(/\s+/g, ' ').slice(0, 90));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// TEMPORARY (2026-09-18): members are seeing payment lines twice. This process has a
|
||||||
|
// durable announce-once per on-chain event AND a send-level dedupe, and neither is firing,
|
||||||
|
// which means the second copy is not coming from here. Log every send with the instance id
|
||||||
|
// so "did WE send it twice, or is something else posting?" is answerable from the log
|
||||||
|
// instead of by deduction. Remove once the source is confirmed.
|
||||||
|
console.log('tg-send', TG_INSTANCE, 'chat=' + chatId, 'topic=' + (topicId || '-'),
|
||||||
|
JSON.stringify(String(text).replace(/\s+/g, ' ').slice(0, 70)));
|
||||||
// No link previews: payout/team-build posts carry Polygonscan links, and the
|
// No link previews: payout/team-build posts carry Polygonscan links, and the
|
||||||
// preview card tripled the height of every message in the group.
|
// preview card tripled the height of every message in the group.
|
||||||
const payload = { chat_id: chatId, text, disable_web_page_preview: true };
|
const payload = { chat_id: chatId, text, disable_web_page_preview: true };
|
||||||
|
|||||||
Reference in New Issue
Block a user