diff --git a/package.json b/package.json index 5cc2772..8a3b0e2 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@grammyjs/parse-mode": "^1.11.1", "@grammyjs/runner": "^2.0.3", "@influxdata/influxdb-client": "^1.35.0", - "@polinetwork/backend": "^0.15.5", + "@polinetwork/backend": "^0.15.7", "@t3-oss/env-core": "^0.13.4", "@trpc/client": "^11.5.1", "@types/ssdeep.js": "^0.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2609b1..2ea3d08 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: ^1.35.0 version: 1.35.0 '@polinetwork/backend': - specifier: ^0.15.5 - version: 0.15.5 + specifier: ^0.15.7 + version: 0.15.7 '@t3-oss/env-core': specifier: ^0.13.4 version: 0.13.4(arktype@2.1.20)(typescript@5.7.3)(zod@4.1.11) @@ -431,8 +431,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@polinetwork/backend@0.15.5': - resolution: {integrity: sha512-+60RfYsbPUnqpjbCeAMmhjdnBmKuSBQXEGF+YLQOAt7oRWBeW5woN8fA5dj+Ec1fEQjXOxlvDY6dOPiwyzSGMA==} + '@polinetwork/backend@0.15.7': + resolution: {integrity: sha512-8RYjl8u8PCvFxf8FrApPDI1Kv5G3IS88Fr5Vo+nybwftq7MqNJ/Rv8LKZk+AlvwD1waBBe5bm5RjwiP2A19TgA==} '@redis/bloom@1.2.0': resolution: {integrity: sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==} @@ -1793,7 +1793,7 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@polinetwork/backend@0.15.5': {} + '@polinetwork/backend@0.15.7': {} '@redis/bloom@1.2.0(@redis/client@1.6.0)': dependencies: diff --git a/src/middlewares/bot-membership-handler.ts b/src/middlewares/bot-membership-handler.ts index b6ca4c9..59ad4cf 100644 --- a/src/middlewares/bot-membership-handler.ts +++ b/src/middlewares/bot-membership-handler.ts @@ -1,5 +1,6 @@ import type { Filter } from "grammy" import type { Chat } from "grammy/types" +import { api } from "@/backend" import { GroupManagement } from "@/lib/group-management" import { RedisFallbackAdapter } from "@/lib/redis-fallback-adapter" import { logger } from "@/logger" @@ -47,9 +48,14 @@ export class BotMembershipHandler> ext super("bot_membership_handler") // TEMP: this is for initial migration from previous bot - this.composer.filter(predicate, async (ctx, next) => { + this.composer.fork().filter(predicate, async (ctx, next) => { if (ctx.chat.type === "private") return next() - if (await this.TEMP_redis.has(ctx.chat.id.toString())) return next() + + const redisCheck = await this.TEMP_redis.has(ctx.chat.id.toString()) + if (redisCheck) { + const backendGroup = await api.tg.groups.getById.query({ telegramId: ctx.chat.id }).catch(() => null) + if (backendGroup !== null) return next() + } const me = await ctx.getChatMember(ctx.me.id).catch(() => ({ status: "undefined" })) if (me.status !== "administrator") { diff --git a/src/middlewares/message-link.ts b/src/middlewares/message-link.ts index 2413af5..c676d2d 100644 --- a/src/middlewares/message-link.ts +++ b/src/middlewares/message-link.ts @@ -99,8 +99,9 @@ async function makeResponse( ), } } - const inviteLink = - chat.invite_link ?? (await api.tg.groups.getById.query({ telegramId: chat.id }))[0].link ?? undefined + + const dbGroup = await api.tg.groups.getById.query({ telegramId: chat.id }) + const inviteLink = chat.invite_link ?? dbGroup?.link ?? undefined const message = await MessageUserStorage.getInstance().get(chatId, messageId) if (message === null) {