






















@@ -34,6 +34,7 @@ import {
3434resolveSessionStoreEntry,
3535updateSessionStore,
3636} from "openclaw/plugin-sdk/session-store-runtime";
37+import { expandTelegramAllowFromWithAccessGroups } from "./access-groups.js";
3738import { resolveTelegramAccount, resolveTelegramMediaRuntimeOptions } from "./accounts.js";
3839import { withTelegramApiErrorLogging } from "./api-logging.js";
3940import {
@@ -709,14 +710,17 @@ export const registerTelegramHandlers = ({
709710chatId: number;
710711isGroup: boolean;
711712isForum: boolean;
713+senderId?: string;
712714messageThreadId?: number;
713715groupAllowContext?: TelegramGroupAllowContext;
714716}): Promise<TelegramEventAuthorizationContext> => {
715717const groupAllowContext =
716718params.groupAllowContext ??
717719(await resolveTelegramGroupAllowFromContext({
718720chatId: params.chatId,
721+ cfg,
719722 accountId,
723+senderId: params.senderId,
720724isGroup: params.isGroup,
721725isForum: params.isForum,
722726messageThreadId: params.messageThreadId,
@@ -734,15 +738,15 @@ export const registerTelegramHandlers = ({
734738return { dmPolicy: effectiveDmPolicy, ...groupAllowContext };
735739};
736740737-const authorizeTelegramEventSender = (params: {
741+const authorizeTelegramEventSender = async (params: {
738742chatId: number;
739743chatTitle?: string;
740744isGroup: boolean;
741745senderId: string;
742746senderUsername: string;
743747mode: TelegramEventAuthorizationMode;
744748context: TelegramEventAuthorizationContext;
745-}): TelegramEventAuthorizationResult => {
749+}): Promise<TelegramEventAuthorizationResult> => {
746750const { chatId, chatTitle, isGroup, senderId, senderUsername, mode, context } = params;
747751const {
748752 dmPolicy,
@@ -787,8 +791,14 @@ export const registerTelegramHandlers = ({
787791}
788792// For DMs, prefer per-DM/topic allowFrom (groupAllowOverride) over account-level allowFrom.
789793const dmAllowFrom = groupAllowOverride ?? allowFrom;
790-const effectiveDmAllow = normalizeDmAllowFromWithStore({
794+const expandedDmAllowFrom = await expandTelegramAllowFromWithAccessGroups({
795+ cfg,
791796allowFrom: dmAllowFrom,
797+ accountId,
798+ senderId,
799+});
800+const effectiveDmAllow = normalizeDmAllowFromWithStore({
801+allowFrom: expandedDmAllowFrom,
792802 storeAllowFrom,
793803 dmPolicy,
794804});
@@ -917,8 +927,9 @@ export const registerTelegramHandlers = ({
917927 chatId,
918928 isGroup,
919929 isForum,
930+ senderId,
920931});
921-const senderAuthorization = authorizeTelegramEventSender({
932+const senderAuthorization = await authorizeTelegramEventSender({
922933 chatId,
923934chatTitle: reaction.chat.title,
924935 isGroup,
@@ -1346,10 +1357,13 @@ export const registerTelegramHandlers = ({
13461357isForum: callbackMessage.chat.is_forum,
13471358 getChat,
13481359});
1360+const senderId = callback.from?.id ? String(callback.from.id) : "";
1361+const senderUsername = callback.from?.username ?? "";
13491362const eventAuthContext = await resolveTelegramEventAuthorizationContext({
13501363 chatId,
13511364 isGroup,
13521365 isForum,
1366+ senderId,
13531367 messageThreadId,
13541368});
13551369const { resolvedThreadId, dmThreadId, storeAllowFrom, groupConfig } = eventAuthContext;
@@ -1360,13 +1374,11 @@ export const registerTelegramHandlers = ({
13601374);
13611375return;
13621376}
1363-const senderId = callback.from?.id ? String(callback.from.id) : "";
1364-const senderUsername = callback.from?.username ?? "";
13651377const authorizationMode: TelegramEventAuthorizationMode =
13661378!isGroup || (!execApprovalButtonsEnabled && inlineButtonsScope === "allowlist")
13671379 ? "callback-allowlist"
13681380 : "callback-scope";
1369-const senderAuthorization = authorizeTelegramEventSender({
1381+const senderAuthorization = await authorizeTelegramEventSender({
13701382 chatId,
13711383chatTitle: callbackMessage.chat.title,
13721384 isGroup,
@@ -1888,6 +1900,7 @@ export const registerTelegramHandlers = ({
18881900chatId: event.chatId,
18891901isGroup: event.isGroup,
18901902isForum: event.isForum,
1903+senderId: event.senderId,
18911904messageThreadId: event.messageThreadId,
18921905});
18931906const {
@@ -1903,8 +1916,14 @@ export const registerTelegramHandlers = ({
19031916} = eventAuthContext;
19041917// For DMs, prefer per-DM/topic allowFrom (groupAllowOverride) over account-level allowFrom
19051918const dmAllowFrom = groupAllowOverride ?? allowFrom;
1906-const effectiveDmAllow = normalizeDmAllowFromWithStore({
1919+const expandedDmAllowFrom = await expandTelegramAllowFromWithAccessGroups({
1920+ cfg,
19071921allowFrom: dmAllowFrom,
1922+ accountId,
1923+senderId: event.senderId,
1924+});
1925+const effectiveDmAllow = normalizeDmAllowFromWithStore({
1926+allowFrom: expandedDmAllowFrom,
19081927 storeAllowFrom,
19091928 dmPolicy,
19101929});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。