38 lines
1.5 KiB
JavaScript
38 lines
1.5 KiB
JavaScript
|
|
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 ?? '');
|
||
|
|
}
|