Skip to content

Commit 6e360d9

Browse files
authored
Merge branch 'master' into feat/instrument-sentry
2 parents ea2dc77 + f2b1795 commit 6e360d9

File tree

1 file changed

+35
-13
lines changed

1 file changed

+35
-13
lines changed

src/presentation/TelegramPresenter.ts

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,43 @@ export class TelegramPresenter implements IPresenter {
2828
.subscribe(async (info) => {
2929
if (info.length < 1 || info[0] === undefined) return;
3030

31-
const message = info.map((i) => i.payload).join(`\n${"-".repeat(20)}\n\n`);
32-
try {
33-
await this._bot.api.sendMessage(info[0]!.targetId.toString(), message, {
34-
parse_mode: "HTML",
35-
link_preview_options: {
36-
is_disabled: true
37-
}
38-
});
39-
} catch (err: unknown) {
40-
Sentry.captureException(err);
41-
if (err instanceof Error) {
42-
this._logger.error(err.message);
31+
// Telegram limits each message box to have 4096 UTF-8 characters
32+
const messages: string[] = [];
33+
let currentMessage = "";
34+
// This is actually the safe length of `\n${"-".repeat(20)}\n\n`
35+
const MAGIC_DELIMITER_NUMBER = 26;
36+
for (const item of info) {
37+
if (currentMessage === "") {
38+
currentMessage = item.payload;
39+
continue;
40+
}
41+
42+
if (currentMessage.length + item.payload.length + MAGIC_DELIMITER_NUMBER >= 4096) {
43+
messages.push(currentMessage);
44+
currentMessage = item.payload;
45+
continue;
4346
}
4447

45-
this._logger.error("Unknown error: " + err);
48+
currentMessage += `\n${"-".repeat(20)}\n\n`;
49+
currentMessage += item.payload;
50+
}
51+
52+
for (const message of messages) {
53+
try {
54+
await this._bot.api.sendMessage(info[0]!.targetId.toString(), message, {
55+
parse_mode: "HTML",
56+
link_preview_options: {
57+
is_disabled: true
58+
}
59+
});
60+
} catch (err: unknown) {
61+
Sentry.captureException(err);
62+
if (err instanceof Error) {
63+
this._logger.error(err.message);
64+
}
65+
66+
this._logger.error("Unknown error: " + err);
67+
}
4668
}
4769
});
4870
}

0 commit comments

Comments
 (0)