Skip to content

Commit 8fe6f04

Browse files
feat: Partial Support Telegram Bot API v9.0
1 parent 074912c commit 8fe6f04

File tree

1 file changed

+252
-0
lines changed

1 file changed

+252
-0
lines changed

src/telegram.js

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3363,6 +3363,7 @@ class TelegramBot extends EventEmitter {
33633363
* This method verifies a user [on behalf of the organization](https://telegram.org/verify#third-party-verification) which is represented by the bot.
33643364
*
33653365
* @param {Number} userId Unique identifier of the target user
3366+
* @param {Object} [options] Additional Telegram query options
33663367
* @return {Promise} On success, returns true.
33673368
* @see https://core.telegram.org/bots/api#verifyuser
33683369
*/
@@ -3376,6 +3377,7 @@ class TelegramBot extends EventEmitter {
33763377
*
33773378
* @param {Number} chatId Unique identifier of the target chat
33783379
* @return {Promise} On success, returns true.
3380+
* @param {Object} [options] Additional Telegram query options
33793381
* @see https://core.telegram.org/bots/api#verifychat
33803382
*/
33813383
verifyChat(chatId, form = {}) {
@@ -3387,6 +3389,7 @@ class TelegramBot extends EventEmitter {
33873389
* This method removes verification from a user who is currently verified [on behalf of the organization](https://telegram.org/verify#third-party-verification) which is represented by the bot.
33883390
*
33893391
* @param {Number} userId Unique identifier of the target user
3392+
* @param {Object} [options] Additional Telegram query options
33903393
* @return {Promise} On success, returns true.
33913394
* @see https://core.telegram.org/bots/api#removeuserverification
33923395
*/
@@ -3399,6 +3402,7 @@ class TelegramBot extends EventEmitter {
33993402
* This method removes verification from a chat who is currently verified [on behalf of the organization](https://telegram.org/verify#third-party-verification) which is represented by the bot.
34003403
*
34013404
* @param {Number} chatId Unique identifier of the target chat
3405+
* @param {Object} [options] Additional Telegram query options
34023406
* @return {Promise} On success, returns true.
34033407
* @see https://core.telegram.org/bots/api#removechatverification
34043408
*/
@@ -3407,6 +3411,254 @@ class TelegramBot extends EventEmitter {
34073411
return this._request('removeChatVerification', { form });
34083412
}
34093413

3414+
/**
3415+
* This method marks incoming message as read on behalf of a business account.
3416+
*
3417+
* Requires the **can_read_messages** business bot right
3418+
*
3419+
* @param {String} businessConnectionId Unique identifier of the business connection on behalf of which to read the message.
3420+
* @param {Number} chatId Unique identifier of the chat in which the message was received. The chat must have been active in the last 24 hours.
3421+
* @param {Number} messageId Unique identifier of the message to mark as read.
3422+
* @param {Object} [options] Additional Telegram query options
3423+
* @return {Promise} On success, returns true.
3424+
* @see https://core.telegram.org/bots/api#readbusinessmessage
3425+
*/
3426+
readBusinessMessage(businessConnectionId, chatId, messageId, form = {}) {
3427+
form.business_connection_id = businessConnectionId;
3428+
form.chat_id = chatId;
3429+
form.message_id = messageId;
3430+
return this._request('readBusinessMessage', { form });
3431+
}
3432+
3433+
/**
3434+
* This method delete messages on behalf of a business account.
3435+
*
3436+
* Requires the **can_delete_outgoing_messages** business bot right to delete messages sent by the bot itself, or the **can_delete_all_messages business** bot right to delete any message.
3437+
*
3438+
* @param {String} businessConnectionId Unique identifier of the business connection on behalf of which to delete the message.
3439+
* @param {Number[]} messageIds List of 1-100 identifiers of messages to delete. All messages **must be from the same chat**.
3440+
* @param {Object} [options] Additional Telegram query options
3441+
* @return {Promise} On success, returns true.
3442+
* @see https://core.telegram.org/bots/api#deletebusinessmessages
3443+
*/
3444+
deleteBusinessMessages(businessConnectionId, messageIds, form = {}) {
3445+
form.business_connection_id = businessConnectionId;
3446+
form.message_ids = stringify(messageIds);
3447+
return this._request('deleteBusinessMessages', { form });
3448+
}
3449+
3450+
/**
3451+
* This method changes the first and last name of a managed business account.
3452+
*
3453+
* Requires the **can_change_name** business bot right.
3454+
*
3455+
* @param {String} businessConnectionId Unique identifier of the business connection.
3456+
* @param {String} firstName The new value of the first name for the business account; 1-64 characters.
3457+
* @param {Object} [options] Additional Telegram query options
3458+
* @return {Promise} On success, returns true.
3459+
* @see https://core.telegram.org/bots/api#setbusinessaccountname
3460+
*/
3461+
setBusinessAccountName(businessConnectionId, firstName, form = {}) {
3462+
form.business_connection_id = businessConnectionId;
3463+
form.first_name = firstName;
3464+
return this._request('setBusinessAccountName', { form });
3465+
}
3466+
3467+
/**
3468+
* This method changes the username of a managed business account.
3469+
*
3470+
* Requires the **can_change_username** business bot right.
3471+
*
3472+
* @param {String} businessConnectionId Unique identifier of the business connection.
3473+
* @param {Object} [options] Additional Telegram query options
3474+
* @return {Promise} On success, returns true.
3475+
* @see https://core.telegram.org/bots/api#setbusinessaccountusername
3476+
*/
3477+
setBusinessAccountUsername(businessConnectionId, form = {}) {
3478+
form.business_connection_id = businessConnectionId;
3479+
return this._request('setBusinessAccountUsername', { form });
3480+
}
3481+
3482+
/**
3483+
* This method changes the bio of a managed business account.
3484+
*
3485+
* Requires the **can_change_bio** business bot right.
3486+
*
3487+
* @param {String} businessConnectionId Unique identifier of the business connection.
3488+
* @param {Object} [options] Additional Telegram query options
3489+
* @return {Promise} On success, returns true.
3490+
* @see https://core.telegram.org/bots/api#setbusinessaccountbio
3491+
*/
3492+
setBusinessAccountBio(businessConnectionId, form = {}) {
3493+
form.business_connection_id = businessConnectionId;
3494+
return this._request('setBusinessAccountBio', { form });
3495+
}
3496+
3497+
/**
3498+
* This method changes the profile photo of a managed business account.
3499+
*
3500+
* Requires the **can_edit_profile_photo** business bot right.
3501+
*
3502+
* @param {String} businessConnectionId Unique identifier of the business connection.
3503+
* @param {String|stream.Stream|Buffer} photo New profile photo.
3504+
* @param {Object} [options] Additional Telegram query options
3505+
* @return {Promise} On success, returns true.
3506+
* @see https://core.telegram.org/bots/api#setbusinessaccountprofilephoto
3507+
*/
3508+
setBusinessAccountProfilePhoto(businessConnectionId, photo, form = {}) {
3509+
const opts = {
3510+
qs: {},
3511+
};
3512+
3513+
opts.qs.business_connection_id = businessConnectionId;
3514+
3515+
try {
3516+
const sendData = this._formatSendData('photo', photo);
3517+
opts.formData = sendData[0];
3518+
opts.qs.photo = sendData[1];
3519+
} catch (ex) {
3520+
return Promise.reject(ex);
3521+
}
3522+
3523+
return this._request('setBusinessAccountProfilePhoto', { form });
3524+
}
3525+
3526+
/**
3527+
* This method removes the current profile photo of a managed business account.
3528+
*
3529+
* Requires the **can_edit_profile_photo** business bot right.
3530+
*
3531+
* @param {String} businessConnectionId Unique identifier of the business connection.
3532+
* @param {Object} [options] Additional Telegram query options
3533+
* @return {Promise} On success, returns true.
3534+
* @see https://core.telegram.org/bots/api#removebusinessaccountprofilephoto
3535+
*/
3536+
removeBusinessAccountProfilePhoto(businessConnectionId, form = {}) {
3537+
form.business_connection_id = businessConnectionId;
3538+
return this._request('removeBusinessAccountProfilePhoto', { form });
3539+
}
3540+
3541+
/**
3542+
* This method changes the privacy settings pertaining to incoming gifts in a managed business account.
3543+
*
3544+
* Requires the **can_change_gift_settings** business bot right.
3545+
*
3546+
* @param {String} businessConnectionId Unique identifier of the business connection.
3547+
* @param {Boolean} showGiftButton Pass True, if a button for sending a gift to the user or by the business account must always be shown in the input field.
3548+
* @param {Object} acceptedGiftTypes Types of gifts accepted by the business account.
3549+
* @param {Object} [options] Additional Telegram query options
3550+
* @return {Promise} On success, returns true.
3551+
* @see https://core.telegram.org/bots/api#setbusinessaccountgiftsettings
3552+
*/
3553+
setBusinessAccountGiftSettings(businessConnectionId, showGiftButton, acceptedGiftTypes, form = {}) {
3554+
form.business_connection_id = businessConnectionId;
3555+
form.show_gift_button = showGiftButton;
3556+
form.accepted_gift_types = acceptedGiftTypes;
3557+
return this._request('setBusinessAccountGiftSettings', { form });
3558+
}
3559+
3560+
/**
3561+
* This method returns the amount of Telegram Stars owned by a managed business account.
3562+
*
3563+
* Requires the **can_view_gifts_and_stars** business bot right.
3564+
*
3565+
* @param {String} businessConnectionId Unique identifier of the business connection.
3566+
* @param {Object} [options] Additional Telegram query options
3567+
* @return {Promise} On success, returns [StarAmount](https://core.telegram.org/bots/api#staramount).
3568+
* @see https://core.telegram.org/bots/api#getbusinessaccountstarbalance
3569+
*/
3570+
getBusinessAccountStarBalance(businessConnectionId, form = {}) {
3571+
form.business_connection_id = businessConnectionId;
3572+
return this._request('getBusinessAccountStarBalance', { form });
3573+
}
3574+
3575+
/**
3576+
* This method transfers Telegram Stars from the business account balance to the bot's balance.
3577+
*
3578+
* Requires the **can_transfer_stars** business bot right.
3579+
*
3580+
* @param {String} businessConnectionId Unique identifier of the business connection.
3581+
* @param {Number} starCount Number of Telegram Stars to transfer; 1-10000.
3582+
* @param {Object} [options] Additional Telegram query options.
3583+
* @return {Promise} On success, returns True.
3584+
* @see https://core.telegram.org/bots/api#transferbusinessaccountstars
3585+
*/
3586+
transferBusinessAccountStars(businessConnectionId, startCount, form = {}) {
3587+
form.business_connection_id = businessConnectionId;
3588+
form.star_count = startCount;
3589+
return this._request('transferBusinessAccountStars', { form });
3590+
}
3591+
3592+
/**
3593+
* This method returns the gifts received and owned by a managed business account.
3594+
*
3595+
* Requires the **can_view_gifts_and_stars** business bot right.
3596+
*
3597+
* @param {String} businessConnectionId Unique identifier of the business connection.
3598+
* @param {Object} [options] Additional Telegram query options
3599+
* @return {Promise} On success, returns [OwnedGifts](https://core.telegram.org/bots/api#ownedgifts).
3600+
* @see https://core.telegram.org/bots/api#getbusinessaccountgifts
3601+
*/
3602+
getBusinessAccountGifts(businessConnectionId, form = {}) {
3603+
form.business_connection_id = businessConnectionId;
3604+
return this._request('getBusinessAccountGifts', { form });
3605+
}
3606+
3607+
/**
3608+
* This method converts a given regular gift to Telegram Stars.
3609+
*
3610+
* Requires the **can_convert_gifts_to_stars** business bot right.
3611+
*
3612+
* @param {String} businessConnectionId Unique identifier of the business connection.
3613+
* @param {String} ownedGiftId Unique identifier of the regular gift that should be converted to Telegram Stars.
3614+
* @param {Object} [options] Additional Telegram query options
3615+
* @return {Promise} On success, returns True.
3616+
* @see https://core.telegram.org/bots/api#convertgifttostars
3617+
*/
3618+
convertGiftToStars(businessConnectionId, ownedGiftId, form = {}) {
3619+
form.business_connection_id = businessConnectionId;
3620+
form.owned_gift_id = ownedGiftId;
3621+
return this._request('convertGiftToStars', { form });
3622+
}
3623+
3624+
/**
3625+
* This method upgrades a given regular gift to a unique gift.
3626+
*
3627+
* Requires the **can_transfer_and_upgrade_gifts** business bot right.
3628+
* Additionally requires the **can_transfer_stars** business bot right **if the upgrade is paid**.
3629+
*
3630+
* @param {String} businessConnectionId Unique identifier of the business connection.
3631+
* @param {String} ownedGiftId Unique identifier of the regular gift that should be upgraded to a unique one.
3632+
* @param {Object} [options] Additional Telegram query options
3633+
* @return {Promise} On success, returns True.
3634+
* @see https://core.telegram.org/bots/api#upgradegift
3635+
*/
3636+
upgradeGift(businessConnectionId, ownedGiftId, form = {}) {
3637+
form.business_connection_id = businessConnectionId;
3638+
form.owned_gift_id = ownedGiftId;
3639+
return this._request('upgradeGift', { form });
3640+
}
3641+
3642+
/**
3643+
* This method transfers an owned unique gift to another user.
3644+
*
3645+
* Requires the **can_transfer_and_upgrade_gifts** business bot right.
3646+
* Additionally requires the **can_transfer_stars** business bot right **if the transfer is paid**.
3647+
*
3648+
* @param {String} businessConnectionId Unique identifier of the business connection.
3649+
* @param {String} ownedGiftId Unique identifier of the regular gift that should be transferred.
3650+
* @param {Number} newOwnerChatId Unique identifier of the chat which will own the gift. The chat **must be active in the last 24 hours**.
3651+
* @param {Object} [options] Additional Telegram query options
3652+
* @return {Promise} On success, returns True.
3653+
* @see https://core.telegram.org/bots/api#transfergift
3654+
*/
3655+
transferGift(businessConnectionId, ownedGiftId, newOwnerChatId, form = {}) {
3656+
form.business_connection_id = businessConnectionId;
3657+
form.owned_gift_id = ownedGiftId;
3658+
form.new_owner_chat_id = newOwnerChatId;
3659+
return this._request('transferGift', { form });
3660+
}
3661+
34103662
}
34113663

34123664
module.exports = TelegramBot;

0 commit comments

Comments
 (0)