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));
|
|
|
|
|
}
|
|
|
|
|
}
|