mirror of
https://github.com/yagop/node-telegram-bot-api
synced 2025-08-28 21:07:39 +00:00
src/telegram: Deprecate auto-enabling Promise cancellation
Side-effects: src/telegram: Allow providing custom Promise constructor References: * BR: https://github.com/yagop/node-telegram-bot-api/issues/319
This commit is contained in:
parent
28160c70cd
commit
ef48af49f5
20
doc/api.md
20
doc/api.md
@ -12,6 +12,7 @@ TelegramBot
|
|||||||
|
|
||||||
* [TelegramBot](#TelegramBot)
|
* [TelegramBot](#TelegramBot)
|
||||||
* [new TelegramBot(token, [options])](#new_TelegramBot_new)
|
* [new TelegramBot(token, [options])](#new_TelegramBot_new)
|
||||||
|
* _instance_
|
||||||
* [.startPolling([options])](#TelegramBot+startPolling) ⇒ <code>Promise</code>
|
* [.startPolling([options])](#TelegramBot+startPolling) ⇒ <code>Promise</code>
|
||||||
* ~~[.initPolling([options])](#TelegramBot+initPolling) ⇒ <code>Promise</code>~~
|
* ~~[.initPolling([options])](#TelegramBot+initPolling) ⇒ <code>Promise</code>~~
|
||||||
* [.stopPolling()](#TelegramBot+stopPolling) ⇒ <code>Promise</code>
|
* [.stopPolling()](#TelegramBot+stopPolling) ⇒ <code>Promise</code>
|
||||||
@ -74,6 +75,8 @@ TelegramBot
|
|||||||
* [.sendInvoice(chatId, title, description, payload, providerToken, startParameter, currency, prices, [options])](#TelegramBot+sendInvoice) ⇒ <code>Promise</code>
|
* [.sendInvoice(chatId, title, description, payload, providerToken, startParameter, currency, prices, [options])](#TelegramBot+sendInvoice) ⇒ <code>Promise</code>
|
||||||
* [.answerShippingQuery(shippingQueryId, ok, [options])](#TelegramBot+answerShippingQuery) ⇒ <code>Promise</code>
|
* [.answerShippingQuery(shippingQueryId, ok, [options])](#TelegramBot+answerShippingQuery) ⇒ <code>Promise</code>
|
||||||
* [.answerPreCheckoutQuery(preCheckoutQueryId, ok, [options])](#TelegramBot+answerPreCheckoutQuery) ⇒ <code>Promise</code>
|
* [.answerPreCheckoutQuery(preCheckoutQueryId, ok, [options])](#TelegramBot+answerPreCheckoutQuery) ⇒ <code>Promise</code>
|
||||||
|
* _static_
|
||||||
|
* [.Promise](#TelegramBot.Promise)
|
||||||
|
|
||||||
<a name="new_TelegramBot_new"></a>
|
<a name="new_TelegramBot_new"></a>
|
||||||
|
|
||||||
@ -974,6 +977,23 @@ Use this method to confirm shipping of a product.
|
|||||||
| ok | <code>Boolean</code> | Specify if every order details are ok |
|
| ok | <code>Boolean</code> | Specify if every order details are ok |
|
||||||
| [options] | <code>Object</code> | Additional Telegram query options |
|
| [options] | <code>Object</code> | Additional Telegram query options |
|
||||||
|
|
||||||
|
<a name="TelegramBot.Promise"></a>
|
||||||
|
|
||||||
|
### TelegramBot.Promise
|
||||||
|
Change Promise library used internally, for all existing and new
|
||||||
|
instances.
|
||||||
|
|
||||||
|
**Kind**: static property of <code>[TelegramBot](#TelegramBot)</code>
|
||||||
|
|
||||||
|
| Param | Type |
|
||||||
|
| --- | --- |
|
||||||
|
| customPromise | <code>function</code> |
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
```js
|
||||||
|
const TelegramBot = require('node-telegram-bot-api');
|
||||||
|
TelegramBot.Promise = myPromise;
|
||||||
|
```
|
||||||
* * *
|
* * *
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ const TelegramBotPolling = require('./telegramPolling');
|
|||||||
const debug = require('debug')('node-telegram-bot-api');
|
const debug = require('debug')('node-telegram-bot-api');
|
||||||
const EventEmitter = require('eventemitter3');
|
const EventEmitter = require('eventemitter3');
|
||||||
const fileType = require('file-type');
|
const fileType = require('file-type');
|
||||||
const Promise = require('bluebird');
|
|
||||||
const request = require('request-promise');
|
const request = require('request-promise');
|
||||||
const streamedRequest = require('request');
|
const streamedRequest = require('request');
|
||||||
const qs = require('querystring');
|
const qs = require('querystring');
|
||||||
@ -18,6 +17,7 @@ const URL = require('url');
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const pump = require('pump');
|
const pump = require('pump');
|
||||||
const deprecate = require('depd')('node-telegram-bot-api');
|
const deprecate = require('depd')('node-telegram-bot-api');
|
||||||
|
let Promise = require('bluebird');
|
||||||
|
|
||||||
const _messageTypes = [
|
const _messageTypes = [
|
||||||
'audio',
|
'audio',
|
||||||
@ -49,10 +49,27 @@ const _deprecatedMessageTypes = [
|
|||||||
'new_chat_participant', 'left_chat_participant'
|
'new_chat_participant', 'left_chat_participant'
|
||||||
];
|
];
|
||||||
|
|
||||||
// enable cancellation
|
|
||||||
|
// Enable Promise cancellation.
|
||||||
|
try {
|
||||||
|
const msg =
|
||||||
|
'Automatic enabling of cancellation of promises is deprecated.\n' +
|
||||||
|
'In the future, you will have to enable it yourself.\n' +
|
||||||
|
'See https://github.com/yagop/node-telegram-bot-api/issues/319.';
|
||||||
|
deprecate(msg);
|
||||||
Promise.config({
|
Promise.config({
|
||||||
cancellation: true,
|
cancellation: true,
|
||||||
});
|
});
|
||||||
|
} catch (ex) {
|
||||||
|
/* eslint-disable no-console */
|
||||||
|
const msg =
|
||||||
|
'error: Enabling Promise cancellation failed.\n' +
|
||||||
|
' Temporary fix is to load/require this library as early as possible before using any Promises.';
|
||||||
|
console.error(msg);
|
||||||
|
throw ex;
|
||||||
|
/* eslint-enable no-console */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class TelegramBot extends EventEmitter {
|
class TelegramBot extends EventEmitter {
|
||||||
|
|
||||||
@ -64,6 +81,19 @@ class TelegramBot extends EventEmitter {
|
|||||||
return _messageTypes;
|
return _messageTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change Promise library used internally, for all existing and new
|
||||||
|
* instances.
|
||||||
|
* @param {Function} customPromise
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* const TelegramBot = require('node-telegram-bot-api');
|
||||||
|
* TelegramBot.Promise = myPromise;
|
||||||
|
*/
|
||||||
|
static set Promise(customPromise) {
|
||||||
|
Promise = customPromise;
|
||||||
|
}
|
||||||
|
|
||||||
on(event, listener) {
|
on(event, listener) {
|
||||||
if (_deprecatedMessageTypes.indexOf(event) !== -1) {
|
if (_deprecatedMessageTypes.indexOf(event) !== -1) {
|
||||||
const url = 'https://github.com/yagop/node-telegram-bot-api/blob/master/doc/usage.md#events';
|
const url = 'https://github.com/yagop/node-telegram-bot-api/blob/master/doc/usage.md#events';
|
||||||
|
@ -109,6 +109,15 @@ describe('TelegramBot', function telegramSuite() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('allows providing custom Promise library', function test() {
|
||||||
|
TelegramBot.Promise = global.Promise;
|
||||||
|
const promise = bot.stopPolling();
|
||||||
|
assert.ok(promise instanceof global.Promise);
|
||||||
|
assert.ok(!(promise instanceof Promise));
|
||||||
|
// revert
|
||||||
|
TelegramBot.Promise = Promise;
|
||||||
|
});
|
||||||
|
|
||||||
it('automatically starts polling', function test() {
|
it('automatically starts polling', function test() {
|
||||||
assert.equal(botPolling.isPolling(), true);
|
assert.equal(botPolling.isPolling(), true);
|
||||||
return utils.isPollingMockServer(pollingPort2);
|
return utils.isPollingMockServer(pollingPort2);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user