@llblab/pi-telegram 0.18.4 → 0.18.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/updates.ts CHANGED
@@ -9,6 +9,7 @@ import {
9
9
  createTelegramThreadTarget,
10
10
  type TelegramTarget,
11
11
  } from "./target.ts";
12
+ import type { TelegramMessageOwnershipStore } from "./ownership.ts";
12
13
  import {
13
14
  createTelegramUserPairingRuntime,
14
15
  getTelegramAuthorizationState,
@@ -538,6 +539,14 @@ export function buildTelegramUpdateExecutionPlanFromUpdate<
538
539
 
539
540
  // --- Runtime ---
540
541
 
542
+ export type TelegramMessageOwnershipRecorderInput = Parameters<
543
+ TelegramMessageOwnershipStore["record"]
544
+ >[0];
545
+
546
+ export type TelegramMessageOwnershipRecorder = (
547
+ input: TelegramMessageOwnershipRecorderInput,
548
+ ) => void;
549
+
541
550
  export interface TelegramUpdateRuntimeDeps<
542
551
  TContext = unknown,
543
552
  TReactionUpdate extends TelegramMessageReactionUpdated =
@@ -549,6 +558,7 @@ export interface TelegramUpdateRuntimeDeps<
549
558
  getCurrentInstanceId?: () => string | undefined;
550
559
  getMessageOwnership?: TelegramMessageOwnershipLookup;
551
560
  getTargetOwnership?: TelegramTargetOwnershipLookup;
561
+ recordMessageOwnership?: TelegramMessageOwnershipRecorder;
552
562
  foreignOwnedUpdateForwarder?: TelegramForeignOwnedUpdateForwarder<
553
563
  TContext,
554
564
  TReactionUpdate,
@@ -612,6 +622,7 @@ export interface TelegramUpdateRuntimeControllerDeps<
612
622
  getCurrentInstanceId?: () => string | undefined;
613
623
  getMessageOwnership?: TelegramMessageOwnershipLookup;
614
624
  getTargetOwnership?: TelegramTargetOwnershipLookup;
625
+ recordMessageOwnership?: TelegramMessageOwnershipRecorder;
615
626
  foreignOwnedUpdateForwarder?: TelegramForeignOwnedUpdateForwarder<
616
627
  TContext,
617
628
  TelegramMessageReactionUpdated,
@@ -824,6 +835,7 @@ export function createTelegramPairedUpdateRuntime<
824
835
  getCurrentInstanceId: deps.getCurrentInstanceId,
825
836
  getMessageOwnership: deps.getMessageOwnership,
826
837
  getTargetOwnership: deps.getTargetOwnership,
838
+ recordMessageOwnership: deps.recordMessageOwnership,
827
839
  handleTelegramTopicLifecycleUpdate: deps.handleTelegramTopicLifecycleUpdate,
828
840
  foreignOwnedUpdateForwarder: deps.foreignOwnedUpdateForwarder,
829
841
  removePendingMediaGroupMessages: deps.removePendingMediaGroupMessages,
@@ -890,6 +902,7 @@ export function createTelegramUpdateRuntime<
890
902
  getCurrentInstanceId: deps.getCurrentInstanceId,
891
903
  getMessageOwnership: deps.getMessageOwnership,
892
904
  getTargetOwnership: deps.getTargetOwnership,
905
+ recordMessageOwnership: deps.recordMessageOwnership,
893
906
  foreignOwnedUpdateForwarder: deps.foreignOwnedUpdateForwarder,
894
907
  removePendingMediaGroupMessages: deps.removePendingMediaGroupMessages,
895
908
  removeQueuedTelegramTurnsByMessageIds:
@@ -1109,11 +1122,40 @@ export async function executeTelegramUpdatePlan<
1109
1122
  }
1110
1123
  return;
1111
1124
  }
1125
+ const foreignMessageOwnership = getForeignTelegramMessageOwnership(
1126
+ getTelegramMessageReplyTarget(plan.message),
1127
+ deps,
1128
+ );
1129
+ if (foreignMessageOwnership) {
1130
+ if (plan.kind === "edited-message") {
1131
+ await deps.foreignOwnedUpdateForwarder?.forwardEditedMessage?.({
1132
+ message: plan.message,
1133
+ ownership: foreignMessageOwnership,
1134
+ ctx: deps.ctx,
1135
+ });
1136
+ } else {
1137
+ await deps.foreignOwnedUpdateForwarder?.forwardMessage?.({
1138
+ message: plan.message,
1139
+ ownership: foreignMessageOwnership,
1140
+ ctx: deps.ctx,
1141
+ });
1142
+ }
1143
+ return;
1144
+ }
1145
+ const messageTarget = getTelegramMessageTarget(plan.message);
1112
1146
  const foreignTargetOwnership = getForeignTelegramTargetOwnership(
1113
- getTelegramMessageTarget(plan.message),
1147
+ messageTarget,
1114
1148
  deps,
1115
1149
  );
1116
1150
  if (foreignTargetOwnership) {
1151
+ if (typeof plan.message.message_id === "number") {
1152
+ deps.recordMessageOwnership?.({
1153
+ chatId: messageTarget!.chatId,
1154
+ messageId: plan.message.message_id,
1155
+ target: messageTarget,
1156
+ instanceId: foreignTargetOwnership.instanceId,
1157
+ });
1158
+ }
1117
1159
  if (plan.kind === "edited-message") {
1118
1160
  await deps.foreignOwnedUpdateForwarder?.forwardEditedMessage?.({
1119
1161
  message: plan.message,
@@ -1129,7 +1171,6 @@ export async function executeTelegramUpdatePlan<
1129
1171
  }
1130
1172
  return;
1131
1173
  }
1132
- const messageTarget = getTelegramMessageTarget(plan.message);
1133
1174
  if (
1134
1175
  plan.kind === "message" &&
1135
1176
  messageTarget?.threadId != null &&
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llblab/pi-telegram",
3
- "version": "0.18.4",
3
+ "version": "0.18.6",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"