import { NewMessage } from 'telegram/events/NewMessage.js'; import { DeletedMessage } from 'telegram/events/DeletedMessage.js'; import { EditedMessage } from 'telegram/events/EditedMessage.js'; import { logger } from '../core/logger.js'; import { runHook } from '../core/registry.js'; /** * Подписывает клиент на апдметы и раздаёт их модулям через хуки. * Мы слушаем всё, но модули сами решают, что делать (обычно — только личку). */ export function wireEvents(client, registry, ctx) { client.addEventHandler( (event) => runHook(registry, 'onMessage', event.message, ctx), new NewMessage({}), ); client.addEventHandler( (event) => runHook(registry, 'onEdited', event.message, ctx), new EditedMessage({}), ); client.addEventHandler( (event) => runHook(registry, 'onDeleted', event, ctx), new DeletedMessage({}), ); logger.debug('события юзербота подписаны: new / edited / deleted'); } /** Личный диалог один-на-один (не группа, не канал, не свои Избранные). */ export function isPrivateIncoming(message, me) { if (!message) return false; if (message.out) return false; // исходящие от себя не перехватываем const cls = message.peerId?.className; return cls === 'PeerUser' && String(message.senderId) !== String(me?.id ?? ''); }