refactor(telegram): share group allowFrom resolution

This commit is contained in:
Peter Steinberger
2026-02-16 02:26:51 +00:00
parent b88f377623
commit 35c5d2be5c
3 changed files with 82 additions and 27 deletions

View File

@@ -29,6 +29,7 @@ import {
buildTelegramGroupPeerId,
buildTelegramParentPeer,
resolveTelegramForumThreadId,
resolveTelegramGroupAllowFromContext,
} from "./bot/helpers.js";
import { migrateTelegramGroupConfig } from "./group-migration.js";
import { resolveTelegramInlineButtonsScope } from "./inline-buttons.js";
@@ -327,17 +328,15 @@ export const registerTelegramHandlers = ({
const messageThreadId = callbackMessage.message_thread_id;
const isForum = callbackMessage.chat.is_forum === true;
const resolvedThreadId = resolveTelegramForumThreadId({
const groupAllowContext = await resolveTelegramGroupAllowFromContext({
chatId,
isForum,
messageThreadId,
groupAllowFrom,
resolveTelegramGroupConfig,
});
const { groupConfig, topicConfig } = resolveTelegramGroupConfig(chatId, resolvedThreadId);
const storeAllowFrom = await readChannelAllowFromStore("telegram").catch(() => []);
const groupAllowOverride = firstDefined(topicConfig?.allowFrom, groupConfig?.allowFrom);
const effectiveGroupAllow = normalizeAllowFromWithStore({
allowFrom: groupAllowOverride ?? groupAllowFrom,
storeAllowFrom,
});
const { resolvedThreadId, storeAllowFrom, groupConfig, topicConfig, effectiveGroupAllow } =
groupAllowContext;
const effectiveDmAllow = normalizeAllowFromWithStore({
allowFrom: telegramCfg.allowFrom,
storeAllowFrom,
@@ -357,7 +356,7 @@ export const registerTelegramHandlers = ({
);
return;
}
if (typeof groupAllowOverride !== "undefined") {
if (groupAllowContext.hasGroupAllowOverride) {
const allowed =
senderId &&
isSenderAllowed({
@@ -698,18 +697,21 @@ export const registerTelegramHandlers = ({
const isGroup = msg.chat.type === "group" || msg.chat.type === "supergroup";
const messageThreadId = msg.message_thread_id;
const isForum = msg.chat.is_forum === true;
const resolvedThreadId = resolveTelegramForumThreadId({
const groupAllowContext = await resolveTelegramGroupAllowFromContext({
chatId,
isForum,
messageThreadId,
groupAllowFrom,
resolveTelegramGroupConfig,
});
const storeAllowFrom = await readChannelAllowFromStore("telegram").catch(() => []);
const { groupConfig, topicConfig } = resolveTelegramGroupConfig(chatId, resolvedThreadId);
const groupAllowOverride = firstDefined(topicConfig?.allowFrom, groupConfig?.allowFrom);
const effectiveGroupAllow = normalizeAllowFromWithStore({
allowFrom: groupAllowOverride ?? groupAllowFrom,
const {
resolvedThreadId,
storeAllowFrom,
});
const hasGroupAllowOverride = typeof groupAllowOverride !== "undefined";
groupConfig,
topicConfig,
effectiveGroupAllow,
hasGroupAllowOverride,
} = groupAllowContext;
if (isGroup) {
if (groupConfig?.enabled === false) {