Skip to content

Commit

Permalink
Merge 1a83503 into e68c987
Browse files Browse the repository at this point in the history
  • Loading branch information
RB-Lab committed Nov 29, 2021
2 parents e68c987 + 1a83503 commit 0537d85
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 12 deletions.
31 changes: 19 additions & 12 deletions src/telegramServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -217,29 +217,37 @@ export class TelegramServer extends EventEmitter {
}
}

/**
* @FIXME
* (node:103570) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11
* EditedMessageText listeners added to [TelegramServer]. Use emitter.setMaxListeners() to
* increase limit (Use `node --trace-warnings ...` to show where the warning was created)
*/
async waitBotEdits() {
return new Promise<void>((resolve) => {
this.on('EditedMessageText', () => resolve());
const handler = () => {
this.off('EditedMessageText', handler);
resolve();
};
this.on('EditedMessageText', handler);
});
}

async waitBotMessage() {
return new Promise<void>((resolve) => {
this.on('AddedBotMessage', () => resolve());
const handler = () => {
this.off('AddedBotMessage', handler);
resolve();
};
this.on('AddedBotMessage', handler);
});
}

async waitUserMessage() {
return new Promise<void>((resolve) => {
this.on('AddedUserMessage', () => resolve());
this.on('AddedUserCommand', () => resolve());
this.on('AddedUserCallbackQuery', () => resolve());
const messageHandler = () => {
this.off('AddedUserMessage', messageHandler);
this.off('AddedUserCommand', messageHandler);
this.off('AddedUserCallbackQuery', messageHandler);
resolve();
};
this.on('AddedUserMessage', messageHandler);
this.on('AddedUserCommand', messageHandler);
this.on('AddedUserCallbackQuery', messageHandler);
});
}

Expand All @@ -254,7 +262,6 @@ export class TelegramServer extends EventEmitter {

async addUserCommand(message: CommandRequest) {
assert.ok(message.entities, 'Command should have entities');

await this.addUserUpdate({
...this.getCommonFields(message.botToken),
message,
Expand Down
9 changes: 9 additions & 0 deletions src/test/generic.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,15 @@ describe('Telegram Server', () => {
}).catch((err) => assert.fail(err));
});

it('waits user message', async () => {
const { server, client } = await getServerAndClient(token);
client.sendCommand(client.makeCommand('/start'));
await server.waitUserMessage();
const history = await client.getUpdatesHistory();
assert.equal(history.length, 1);
await server.stop();
});

it('should fully implement user-bot interaction', async () => {
const { server, client } = await getServerAndClient(token);
let message = client.makeMessage('/start');
Expand Down

0 comments on commit 0537d85

Please sign in to comment.