Q2TG/src/helpers/WaitForMessageHelper.ts

33 lines
928 B
TypeScript
Raw Normal View History

2022-02-23 09:11:04 +00:00
import Telegram from '../client/Telegram';
2022-02-17 09:32:30 +00:00
import { BigInteger } from 'big-integer';
import { Api } from 'telegram';
2022-02-17 13:09:12 +00:00
export default class WaitForMessageHelper {
2022-02-17 09:32:30 +00:00
// BugInteger 好像不能用 === 判断Telegram 的 ID 还没有超过 number
private map = new Map<number, (event: Api.Message) => any>();
constructor(private tg: Telegram) {
2022-02-17 13:09:12 +00:00
tg.addNewMessageEventHandler(async e => {
2022-02-24 13:23:35 +00:00
if (!e.chat || !e.chat.id) return false;
2022-02-17 09:32:30 +00:00
const handler = this.map.get(Number(e.chat.id));
if (handler) {
this.map.delete(Number(e.chat.id));
handler(e);
2022-02-17 13:09:12 +00:00
return true;
2022-02-17 09:32:30 +00:00
}
2022-02-17 13:09:12 +00:00
return false;
2022-02-17 09:32:30 +00:00
});
}
2022-02-17 13:09:12 +00:00
public waitForMessage(chatId: BigInteger | number) {
2022-02-17 09:32:30 +00:00
return new Promise<Api.Message>(resolve => {
chatId = Number(chatId);
this.map.set(chatId, resolve);
});
}
public cancel(chatId: BigInteger | number | string) {
this.map.delete(Number(chatId));
}
}