@effect-ak/tg-bot-api 1.0.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.d.ts +43 -1
  2. package/package.json +11 -3
  3. package/readme.md +260 -4
package/dist/index.d.ts CHANGED
@@ -681,6 +681,7 @@ interface ChatFullInfo {
681
681
  linked_chat_id?: number;
682
682
  location?: ChatLocation;
683
683
  rating?: UserRating;
684
+ first_profile_audio?: Audio;
684
685
  unique_gift_colors?: UniqueGiftColors;
685
686
  paid_message_star_count?: number;
686
687
  }
@@ -782,6 +783,12 @@ interface ChatMemberUpdated {
782
783
  via_join_request?: boolean;
783
784
  via_chat_folder_invite_link?: boolean;
784
785
  }
786
+ interface ChatOwnerChanged {
787
+ new_owner: User;
788
+ }
789
+ interface ChatOwnerLeft {
790
+ new_owner?: User;
791
+ }
785
792
  interface ChatPermissions {
786
793
  can_send_messages?: boolean;
787
794
  can_send_audios?: boolean;
@@ -1037,6 +1044,8 @@ interface InaccessibleMessage {
1037
1044
  }
1038
1045
  interface InlineKeyboardButton {
1039
1046
  text: string;
1047
+ icon_custom_emoji_id?: string;
1048
+ style?: "danger" | "success" | "primary";
1040
1049
  url?: string;
1041
1050
  callback_data?: string;
1042
1051
  web_app?: WebAppInfo;
@@ -1517,6 +1526,8 @@ interface Invoice {
1517
1526
  }
1518
1527
  interface KeyboardButton {
1519
1528
  text: string;
1529
+ icon_custom_emoji_id?: string;
1530
+ style?: "danger" | "success" | "primary";
1520
1531
  request_users?: KeyboardButtonRequestUsers;
1521
1532
  request_chat?: KeyboardButtonRequestChat;
1522
1533
  request_contact?: boolean;
@@ -1654,6 +1665,8 @@ interface Message {
1654
1665
  location?: Location;
1655
1666
  new_chat_members?: User[];
1656
1667
  left_chat_member?: User;
1668
+ chat_owner_left?: ChatOwnerLeft;
1669
+ chat_owner_changed?: ChatOwnerChanged;
1657
1670
  new_chat_title?: string;
1658
1671
  new_chat_photo?: PhotoSize[];
1659
1672
  delete_chat_photo?: boolean;
@@ -2221,6 +2234,7 @@ interface UniqueGift {
2221
2234
  symbol: UniqueGiftSymbol;
2222
2235
  backdrop: UniqueGiftBackdrop;
2223
2236
  is_premium?: boolean;
2237
+ is_burned?: boolean;
2224
2238
  is_from_blockchain?: boolean;
2225
2239
  colors?: UniqueGiftColors;
2226
2240
  publisher_chat?: Chat;
@@ -2257,6 +2271,7 @@ interface UniqueGiftModel {
2257
2271
  name: string;
2258
2272
  sticker: Sticker;
2259
2273
  rarity_per_mille: number;
2274
+ rarity?: "uncommon" | "rare" | "epic" | "legendary";
2260
2275
  }
2261
2276
  interface UniqueGiftSymbol {
2262
2277
  name: string;
@@ -2304,10 +2319,15 @@ interface User {
2304
2319
  can_connect_to_business?: boolean;
2305
2320
  has_main_web_app?: boolean;
2306
2321
  has_topics_enabled?: boolean;
2322
+ allows_users_to_create_topics?: boolean;
2307
2323
  }
2308
2324
  interface UserChatBoosts {
2309
2325
  boosts: ChatBoost[];
2310
2326
  }
2327
+ interface UserProfileAudios {
2328
+ total_count: number;
2329
+ audios: Audio[];
2330
+ }
2311
2331
  interface UserProfilePhotos {
2312
2332
  total_count: number;
2313
2333
  photos: PhotoSize[][];
@@ -2340,6 +2360,7 @@ interface Video {
2340
2360
  thumbnail?: PhotoSize;
2341
2361
  cover?: PhotoSize[];
2342
2362
  start_timestamp?: number;
2363
+ qualities?: VideoQuality[];
2343
2364
  file_name?: string;
2344
2365
  mime_type?: string;
2345
2366
  file_size?: number;
@@ -2362,6 +2383,14 @@ interface VideoNote {
2362
2383
  thumbnail?: PhotoSize;
2363
2384
  file_size?: number;
2364
2385
  }
2386
+ interface VideoQuality {
2387
+ file_id: string;
2388
+ file_unique_id: string;
2389
+ width: number;
2390
+ height: number;
2391
+ codec: string;
2392
+ file_size?: number;
2393
+ }
2365
2394
  interface Voice {
2366
2395
  file_id: string;
2367
2396
  file_unique_id: string;
@@ -2469,6 +2498,7 @@ interface Api {
2469
2498
  get_updates(_: GetUpdatesInput): Update[];
2470
2499
  get_user_chat_boosts(_: GetUserChatBoostsInput): UserChatBoosts;
2471
2500
  get_user_gifts(_: GetUserGiftsInput): OwnedGifts;
2501
+ get_user_profile_audios(_: GetUserProfileAudiosInput): UserProfileAudios;
2472
2502
  get_user_profile_photos(_: GetUserProfilePhotosInput): UserProfilePhotos;
2473
2503
  get_webhook_info(_: GetWebhookInfoInput): WebhookInfo;
2474
2504
  gift_premium_subscription(_: GiftPremiumSubscriptionInput): boolean;
@@ -2482,6 +2512,7 @@ interface Api {
2482
2512
  refund_star_payment(_: RefundStarPaymentInput): boolean;
2483
2513
  remove_business_account_profile_photo(_: RemoveBusinessAccountProfilePhotoInput): boolean;
2484
2514
  remove_chat_verification(_: RemoveChatVerificationInput): boolean;
2515
+ remove_my_profile_photo(_: RemoveMyProfilePhotoInput): boolean;
2485
2516
  remove_user_verification(_: RemoveUserVerificationInput): boolean;
2486
2517
  reopen_forum_topic(_: ReopenForumTopicInput): boolean;
2487
2518
  reopen_general_forum_topic(_: ReopenGeneralForumTopicInput): boolean;
@@ -2531,6 +2562,7 @@ interface Api {
2531
2562
  set_my_default_administrator_rights(_: SetMyDefaultAdministratorRightsInput): boolean;
2532
2563
  set_my_description(_: SetMyDescriptionInput): boolean;
2533
2564
  set_my_name(_: SetMyNameInput): boolean;
2565
+ set_my_profile_photo(_: SetMyProfilePhotoInput): boolean;
2534
2566
  set_my_short_description(_: SetMyShortDescriptionInput): boolean;
2535
2567
  set_passport_data_errors(_: SetPassportDataErrorsInput): boolean;
2536
2568
  set_sticker_emoji_list(_: SetStickerEmojiListInput): boolean;
@@ -2982,6 +3014,11 @@ interface GetUserGiftsInput {
2982
3014
  offset?: string;
2983
3015
  limit?: number;
2984
3016
  }
3017
+ interface GetUserProfileAudiosInput {
3018
+ user_id: number;
3019
+ offset?: number;
3020
+ limit?: number;
3021
+ }
2985
3022
  interface GetUserProfilePhotosInput {
2986
3023
  user_id: number;
2987
3024
  offset?: number;
@@ -3058,6 +3095,8 @@ interface RemoveBusinessAccountProfilePhotoInput {
3058
3095
  interface RemoveChatVerificationInput {
3059
3096
  chat_id: number | string;
3060
3097
  }
3098
+ interface RemoveMyProfilePhotoInput {
3099
+ }
3061
3100
  interface RemoveUserVerificationInput {
3062
3101
  user_id: number;
3063
3102
  }
@@ -3570,6 +3609,9 @@ interface SetMyNameInput {
3570
3609
  name?: string;
3571
3610
  language_code?: string;
3572
3611
  }
3612
+ interface SetMyProfilePhotoInput {
3613
+ photo: InputProfilePhoto;
3614
+ }
3573
3615
  interface SetMyShortDescriptionInput {
3574
3616
  short_description?: string;
3575
3617
  language_code?: string;
@@ -3688,4 +3730,4 @@ interface VerifyUserInput {
3688
3730
  custom_description?: string;
3689
3731
  }
3690
3732
 
3691
- export type { Accelerometer, AccelerometerStartParams, AcceptedGiftTypes, AddStickerToSetInput, AffiliateInfo, AllowedUpdateName, Animation, AnswerCallbackQueryInput, AnswerInlineQueryInput, AnswerPreCheckoutQueryInput, AnswerShippingQueryInput, AnswerWebAppQueryInput, Api, ApproveChatJoinRequestInput, ApproveSuggestedPostInput, Audio, BackButton, BackgroundFill, BackgroundFillFreeformGradient, BackgroundFillGradient, BackgroundFillSolid, BackgroundType, BackgroundTypeChatTheme, BackgroundTypeFill, BackgroundTypePattern, BackgroundTypeWallpaper, BanChatMemberInput, BanChatSenderChatInput, BindOrUnbindEventHandler, BiometricAuthenticateParams, BiometricManager, BiometricRequestAccessParams, Birthdate, BotCommand, BotCommandScope, BotCommandScopeAllChatAdministrators, BotCommandScopeAllGroupChats, BotCommandScopeAllPrivateChats, BotCommandScopeChat, BotCommandScopeChatAdministrators, BotCommandScopeChatMember, BotCommandScopeDefault, BotDescription, BotName, BotShortDescription, BottomButton, BusinessBotRights, BusinessConnection, BusinessIntro, BusinessLocation, BusinessMessagesDeleted, BusinessOpeningHours, BusinessOpeningHoursInterval, CallbackGame, CallbackQuery, Chat, ChatAdministratorRights, ChatBackground, ChatBoost, ChatBoostAdded, ChatBoostRemoved, ChatBoostSource, ChatBoostSourceGiftCode, ChatBoostSourceGiveaway, ChatBoostSourcePremium, ChatBoostUpdated, ChatFullInfo, ChatInviteLink, ChatJoinRequest, ChatLocation, ChatMember, ChatMemberAdministrator, ChatMemberBanned, ChatMemberLeft, ChatMemberMember, ChatMemberOwner, ChatMemberRestricted, ChatMemberUpdated, ChatPermissions, ChatPhoto, ChatShared, Checklist, ChecklistTask, ChecklistTasksAdded, ChecklistTasksDone, ChosenInlineResult, CloseForumTopicInput, CloseGeneralForumTopicInput, CloseInput, CloudStorage, Contact, ContentSafeAreaInset, ConvertGiftToStarsInput, CopyMessageInput, CopyMessagesInput, CopyTextButton, CreateChatInviteLinkInput, CreateChatSubscriptionInviteLinkInput, CreateForumTopicInput, CreateInvoiceLinkInput, CreateNewStickerSetInput, DeclineChatJoinRequestInput, DeclineSuggestedPostInput, DeleteBusinessMessagesInput, DeleteChatPhotoInput, DeleteChatStickerSetInput, DeleteForumTopicInput, DeleteMessageInput, DeleteMessagesInput, DeleteMyCommandsInput, DeleteStickerFromSetInput, DeleteStickerSetInput, DeleteStoryInput, DeleteWebhookInput, DeviceOrientation, DeviceOrientationStartParams, DeviceStorage, Dice, DirectMessagePriceChanged, DirectMessagesTopic, Document, DownloadFileParams, EditChatInviteLinkInput, EditChatSubscriptionInviteLinkInput, EditForumTopicInput, EditGeneralForumTopicInput, EditMessageCaptionInput, EditMessageChecklistInput, EditMessageLiveLocationInput, EditMessageMediaInput, EditMessageReplyMarkupInput, EditMessageTextInput, EditStoryInput, EditUserStarSubscriptionInput, EmojiStatusParams, EncryptedCredentials, EncryptedPassportElement, EventHandlers, ExportChatInviteLinkInput, ExternalReplyInfo, File, ForceReply, ForumTopic, ForumTopicClosed, ForumTopicCreated, ForumTopicEdited, ForumTopicReopened, ForwardMessageInput, ForwardMessagesInput, Game, GameHighScore, GeneralForumTopicHidden, GeneralForumTopicUnhidden, GetAvailableGiftsInput, GetBusinessAccountGiftsInput, GetBusinessAccountStarBalanceInput, GetBusinessConnectionInput, GetChatAdministratorsInput, GetChatGiftsInput, GetChatInput, GetChatMemberCountInput, GetChatMemberInput, GetChatMenuButtonInput, GetCustomEmojiStickersInput, GetFileInput, GetForumTopicIconStickersInput, GetGameHighScoresInput, GetMeInput, GetMyCommandsInput, GetMyDefaultAdministratorRightsInput, GetMyDescriptionInput, GetMyNameInput, GetMyShortDescriptionInput, GetMyStarBalanceInput, GetStarTransactionsInput, GetStickerSetInput, GetUpdatesInput, GetUserChatBoostsInput, GetUserGiftsInput, GetUserProfilePhotosInput, GetWebhookInfoInput, Gift, GiftBackground, GiftInfo, GiftPremiumSubscriptionInput, Gifts, Giveaway, GiveawayCompleted, GiveawayCreated, GiveawayWinners, Gyroscope, GyroscopeStartParams, HapticFeedback, HideGeneralForumTopicInput, InaccessibleMessage, InlineKeyboardButton, InlineKeyboardMarkup, InlineQuery, InlineQueryResult, InlineQueryResultArticle, InlineQueryResultAudio, InlineQueryResultCachedAudio, InlineQueryResultCachedDocument, InlineQueryResultCachedGif, InlineQueryResultCachedMpeg4Gif, InlineQueryResultCachedPhoto, InlineQueryResultCachedSticker, InlineQueryResultCachedVideo, InlineQueryResultCachedVoice, InlineQueryResultContact, InlineQueryResultDocument, InlineQueryResultGame, InlineQueryResultGif, InlineQueryResultLocation, InlineQueryResultMpeg4Gif, InlineQueryResultPhoto, InlineQueryResultVenue, InlineQueryResultVideo, InlineQueryResultVoice, InlineQueryResultsButton, InputChecklist, InputChecklistTask, InputContactMessageContent, InputFile, InputInvoiceMessageContent, InputLocationMessageContent, InputMedia, InputMediaAnimation, InputMediaAudio, InputMediaDocument, InputMediaPhoto, InputMediaVideo, InputMessageContent, InputPaidMedia, InputPaidMediaPhoto, InputPaidMediaVideo, InputPollOption, InputProfilePhoto, InputProfilePhotoAnimated, InputProfilePhotoStatic, InputSticker, InputStoryContent, InputStoryContentPhoto, InputStoryContentVideo, InputTextMessageContent, InputVenueMessageContent, Invoice, KeyboardButton, KeyboardButtonPollType, KeyboardButtonRequestChat, KeyboardButtonRequestUsers, LabeledPrice, LeaveChatInput, LinkPreviewOptions, Location, LocationAddress, LocationData, LocationManager, LogOutInput, LoginUrl, MaskPosition, MaybeInaccessibleMessage, MenuButton, MenuButtonCommands, MenuButtonDefault, MenuButtonWebApp, Message, MessageAutoDeleteTimerChanged, MessageEntity, MessageId, MessageOrigin, MessageOriginChannel, MessageOriginChat, MessageOriginHiddenUser, MessageOriginUser, MessageReactionCountUpdated, MessageReactionUpdated, OrderInfo, OwnedGift, OwnedGiftRegular, OwnedGiftUnique, OwnedGifts, PaidMedia, PaidMediaInfo, PaidMediaPhoto, PaidMediaPreview, PaidMediaPurchased, PaidMediaVideo, PaidMessagePriceChanged, PassportData, PassportElementError, PassportElementErrorDataField, PassportElementErrorFile, PassportElementErrorFiles, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorTranslationFile, PassportElementErrorTranslationFiles, PassportElementErrorUnspecified, PassportFile, PhotoSize, PinChatMessageInput, Poll, PollAnswer, PollOption, PopupButton, PopupParams, PostStoryInput, PreCheckoutQuery, PreparedInlineMessage, PromoteChatMemberInput, ProximityAlertTriggered, ReactionCount, ReactionType, ReactionTypeCustomEmoji, ReactionTypeEmoji, ReactionTypePaid, ReadBusinessMessageInput, RefundStarPaymentInput, RefundedPayment, RemoveBusinessAccountProfilePhotoInput, RemoveChatVerificationInput, RemoveUserVerificationInput, ReopenForumTopicInput, ReopenGeneralForumTopicInput, ReplaceStickerInSetInput, ReplyKeyboardMarkup, ReplyKeyboardRemove, ReplyParameters, RepostStoryInput, ResponseParameters, RestrictChatMemberInput, RevenueWithdrawalState, RevenueWithdrawalStateFailed, RevenueWithdrawalStatePending, RevenueWithdrawalStateSucceeded, RevokeChatInviteLinkInput, SafeAreaInset, SavePreparedInlineMessageInput, ScanQrPopupParams, SecureStorage, SendAnimationInput, SendAudioInput, SendChatActionInput, SendChecklistInput, SendContactInput, SendDiceInput, SendDocumentInput, SendGameInput, SendGiftInput, SendInvoiceInput, SendLocationInput, SendMediaGroupInput, SendMessageDraftInput, SendMessageInput, SendPaidMediaInput, SendPhotoInput, SendPollInput, SendStickerInput, SendVenueInput, SendVideoInput, SendVideoNoteInput, SendVoiceInput, SentWebAppMessage, SetBusinessAccountBioInput, SetBusinessAccountGiftSettingsInput, SetBusinessAccountNameInput, SetBusinessAccountProfilePhotoInput, SetBusinessAccountUsernameInput, SetChatAdministratorCustomTitleInput, SetChatDescriptionInput, SetChatMenuButtonInput, SetChatPermissionsInput, SetChatPhotoInput, SetChatStickerSetInput, SetChatTitleInput, SetCustomEmojiStickerSetThumbnailInput, SetGameScoreInput, SetMessageReactionInput, SetMyCommandsInput, SetMyDefaultAdministratorRightsInput, SetMyDescriptionInput, SetMyNameInput, SetMyShortDescriptionInput, SetPassportDataErrorsInput, SetStickerEmojiListInput, SetStickerKeywordsInput, SetStickerMaskPositionInput, SetStickerPositionInSetInput, SetStickerSetThumbnailInput, SetStickerSetTitleInput, SetUserEmojiStatusInput, SetWebhookInput, SettingsButton, SharedUser, ShippingAddress, ShippingOption, ShippingQuery, StarAmount, StarTransaction, StarTransactions, Sticker, StickerSet, StopMessageLiveLocationInput, StopPollInput, Story, StoryArea, StoryAreaPosition, StoryAreaType, StoryAreaTypeLink, StoryAreaTypeLocation, StoryAreaTypeSuggestedReaction, StoryAreaTypeUniqueGift, StoryAreaTypeWeather, StoryShareParams, StoryWidgetLink, SuccessfulPayment, SuggestedPostApprovalFailed, SuggestedPostApproved, SuggestedPostDeclined, SuggestedPostInfo, SuggestedPostPaid, SuggestedPostParameters, SuggestedPostPrice, SuggestedPostRefunded, SwitchInlineQueryChosenChat, TextQuote, ThemeParams, TransactionPartner, TransactionPartnerAffiliateProgram, TransactionPartnerChat, TransactionPartnerFragment, TransactionPartnerOther, TransactionPartnerTelegramAds, TransactionPartnerTelegramApi, TransactionPartnerUser, TransferBusinessAccountStarsInput, TransferGiftInput, UnbanChatMemberInput, UnbanChatSenderChatInput, UnhideGeneralForumTopicInput, UniqueGift, UniqueGiftBackdrop, UniqueGiftBackdropColors, UniqueGiftColors, UniqueGiftInfo, UniqueGiftModel, UniqueGiftSymbol, UnpinAllChatMessagesInput, UnpinAllForumTopicMessagesInput, UnpinAllGeneralForumTopicMessagesInput, UnpinChatMessageInput, Update, UpgradeGiftInput, UploadStickerFileInput, User, UserChatBoosts, UserProfilePhotos, UserRating, UsersShared, Venue, VerifyChatInput, VerifyUserInput, Video, VideoChatEnded, VideoChatParticipantsInvited, VideoChatScheduled, VideoChatStarted, VideoNote, Voice, WebApp, WebAppChat, WebAppData, WebAppInfo, WebAppInitData, WebAppUser, WebhookInfo, WriteAccessAllowed };
3733
+ export type { Accelerometer, AccelerometerStartParams, AcceptedGiftTypes, AddStickerToSetInput, AffiliateInfo, AllowedUpdateName, Animation, AnswerCallbackQueryInput, AnswerInlineQueryInput, AnswerPreCheckoutQueryInput, AnswerShippingQueryInput, AnswerWebAppQueryInput, Api, ApproveChatJoinRequestInput, ApproveSuggestedPostInput, Audio, BackButton, BackgroundFill, BackgroundFillFreeformGradient, BackgroundFillGradient, BackgroundFillSolid, BackgroundType, BackgroundTypeChatTheme, BackgroundTypeFill, BackgroundTypePattern, BackgroundTypeWallpaper, BanChatMemberInput, BanChatSenderChatInput, BindOrUnbindEventHandler, BiometricAuthenticateParams, BiometricManager, BiometricRequestAccessParams, Birthdate, BotCommand, BotCommandScope, BotCommandScopeAllChatAdministrators, BotCommandScopeAllGroupChats, BotCommandScopeAllPrivateChats, BotCommandScopeChat, BotCommandScopeChatAdministrators, BotCommandScopeChatMember, BotCommandScopeDefault, BotDescription, BotName, BotShortDescription, BottomButton, BusinessBotRights, BusinessConnection, BusinessIntro, BusinessLocation, BusinessMessagesDeleted, BusinessOpeningHours, BusinessOpeningHoursInterval, CallbackGame, CallbackQuery, Chat, ChatAdministratorRights, ChatBackground, ChatBoost, ChatBoostAdded, ChatBoostRemoved, ChatBoostSource, ChatBoostSourceGiftCode, ChatBoostSourceGiveaway, ChatBoostSourcePremium, ChatBoostUpdated, ChatFullInfo, ChatInviteLink, ChatJoinRequest, ChatLocation, ChatMember, ChatMemberAdministrator, ChatMemberBanned, ChatMemberLeft, ChatMemberMember, ChatMemberOwner, ChatMemberRestricted, ChatMemberUpdated, ChatOwnerChanged, ChatOwnerLeft, ChatPermissions, ChatPhoto, ChatShared, Checklist, ChecklistTask, ChecklistTasksAdded, ChecklistTasksDone, ChosenInlineResult, CloseForumTopicInput, CloseGeneralForumTopicInput, CloseInput, CloudStorage, Contact, ContentSafeAreaInset, ConvertGiftToStarsInput, CopyMessageInput, CopyMessagesInput, CopyTextButton, CreateChatInviteLinkInput, CreateChatSubscriptionInviteLinkInput, CreateForumTopicInput, CreateInvoiceLinkInput, CreateNewStickerSetInput, DeclineChatJoinRequestInput, DeclineSuggestedPostInput, DeleteBusinessMessagesInput, DeleteChatPhotoInput, DeleteChatStickerSetInput, DeleteForumTopicInput, DeleteMessageInput, DeleteMessagesInput, DeleteMyCommandsInput, DeleteStickerFromSetInput, DeleteStickerSetInput, DeleteStoryInput, DeleteWebhookInput, DeviceOrientation, DeviceOrientationStartParams, DeviceStorage, Dice, DirectMessagePriceChanged, DirectMessagesTopic, Document, DownloadFileParams, EditChatInviteLinkInput, EditChatSubscriptionInviteLinkInput, EditForumTopicInput, EditGeneralForumTopicInput, EditMessageCaptionInput, EditMessageChecklistInput, EditMessageLiveLocationInput, EditMessageMediaInput, EditMessageReplyMarkupInput, EditMessageTextInput, EditStoryInput, EditUserStarSubscriptionInput, EmojiStatusParams, EncryptedCredentials, EncryptedPassportElement, EventHandlers, ExportChatInviteLinkInput, ExternalReplyInfo, File, ForceReply, ForumTopic, ForumTopicClosed, ForumTopicCreated, ForumTopicEdited, ForumTopicReopened, ForwardMessageInput, ForwardMessagesInput, Game, GameHighScore, GeneralForumTopicHidden, GeneralForumTopicUnhidden, GetAvailableGiftsInput, GetBusinessAccountGiftsInput, GetBusinessAccountStarBalanceInput, GetBusinessConnectionInput, GetChatAdministratorsInput, GetChatGiftsInput, GetChatInput, GetChatMemberCountInput, GetChatMemberInput, GetChatMenuButtonInput, GetCustomEmojiStickersInput, GetFileInput, GetForumTopicIconStickersInput, GetGameHighScoresInput, GetMeInput, GetMyCommandsInput, GetMyDefaultAdministratorRightsInput, GetMyDescriptionInput, GetMyNameInput, GetMyShortDescriptionInput, GetMyStarBalanceInput, GetStarTransactionsInput, GetStickerSetInput, GetUpdatesInput, GetUserChatBoostsInput, GetUserGiftsInput, GetUserProfileAudiosInput, GetUserProfilePhotosInput, GetWebhookInfoInput, Gift, GiftBackground, GiftInfo, GiftPremiumSubscriptionInput, Gifts, Giveaway, GiveawayCompleted, GiveawayCreated, GiveawayWinners, Gyroscope, GyroscopeStartParams, HapticFeedback, HideGeneralForumTopicInput, InaccessibleMessage, InlineKeyboardButton, InlineKeyboardMarkup, InlineQuery, InlineQueryResult, InlineQueryResultArticle, InlineQueryResultAudio, InlineQueryResultCachedAudio, InlineQueryResultCachedDocument, InlineQueryResultCachedGif, InlineQueryResultCachedMpeg4Gif, InlineQueryResultCachedPhoto, InlineQueryResultCachedSticker, InlineQueryResultCachedVideo, InlineQueryResultCachedVoice, InlineQueryResultContact, InlineQueryResultDocument, InlineQueryResultGame, InlineQueryResultGif, InlineQueryResultLocation, InlineQueryResultMpeg4Gif, InlineQueryResultPhoto, InlineQueryResultVenue, InlineQueryResultVideo, InlineQueryResultVoice, InlineQueryResultsButton, InputChecklist, InputChecklistTask, InputContactMessageContent, InputFile, InputInvoiceMessageContent, InputLocationMessageContent, InputMedia, InputMediaAnimation, InputMediaAudio, InputMediaDocument, InputMediaPhoto, InputMediaVideo, InputMessageContent, InputPaidMedia, InputPaidMediaPhoto, InputPaidMediaVideo, InputPollOption, InputProfilePhoto, InputProfilePhotoAnimated, InputProfilePhotoStatic, InputSticker, InputStoryContent, InputStoryContentPhoto, InputStoryContentVideo, InputTextMessageContent, InputVenueMessageContent, Invoice, KeyboardButton, KeyboardButtonPollType, KeyboardButtonRequestChat, KeyboardButtonRequestUsers, LabeledPrice, LeaveChatInput, LinkPreviewOptions, Location, LocationAddress, LocationData, LocationManager, LogOutInput, LoginUrl, MaskPosition, MaybeInaccessibleMessage, MenuButton, MenuButtonCommands, MenuButtonDefault, MenuButtonWebApp, Message, MessageAutoDeleteTimerChanged, MessageEntity, MessageId, MessageOrigin, MessageOriginChannel, MessageOriginChat, MessageOriginHiddenUser, MessageOriginUser, MessageReactionCountUpdated, MessageReactionUpdated, OrderInfo, OwnedGift, OwnedGiftRegular, OwnedGiftUnique, OwnedGifts, PaidMedia, PaidMediaInfo, PaidMediaPhoto, PaidMediaPreview, PaidMediaPurchased, PaidMediaVideo, PaidMessagePriceChanged, PassportData, PassportElementError, PassportElementErrorDataField, PassportElementErrorFile, PassportElementErrorFiles, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorTranslationFile, PassportElementErrorTranslationFiles, PassportElementErrorUnspecified, PassportFile, PhotoSize, PinChatMessageInput, Poll, PollAnswer, PollOption, PopupButton, PopupParams, PostStoryInput, PreCheckoutQuery, PreparedInlineMessage, PromoteChatMemberInput, ProximityAlertTriggered, ReactionCount, ReactionType, ReactionTypeCustomEmoji, ReactionTypeEmoji, ReactionTypePaid, ReadBusinessMessageInput, RefundStarPaymentInput, RefundedPayment, RemoveBusinessAccountProfilePhotoInput, RemoveChatVerificationInput, RemoveMyProfilePhotoInput, RemoveUserVerificationInput, ReopenForumTopicInput, ReopenGeneralForumTopicInput, ReplaceStickerInSetInput, ReplyKeyboardMarkup, ReplyKeyboardRemove, ReplyParameters, RepostStoryInput, ResponseParameters, RestrictChatMemberInput, RevenueWithdrawalState, RevenueWithdrawalStateFailed, RevenueWithdrawalStatePending, RevenueWithdrawalStateSucceeded, RevokeChatInviteLinkInput, SafeAreaInset, SavePreparedInlineMessageInput, ScanQrPopupParams, SecureStorage, SendAnimationInput, SendAudioInput, SendChatActionInput, SendChecklistInput, SendContactInput, SendDiceInput, SendDocumentInput, SendGameInput, SendGiftInput, SendInvoiceInput, SendLocationInput, SendMediaGroupInput, SendMessageDraftInput, SendMessageInput, SendPaidMediaInput, SendPhotoInput, SendPollInput, SendStickerInput, SendVenueInput, SendVideoInput, SendVideoNoteInput, SendVoiceInput, SentWebAppMessage, SetBusinessAccountBioInput, SetBusinessAccountGiftSettingsInput, SetBusinessAccountNameInput, SetBusinessAccountProfilePhotoInput, SetBusinessAccountUsernameInput, SetChatAdministratorCustomTitleInput, SetChatDescriptionInput, SetChatMenuButtonInput, SetChatPermissionsInput, SetChatPhotoInput, SetChatStickerSetInput, SetChatTitleInput, SetCustomEmojiStickerSetThumbnailInput, SetGameScoreInput, SetMessageReactionInput, SetMyCommandsInput, SetMyDefaultAdministratorRightsInput, SetMyDescriptionInput, SetMyNameInput, SetMyProfilePhotoInput, SetMyShortDescriptionInput, SetPassportDataErrorsInput, SetStickerEmojiListInput, SetStickerKeywordsInput, SetStickerMaskPositionInput, SetStickerPositionInSetInput, SetStickerSetThumbnailInput, SetStickerSetTitleInput, SetUserEmojiStatusInput, SetWebhookInput, SettingsButton, SharedUser, ShippingAddress, ShippingOption, ShippingQuery, StarAmount, StarTransaction, StarTransactions, Sticker, StickerSet, StopMessageLiveLocationInput, StopPollInput, Story, StoryArea, StoryAreaPosition, StoryAreaType, StoryAreaTypeLink, StoryAreaTypeLocation, StoryAreaTypeSuggestedReaction, StoryAreaTypeUniqueGift, StoryAreaTypeWeather, StoryShareParams, StoryWidgetLink, SuccessfulPayment, SuggestedPostApprovalFailed, SuggestedPostApproved, SuggestedPostDeclined, SuggestedPostInfo, SuggestedPostPaid, SuggestedPostParameters, SuggestedPostPrice, SuggestedPostRefunded, SwitchInlineQueryChosenChat, TextQuote, ThemeParams, TransactionPartner, TransactionPartnerAffiliateProgram, TransactionPartnerChat, TransactionPartnerFragment, TransactionPartnerOther, TransactionPartnerTelegramAds, TransactionPartnerTelegramApi, TransactionPartnerUser, TransferBusinessAccountStarsInput, TransferGiftInput, UnbanChatMemberInput, UnbanChatSenderChatInput, UnhideGeneralForumTopicInput, UniqueGift, UniqueGiftBackdrop, UniqueGiftBackdropColors, UniqueGiftColors, UniqueGiftInfo, UniqueGiftModel, UniqueGiftSymbol, UnpinAllChatMessagesInput, UnpinAllForumTopicMessagesInput, UnpinAllGeneralForumTopicMessagesInput, UnpinChatMessageInput, Update, UpgradeGiftInput, UploadStickerFileInput, User, UserChatBoosts, UserProfileAudios, UserProfilePhotos, UserRating, UsersShared, Venue, VerifyChatInput, VerifyUserInput, Video, VideoChatEnded, VideoChatParticipantsInvited, VideoChatScheduled, VideoChatStarted, VideoNote, VideoQuality, Voice, WebApp, WebAppChat, WebAppData, WebAppInfo, WebAppInitData, WebAppUser, WebhookInfo, WriteAccessAllowed };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-ak/tg-bot-api",
3
- "version": "1.0.0",
3
+ "version": "1.3.0",
4
4
  "type": "module",
5
5
  "description": "TypeScript types for Telegram Bot Api and Telegram Mini Apps",
6
6
  "license": "MIT",
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "repository": {
17
17
  "type": "git",
18
- "url": "https://github.com/effect-ak/tg-bot-client",
18
+ "url": "https://github.com/kondaurovDev/tg-bot-client",
19
19
  "directory": "packages/api"
20
20
  },
21
21
  "bugs": {
@@ -38,8 +38,16 @@
38
38
  "dist/*.cjs",
39
39
  "dist/*.d.ts"
40
40
  ],
41
+ "devDependencies": {
42
+ "node-html-parser": "^7.0.1",
43
+ "ts-morph": "^27.0.2"
44
+ },
41
45
  "scripts": {
42
46
  "build": "tsup",
43
- "typecheck": "tsc"
47
+ "typecheck": "tsc",
48
+ "gen": "pnpm run gen:bot:api && pnpm run gen:webapp:api",
49
+ "gen:bot:api": "MODULE_NAME=bot_api tsx ./codegen/main.ts",
50
+ "gen:webapp:api": "MODULE_NAME=webapp tsx ./codegen/main.ts",
51
+ "test": "vitest run"
44
52
  }
45
53
  }
package/readme.md CHANGED
@@ -1,17 +1,16 @@
1
- ![Telegram Bot API](https://img.shields.io/badge/BotApi-9.2-blue?link=)
1
+ [![NPM Version](https://img.shields.io/npm/v/%40effect-ak%2Ftg-bot-api)](https://www.npmjs.com/package/@effect-ak/tg-bot-api)
2
+ ![Telegram Bot API](https://img.shields.io/badge/BotApi-9.4-blue?link=)
2
3
  ![Telegram WebApp](https://img.shields.io/badge/Telegram.WebApp-9.1-blue?link=)
3
- [![OpenAPI](https://img.shields.io/badge/OpenAPI-3.1-blue.svg)](https://effect-ak.github.io/telegram-bot-api/)
4
4
 
5
5
  ## Highlights:
6
6
 
7
7
  - **Complete and Up-to-Date Telegram Bot API**: The entire API is generated from [the official documentation](https://core.telegram.org/bots/api) using a [code generator](./codegen/main.ts), ensuring this client remains in sync and supports every method and type provided by the **Telegram Bot API**.
8
8
  - **[Types for Webapps](#webapps-typings)** Types that describe `Telegram.WebApp`. Created by [code generator](./codegen/main.ts) as well.
9
- - **[ChatBot runner](#chatbot-runner)**: Focus on the logic of your chat bot
10
9
  - **Type Mapping**: Types from the documentation are converted to TypeScript types:
11
10
  - `Integer` → `number`
12
11
  - `True` → `boolean`
13
12
  - `String or Number` → `string | number`
14
- - Enumerated types, such as `"Type of the chat can be either private”, group”, supergroup or channel"`, are converted to a standard union of literal types `"private" | "group" | "supergroup" | "channel"`
13
+ - Enumerated types, such as `"Type of the chat can be either "private", "group", "supergroup" or "channel""`, are converted to a standard union of literal types `"private" | "group" | "supergroup" | "channel"`
15
14
  - And more...
16
15
 
17
16
  ## Webapps typings
@@ -35,3 +34,260 @@ const saveData = () => {
35
34
  })
36
35
  }
37
36
  ```
37
+
38
+ ## Code generation
39
+
40
+ Scrapes the official Telegram documentation HTML and generates:
41
+
42
+ - **TypeScript types** for Bot API and Mini Apps (`src/specification/`)
43
+ - **Markdown docs** with method/type reference pages (`docs/`)
44
+
45
+ ### Pipeline
46
+
47
+ ```
48
+ core.telegram.org/bots/api core.telegram.org/bots/webapps
49
+ | |
50
+ fetch & cache fetch & cache
51
+ (input/api.html) (input/webapp.html)
52
+ | |
53
+ v v
54
+ DocPage WebAppPage
55
+ | |
56
+ ┌──────┴──────┐ |
57
+ v v v
58
+ ExtractedType ExtractedMethod ExtractedWebApp
59
+ | | | |
60
+ v v v v
61
+ types.ts api.ts webapp.ts (types)
62
+ | |
63
+ └──────┬──────┘
64
+ v
65
+ docs/ (markdown)
66
+ ```
67
+
68
+ 1. **Fetch** — `PageProviderService` downloads HTML from `core.telegram.org` and caches it locally in `input/`.
69
+
70
+ 2. **Parse** — `DocPage` / `WebAppPage` parse the HTML into a DOM tree (`node-html-parser`). Each entity is located by its `<a class="anchor">` tag.
71
+
72
+ 3. **Extract entities** — for every `<h4>` heading on the page the extraction pipeline deterministically converts HTML into typed structures. See [Extraction semantics](#extraction-semantics) below for the full details.
73
+
74
+ 4. **Generate TypeScript** — `BotApiCodeWriterService` and `WebAppCodeWriterService` use `ts-morph` to emit `.ts` files with interfaces, type aliases, and method signatures.
75
+
76
+ 5. **Generate Markdown** — `MarkdownWriterService` converts the same extracted data into browsable `.md` files with cross-linked types.
77
+
78
+ ### Usage
79
+
80
+ ```bash
81
+ # generate everything (Bot API types + docs + Mini Apps types)
82
+ pnpm gen
83
+
84
+ # or individually
85
+ pnpm gen:bot:api
86
+ pnpm gen:webapp:api
87
+ ```
88
+
89
+ ### Tests
90
+
91
+ ```bash
92
+ pnpm test
93
+ ```
94
+
95
+ Tests use cached HTML fixtures from `input/` — no network requests during test runs after the first download.
96
+
97
+ ## Extraction semantics
98
+
99
+ The Telegram Bot API documentation page (`core.telegram.org/bots/api`) is a single long HTML page with a regular, predictable structure. Every type and method is defined as a sequence of sibling HTML elements under its heading. The codegen exploits this regularity to extract everything deterministically, without any heuristic guessing.
100
+
101
+ ### Page layout: H3 groups and H4 entities
102
+
103
+ ```
104
+ <h3>Getting updates</h3> ← group name (section header)
105
+ <h4><a class="anchor" name="getUpdates"/>getUpdates</h4> ← entity
106
+ <p>...</p> ← description paragraph(s)
107
+ <table>...</table> ← field definitions (or <ul> for union types)
108
+ <h4><a class="anchor" name="update"/>Update</h4>
109
+ <p>...</p>
110
+ <table>...</table>
111
+ ```
112
+
113
+ The batch extractor (`entities.ts`) walks all `<h3>` and `<h4>` nodes in document order:
114
+ - **`<h3>`** sets the current section group (e.g. "Getting updates", "Available types").
115
+ - **`<h4>`** is an individual entity — a type or a method.
116
+
117
+ ### Locating a single entity
118
+
119
+ Every `<h4>` heading contains an `<a class="anchor" name="...">` child. This gives a stable, lowercase slug for the entity (e.g. `name="sendmessage"`). To look up a specific entity, `DocPage.getEntity()` does:
120
+
121
+ ```ts
122
+ this.node.querySelector(`a.anchor[name="${name.toLowerCase()}"]`)
123
+ ```
124
+
125
+ then extracts from the anchor's parent `<h4>` node.
126
+
127
+ ### Type vs Method — first character case
128
+
129
+ There is no HTML attribute that distinguishes a type from a method. Instead, Telegram consistently uses:
130
+
131
+ - **Uppercase first letter** → Type definition (e.g. `User`, `Chat`, `Message`)
132
+ - **Lowercase first letter** → API method (e.g. `sendMessage`, `getUpdates`, `setWebhook`)
133
+
134
+ The `isComplexType` / `startsWithUpperCase` helper makes this check. It is the single decision point: uppercase entities are extracted as `ExtractedType`, lowercase as `ExtractedMethod`.
135
+
136
+ ### Entity structure: walking siblings from H4
137
+
138
+ Starting from the `<h4>` node, the extractor walks `nextElementSibling` to collect:
139
+
140
+ 1. **`<p>` paragraphs** — entity description, and (for methods) the return type sentence.
141
+ 2. **`<table>`** — field/parameter definitions → produces `EntityFields` (an object type with named properties).
142
+ 3. **`<ul>`** — union type members → produces `NormalType` (a union `A | B | C`).
143
+
144
+ The walk stops when it hits another `<h4>` (next entity), a `<table>`, or a `<ul>`. A safety limit of 10 sibling steps prevents runaway walks on malformed HTML.
145
+
146
+ ### Description and return type extraction
147
+
148
+ Description `<p>` paragraphs are split on `. ` (period + space) or `.<br>` into individual sentences. Each sentence is stripped of HTML tags to get plain text.
149
+
150
+ For **methods**, return type sentences are identified by three patterns:
151
+
152
+ | Pattern | Example |
153
+ |---------|---------|
154
+ | Starts with `"On success"` | "On success, a Message object is returned" |
155
+ | Starts with `"Returns "` | "Returns an Array of Update objects" |
156
+ | Ends with `"is returned"` | "The sent Message is returned" |
157
+
158
+ Type names are extracted from `<a>` and `<em>` tags inside these sentences using the regex `/\w+(?=<\/(a\|em)>)/g` — this matches the word just before a closing `</a>` or `</em>` tag. Only uppercase-initial names pass (primitives like "true" are skipped).
159
+
160
+ Array return types are detected by checking for `"an array of <TypeName>"` (case-insensitive) in the plain text.
161
+
162
+ ### Table parsing: 3-column vs 4-column
163
+
164
+ Telegram uses two table layouts:
165
+
166
+ **4-column tables** (method parameters):
167
+
168
+ | Field | Type | Required | Description |
169
+ |-------|------|----------|-------------|
170
+ | chat_id | Integer or String | Yes | Unique identifier... |
171
+ | text | String | Yes | Text of the message... |
172
+ | parse_mode | String | Optional | Mode for parsing... |
173
+
174
+ Columns: `name` (0), `type` (1), `required` (2), `description` (3).
175
+ Column 2 is either `"Yes"` or `"Optional"`.
176
+
177
+ **3-column tables** (type fields):
178
+
179
+ | Field | Type | Description |
180
+ |-------|------|-------------|
181
+ | message_id | Integer | Unique message identifier... |
182
+ | from | User | Optional. Sender of the message... |
183
+
184
+ Columns: `name` (0), `type` (1), `description` (2).
185
+ There is no explicit "Required" column — instead, optional fields have their description start with `"Optional."`. The extractor checks:
186
+
187
+ ```ts
188
+ if (all.length == 3) {
189
+ const isOptional = description[0].includes("Optional")
190
+ required = !isOptional
191
+ }
192
+ ```
193
+
194
+ Required fields are sorted before optional ones in the output.
195
+
196
+ ### Union types from `<ul>` lists
197
+
198
+ Some types are defined not by a table but by a bulleted list:
199
+
200
+ ```html
201
+ <h4>ChatMemberStatus</h4>
202
+ <p>This object represents ...</p>
203
+ <ul>
204
+ <li>ChatMemberOwner</li>
205
+ <li>ChatMemberAdministrator</li>
206
+ <li>ChatMemberMember</li>
207
+ ...
208
+ </ul>
209
+ ```
210
+
211
+ Each `<li>` text becomes one arm of the TypeScript union:
212
+
213
+ ```ts
214
+ type ChatMemberStatus = ChatMemberOwner | ChatMemberAdministrator | ChatMemberMember | ...
215
+ ```
216
+
217
+ ### Pseudo-type mapping
218
+
219
+ Telegram uses its own type names (pseudo-types). The mapping is straightforward:
220
+
221
+ | Telegram pseudo-type | TypeScript |
222
+ |---------------------|------------|
223
+ | `String` | `string` |
224
+ | `Integer`, `Int` | `number` |
225
+ | `Float` | `number` |
226
+ | `Boolean`, `True`, `False` | `boolean` |
227
+ | `Array of X` | `X[]` |
228
+ | `X or Y` | `X \| Y` |
229
+ | `InputFile` | `{ file_content: Uint8Array, file_name: string }` |
230
+
231
+ Nested arrays (`Array of Array of PhotoSize`) are handled by counting `Array of` occurrences and appending the matching number of `[]` brackets.
232
+
233
+ ### Enum extraction from descriptions
234
+
235
+ Some `String` fields actually represent a finite set of values. The descriptions contain natural-language hints:
236
+
237
+ > Type of the emoji, currently one of "dice", "darts", "bowling", "basketball", "football", "slot_machine"
238
+
239
+ The extractor looks for **indicator keywords**: `"must be"`, `"always"`, `"one of"`, `"can be"`. When found, it extracts quoted values using a regex that handles both straight quotes (`"`) and Unicode curly quotes (`\u201C`/`\u201D`), which appear in different parts of the Telegram docs.
240
+
241
+ These are emitted as string literal unions:
242
+
243
+ ```ts
244
+ emoji: "dice" | "darts" | "bowling" | "basketball" | "football" | "slot_machine"
245
+ ```
246
+
247
+ The `parse_mode` field is a special case — it is always overridden to `"HTML" | "MarkdownV2"` regardless of the description text.
248
+
249
+ ### The `Function` pseudo-type (Mini Apps)
250
+
251
+ The Mini Apps documentation uses `Function` as a pseudo-type for callable fields. When the table says:
252
+
253
+ | Field | Type | Description |
254
+ |-------|------|-------------|
255
+ | sendData() | Function | ... |
256
+ | isVersionAtLeast() | Function | ... |
257
+
258
+ The extractor detects `pseudoType == "Function"` and converts:
259
+ - Fields ending with `()` → function signatures (return type derived from the entity name)
260
+ - The field name is trimmed to remove the `()` suffix
261
+
262
+ Since the documentation doesn't specify parameter types for these functions, most webapp methods have **manual type overrides** in `typeOverrides` (see `type-system.ts`).
263
+
264
+ ### Manual overrides
265
+
266
+ Some types cannot be inferred from the HTML structure alone. Three override mechanisms handle these:
267
+
268
+ 1. **`typeOverrides`** — per-entity, per-field type replacements. Used extensively for Mini Apps methods (callbacks, complex parameter types) and a few Bot API fields like `allowed_updates` and `sendChatAction.action`.
269
+
270
+ 2. **`typeAliasOverrides`** — for types that have no `<table>` or `<ul>` (e.g. `InputFile`). When `findTypeNode` hits the next `<h4>` without finding a type definition, the override provides the TypeScript type.
271
+
272
+ 3. **`returnTypeOverrides`** — for methods whose return type sentence is ambiguous or missing (e.g. `sendMediaGroup` returns `Message[]`).
273
+
274
+ ## Module map
275
+
276
+ ```
277
+ codegen/
278
+ ├── main.ts entry point, reads MODULE_NAME env var
279
+ ├── runtime.ts Effect runtimes (DI wiring)
280
+ ├── types.ts shared type aliases (HtmlElement, TsSourceFile)
281
+
282
+ ├── scrape/
283
+ │ ├── type-system.ts type representation & conversion (NormalType, EntityFields)
284
+ │ ├── entity.ts single-entity extraction from HTML nodes
285
+ │ ├── page.ts DocPage & WebAppPage — HTML page models
286
+ │ └── entities.ts batch extraction — walks full page, collects all types & methods
287
+
288
+ └── service/
289
+ ├── index.ts barrel re-exports
290
+ ├── page-provider.ts fetches & caches documentation HTML
291
+ ├── code-writers.ts ts-morph TypeScript code generation
292
+ └── markdown.ts markdown docs generation
293
+ ```