mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-10 13:44:58 +00:00
telegram: route dm sessions by sender id
This commit is contained in:
committed by
Peter Steinberger
parent
2c39731846
commit
317075ef3d
@@ -5,6 +5,7 @@ import {
|
||||
describeReplyTarget,
|
||||
expandTextLinks,
|
||||
normalizeForwardedContext,
|
||||
resolveTelegramDirectPeerId,
|
||||
resolveTelegramForumThreadId,
|
||||
} from "./helpers.js";
|
||||
|
||||
@@ -53,6 +54,20 @@ describe("buildTypingThreadParams", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("resolveTelegramDirectPeerId", () => {
|
||||
it("prefers sender id when available", () => {
|
||||
expect(resolveTelegramDirectPeerId({ chatId: 777777777, senderId: 123456789 })).toBe(
|
||||
"123456789",
|
||||
);
|
||||
});
|
||||
|
||||
it("falls back to chat id when sender id is missing", () => {
|
||||
expect(resolveTelegramDirectPeerId({ chatId: 777777777, senderId: undefined })).toBe(
|
||||
"777777777",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("thread id normalization", () => {
|
||||
it.each([
|
||||
{
|
||||
|
||||
@@ -175,6 +175,24 @@ export function buildTelegramGroupPeerId(chatId: number | string, messageThreadI
|
||||
return messageThreadId != null ? `${chatId}:topic:${messageThreadId}` : String(chatId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve the direct-message peer identifier for Telegram routing/session keys.
|
||||
*
|
||||
* In some Telegram DM deliveries (for example certain business/chat bridge flows),
|
||||
* `chat.id` can differ from the actual sender user id. Prefer sender id when present
|
||||
* so per-peer DM scopes isolate users correctly.
|
||||
*/
|
||||
export function resolveTelegramDirectPeerId(params: {
|
||||
chatId: number | string;
|
||||
senderId?: number | string | null;
|
||||
}) {
|
||||
const senderId = params.senderId != null ? String(params.senderId).trim() : "";
|
||||
if (senderId) {
|
||||
return senderId;
|
||||
}
|
||||
return String(params.chatId);
|
||||
}
|
||||
|
||||
export function buildTelegramGroupFrom(chatId: number | string, messageThreadId?: number) {
|
||||
return `telegram:group:${buildTelegramGroupPeerId(chatId, messageThreadId)}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user