mirror of
https://github.com/lukaszraczylo/go-telegram.git
synced 2026-06-05 22:43:59 +00:00
3c04d7b0b1
The Telegram docs describe many string fields and parameters with
phrases like "can be ..., or ...", "must be one of ...", or "always X",
yet the generated Go API surface used raw `string` for every one of
them. Callers had to write magic strings or `string(api.ChatTypePrivate)`
to satisfy the field type. This change makes those fields typed Go
string enums emitted from the IR, so the IDE autocompletes valid values
and breaking-value drift surfaces at compile time.
Pipeline changes:
- internal/spec/ir.go: Field gains EnumValues []string. Empty for non-
enum fields; otherwise the wire-level values in doc order, deduped.
- cmd/scrape/enums.go: extractEnumValues recognises the curly-quoted
patterns Telegram uses ("can be either", "currently can be", "one
of", "must be", "always X") and rejects free-text quoted refs (e.g.
"Can be available only for X") via a tight gap check between the
trigger phrase and the first quoted value. parse_mode parameters
get the canonical Markdown / MarkdownV2 / HTML triple injected
because Telegram links to a separate formatting-options section
instead of listing values inline.
- cmd/genapi/enums.go: planEnums groups fields by sorted value-tuple,
picks a canonical Go enum name (most-common candidate, parent-
prefixed beats plain, shortest beats longer, alphabetical for
determinism), resolves cross-group name collisions by parent prefix.
- cmd/genapi/emitter.go + templates: goField rewrites the field type
to the planned enum name; multipartFieldEntry casts typed enum
values back to string when composing the wire map; enums.tmpl now
iterates the planned enums instead of hardcoding four hand-curated
ones; sentinelForField produces typed-constant test fixtures.
- api/enums.gen.go: regenerated from the live IR. 66 enum types, 155
constants. ParseMode, ChatType, MessageEntityType, ChatMember /
MessageOrigin / PaidMedia / Background / StoryAreaType / Reaction /
TransactionPartner / PassportElement variant Status & Type fields
are now typed.
- api/enums.go: hand-coded UpdateType (used by transport.LongPoller).
The Telegram docs do not enumerate Update payload kinds inline, so
the codegen pipeline cannot synthesise this enum.
- api/types.gen.go, api/methods.gen.go, api/methods_gen_test.go: 137
field declarations rewritten string -> typed enum.
- dispatch/, examples/: dropped every string(api.<Const>) cast. The
HasEntity filter now takes api.MessageEntityType; ChatType filter
compares typed values directly. ChatMember discriminator filter
casts variant.Status (typed per variant) to string for comparison.
- internal/spec/api.json, testdata/golden/*: regenerated and
refreshed. make regen-from-fixture is byte-deterministic across
runs.
Renames (no compat shims; v1 pre-public):
- EntityX -> MessageEntityTypeX (e.g. EntityBotCommand -> MessageEntityTypeBotCommand)
- EntityStrike -> MessageEntityTypeStrikethrough (full wire name)
491 lines
15 KiB
Go
491 lines
15 KiB
Go
// Code generated by cmd/genapi. DO NOT EDIT.
|
|
|
|
//go:build !ignore_autogenerated
|
|
|
|
package api
|
|
|
|
type BackgroundFillFreeformGradientType string
|
|
|
|
const (
|
|
BackgroundFillFreeformGradientTypeFreeformGradient BackgroundFillFreeformGradientType = "freeform_gradient"
|
|
)
|
|
|
|
type BackgroundFillGradientType string
|
|
|
|
const (
|
|
BackgroundFillGradientTypeGradient BackgroundFillGradientType = "gradient"
|
|
)
|
|
|
|
type BackgroundFillSolidType string
|
|
|
|
const (
|
|
BackgroundFillSolidTypeSolid BackgroundFillSolidType = "solid"
|
|
)
|
|
|
|
type BackgroundTypeChatThemeType string
|
|
|
|
const (
|
|
BackgroundTypeChatThemeTypeChatTheme BackgroundTypeChatThemeType = "chat_theme"
|
|
)
|
|
|
|
type BackgroundTypeFillType string
|
|
|
|
const (
|
|
BackgroundTypeFillTypeFill BackgroundTypeFillType = "fill"
|
|
)
|
|
|
|
type BackgroundTypePatternType string
|
|
|
|
const (
|
|
BackgroundTypePatternTypePattern BackgroundTypePatternType = "pattern"
|
|
)
|
|
|
|
type BackgroundTypeWallpaperType string
|
|
|
|
const (
|
|
BackgroundTypeWallpaperTypeWallpaper BackgroundTypeWallpaperType = "wallpaper"
|
|
)
|
|
|
|
type ChatBoostSourceGiftCodeSource string
|
|
|
|
const (
|
|
ChatBoostSourceGiftCodeSourceGiftCode ChatBoostSourceGiftCodeSource = "gift_code"
|
|
)
|
|
|
|
type ChatBoostSourceGiveawaySource string
|
|
|
|
const (
|
|
ChatBoostSourceGiveawaySourceGiveaway ChatBoostSourceGiveawaySource = "giveaway"
|
|
)
|
|
|
|
type ChatBoostSourcePremiumSource string
|
|
|
|
const (
|
|
ChatBoostSourcePremiumSourcePremium ChatBoostSourcePremiumSource = "premium"
|
|
)
|
|
|
|
type ChatMemberAdministratorStatus string
|
|
|
|
const (
|
|
ChatMemberAdministratorStatusAdministrator ChatMemberAdministratorStatus = "administrator"
|
|
)
|
|
|
|
type ChatMemberBannedStatus string
|
|
|
|
const (
|
|
ChatMemberBannedStatusKicked ChatMemberBannedStatus = "kicked"
|
|
)
|
|
|
|
type ChatMemberLeftStatus string
|
|
|
|
const (
|
|
ChatMemberLeftStatusLeft ChatMemberLeftStatus = "left"
|
|
)
|
|
|
|
type ChatMemberMemberStatus string
|
|
|
|
const (
|
|
ChatMemberMemberStatusMember ChatMemberMemberStatus = "member"
|
|
)
|
|
|
|
type ChatMemberOwnerStatus string
|
|
|
|
const (
|
|
ChatMemberOwnerStatusCreator ChatMemberOwnerStatus = "creator"
|
|
)
|
|
|
|
type ChatMemberRestrictedStatus string
|
|
|
|
const (
|
|
ChatMemberRestrictedStatusRestricted ChatMemberRestrictedStatus = "restricted"
|
|
)
|
|
|
|
type ChatType string
|
|
|
|
const (
|
|
ChatTypePrivate ChatType = "private"
|
|
ChatTypeGroup ChatType = "group"
|
|
ChatTypeSupergroup ChatType = "supergroup"
|
|
ChatTypeChannel ChatType = "channel"
|
|
)
|
|
|
|
type EncryptedPassportElementType string
|
|
|
|
const (
|
|
EncryptedPassportElementTypePersonalDetails EncryptedPassportElementType = "personal_details"
|
|
EncryptedPassportElementTypePassport EncryptedPassportElementType = "passport"
|
|
EncryptedPassportElementTypeDriverLicense EncryptedPassportElementType = "driver_license"
|
|
EncryptedPassportElementTypeIdentityCard EncryptedPassportElementType = "identity_card"
|
|
EncryptedPassportElementTypeInternalPassport EncryptedPassportElementType = "internal_passport"
|
|
EncryptedPassportElementTypeAddress EncryptedPassportElementType = "address"
|
|
EncryptedPassportElementTypeUtilityBill EncryptedPassportElementType = "utility_bill"
|
|
EncryptedPassportElementTypeBankStatement EncryptedPassportElementType = "bank_statement"
|
|
EncryptedPassportElementTypeRentalAgreement EncryptedPassportElementType = "rental_agreement"
|
|
EncryptedPassportElementTypePassportRegistration EncryptedPassportElementType = "passport_registration"
|
|
EncryptedPassportElementTypeTemporaryRegistration EncryptedPassportElementType = "temporary_registration"
|
|
EncryptedPassportElementTypePhoneNumber EncryptedPassportElementType = "phone_number"
|
|
EncryptedPassportElementTypeEmail EncryptedPassportElementType = "email"
|
|
)
|
|
|
|
type InlineQueryChatType string
|
|
|
|
const (
|
|
InlineQueryChatTypeSender InlineQueryChatType = "sender"
|
|
InlineQueryChatTypePrivate InlineQueryChatType = "private"
|
|
InlineQueryChatTypeGroup InlineQueryChatType = "group"
|
|
InlineQueryChatTypeSupergroup InlineQueryChatType = "supergroup"
|
|
InlineQueryChatTypeChannel InlineQueryChatType = "channel"
|
|
)
|
|
|
|
type InlineQueryResultDocumentMimeType string
|
|
|
|
const (
|
|
InlineQueryResultDocumentMimeTypeApplicationOfPdf InlineQueryResultDocumentMimeType = "application/pdf"
|
|
InlineQueryResultDocumentMimeTypeApplicationOfZip InlineQueryResultDocumentMimeType = "application/zip"
|
|
)
|
|
|
|
type InlineQueryResultGifThumbnailMimeType string
|
|
|
|
const (
|
|
InlineQueryResultGifThumbnailMimeTypeImageOfJpeg InlineQueryResultGifThumbnailMimeType = "image/jpeg"
|
|
InlineQueryResultGifThumbnailMimeTypeImageOfGif InlineQueryResultGifThumbnailMimeType = "image/gif"
|
|
InlineQueryResultGifThumbnailMimeTypeVideoOfMp4 InlineQueryResultGifThumbnailMimeType = "video/mp4"
|
|
)
|
|
|
|
type InputStickerFormat string
|
|
|
|
const (
|
|
InputStickerFormatStatic InputStickerFormat = "static"
|
|
InputStickerFormatAnimated InputStickerFormat = "animated"
|
|
InputStickerFormatVideo InputStickerFormat = "video"
|
|
)
|
|
|
|
type KeyboardButtonStyle string
|
|
|
|
const (
|
|
KeyboardButtonStyleDanger KeyboardButtonStyle = "danger"
|
|
KeyboardButtonStyleSuccess KeyboardButtonStyle = "success"
|
|
KeyboardButtonStylePrimary KeyboardButtonStyle = "primary"
|
|
)
|
|
|
|
type MaskPositionPoint string
|
|
|
|
const (
|
|
MaskPositionPointForehead MaskPositionPoint = "forehead"
|
|
MaskPositionPointEyes MaskPositionPoint = "eyes"
|
|
MaskPositionPointMouth MaskPositionPoint = "mouth"
|
|
MaskPositionPointChin MaskPositionPoint = "chin"
|
|
)
|
|
|
|
type MessageEntityType string
|
|
|
|
const (
|
|
MessageEntityTypeMention MessageEntityType = "mention"
|
|
MessageEntityTypeHashtag MessageEntityType = "hashtag"
|
|
MessageEntityTypeCashtag MessageEntityType = "cashtag"
|
|
MessageEntityTypeBotCommand MessageEntityType = "bot_command"
|
|
MessageEntityTypeURL MessageEntityType = "url"
|
|
MessageEntityTypeEmail MessageEntityType = "email"
|
|
MessageEntityTypePhoneNumber MessageEntityType = "phone_number"
|
|
MessageEntityTypeBold MessageEntityType = "bold"
|
|
MessageEntityTypeItalic MessageEntityType = "italic"
|
|
MessageEntityTypeUnderline MessageEntityType = "underline"
|
|
MessageEntityTypeStrikethrough MessageEntityType = "strikethrough"
|
|
MessageEntityTypeSpoiler MessageEntityType = "spoiler"
|
|
MessageEntityTypeBlockquote MessageEntityType = "blockquote"
|
|
MessageEntityTypeExpandableBlockquote MessageEntityType = "expandable_blockquote"
|
|
MessageEntityTypeCode MessageEntityType = "code"
|
|
MessageEntityTypePre MessageEntityType = "pre"
|
|
MessageEntityTypeTextLink MessageEntityType = "text_link"
|
|
MessageEntityTypeTextMention MessageEntityType = "text_mention"
|
|
MessageEntityTypeCustomEmoji MessageEntityType = "custom_emoji"
|
|
MessageEntityTypeDateTime MessageEntityType = "date_time"
|
|
)
|
|
|
|
type MessageOriginChannelType string
|
|
|
|
const (
|
|
MessageOriginChannelTypeChannel MessageOriginChannelType = "channel"
|
|
)
|
|
|
|
type MessageOriginChatType string
|
|
|
|
const (
|
|
MessageOriginChatTypeChat MessageOriginChatType = "chat"
|
|
)
|
|
|
|
type MessageOriginHiddenUserType string
|
|
|
|
const (
|
|
MessageOriginHiddenUserTypeHiddenUser MessageOriginHiddenUserType = "hidden_user"
|
|
)
|
|
|
|
type MessageOriginUserType string
|
|
|
|
const (
|
|
MessageOriginUserTypeUser MessageOriginUserType = "user"
|
|
)
|
|
|
|
type OwnedGiftRegularType string
|
|
|
|
const (
|
|
OwnedGiftRegularTypeRegular OwnedGiftRegularType = "regular"
|
|
)
|
|
|
|
type OwnedGiftUniqueType string
|
|
|
|
const (
|
|
OwnedGiftUniqueTypeUnique OwnedGiftUniqueType = "unique"
|
|
)
|
|
|
|
type PaidMediaLivePhotoType string
|
|
|
|
const (
|
|
PaidMediaLivePhotoTypeLivePhoto PaidMediaLivePhotoType = "live_photo"
|
|
)
|
|
|
|
type PaidMediaPhotoType string
|
|
|
|
const (
|
|
PaidMediaPhotoTypePhoto PaidMediaPhotoType = "photo"
|
|
)
|
|
|
|
type PaidMediaPreviewType string
|
|
|
|
const (
|
|
PaidMediaPreviewTypePreview PaidMediaPreviewType = "preview"
|
|
)
|
|
|
|
type PaidMediaVideoType string
|
|
|
|
const (
|
|
PaidMediaVideoTypeVideo PaidMediaVideoType = "video"
|
|
)
|
|
|
|
type ParseMode string
|
|
|
|
const (
|
|
ParseModeMarkdown ParseMode = "Markdown"
|
|
ParseModeMarkdownV2 ParseMode = "MarkdownV2"
|
|
ParseModeHTML ParseMode = "HTML"
|
|
)
|
|
|
|
type PassportElementErrorDataFieldType string
|
|
|
|
const (
|
|
PassportElementErrorDataFieldTypePersonalDetails PassportElementErrorDataFieldType = "personal_details"
|
|
PassportElementErrorDataFieldTypePassport PassportElementErrorDataFieldType = "passport"
|
|
PassportElementErrorDataFieldTypeDriverLicense PassportElementErrorDataFieldType = "driver_license"
|
|
PassportElementErrorDataFieldTypeIdentityCard PassportElementErrorDataFieldType = "identity_card"
|
|
PassportElementErrorDataFieldTypeInternalPassport PassportElementErrorDataFieldType = "internal_passport"
|
|
PassportElementErrorDataFieldTypeAddress PassportElementErrorDataFieldType = "address"
|
|
)
|
|
|
|
type PassportElementErrorFileType string
|
|
|
|
const (
|
|
PassportElementErrorFileTypeUtilityBill PassportElementErrorFileType = "utility_bill"
|
|
PassportElementErrorFileTypeBankStatement PassportElementErrorFileType = "bank_statement"
|
|
PassportElementErrorFileTypeRentalAgreement PassportElementErrorFileType = "rental_agreement"
|
|
PassportElementErrorFileTypePassportRegistration PassportElementErrorFileType = "passport_registration"
|
|
PassportElementErrorFileTypeTemporaryRegistration PassportElementErrorFileType = "temporary_registration"
|
|
)
|
|
|
|
type PassportElementErrorReverseSideType string
|
|
|
|
const (
|
|
PassportElementErrorReverseSideTypeDriverLicense PassportElementErrorReverseSideType = "driver_license"
|
|
PassportElementErrorReverseSideTypeIdentityCard PassportElementErrorReverseSideType = "identity_card"
|
|
)
|
|
|
|
type PassportElementErrorSelfieType string
|
|
|
|
const (
|
|
PassportElementErrorSelfieTypePassport PassportElementErrorSelfieType = "passport"
|
|
PassportElementErrorSelfieTypeDriverLicense PassportElementErrorSelfieType = "driver_license"
|
|
PassportElementErrorSelfieTypeIdentityCard PassportElementErrorSelfieType = "identity_card"
|
|
PassportElementErrorSelfieTypeInternalPassport PassportElementErrorSelfieType = "internal_passport"
|
|
)
|
|
|
|
type PassportElementErrorTranslationFileType string
|
|
|
|
const (
|
|
PassportElementErrorTranslationFileTypePassport PassportElementErrorTranslationFileType = "passport"
|
|
PassportElementErrorTranslationFileTypeDriverLicense PassportElementErrorTranslationFileType = "driver_license"
|
|
PassportElementErrorTranslationFileTypeIdentityCard PassportElementErrorTranslationFileType = "identity_card"
|
|
PassportElementErrorTranslationFileTypeInternalPassport PassportElementErrorTranslationFileType = "internal_passport"
|
|
PassportElementErrorTranslationFileTypeUtilityBill PassportElementErrorTranslationFileType = "utility_bill"
|
|
PassportElementErrorTranslationFileTypeBankStatement PassportElementErrorTranslationFileType = "bank_statement"
|
|
PassportElementErrorTranslationFileTypeRentalAgreement PassportElementErrorTranslationFileType = "rental_agreement"
|
|
PassportElementErrorTranslationFileTypePassportRegistration PassportElementErrorTranslationFileType = "passport_registration"
|
|
PassportElementErrorTranslationFileTypeTemporaryRegistration PassportElementErrorTranslationFileType = "temporary_registration"
|
|
)
|
|
|
|
type PollType string
|
|
|
|
const (
|
|
PollTypeRegular PollType = "regular"
|
|
PollTypeQuiz PollType = "quiz"
|
|
)
|
|
|
|
type ReactionTypeCustomEmojiType string
|
|
|
|
const (
|
|
ReactionTypeCustomEmojiTypeCustomEmoji ReactionTypeCustomEmojiType = "custom_emoji"
|
|
)
|
|
|
|
type ReactionTypeEmojiType string
|
|
|
|
const (
|
|
ReactionTypeEmojiTypeEmoji ReactionTypeEmojiType = "emoji"
|
|
)
|
|
|
|
type ReactionTypePaidType string
|
|
|
|
const (
|
|
ReactionTypePaidTypePaid ReactionTypePaidType = "paid"
|
|
)
|
|
|
|
type RefundedPaymentCurrency string
|
|
|
|
const (
|
|
RefundedPaymentCurrencyXTR RefundedPaymentCurrency = "XTR"
|
|
)
|
|
|
|
type RevenueWithdrawalStateFailedType string
|
|
|
|
const (
|
|
RevenueWithdrawalStateFailedTypeFailed RevenueWithdrawalStateFailedType = "failed"
|
|
)
|
|
|
|
type RevenueWithdrawalStatePendingType string
|
|
|
|
const (
|
|
RevenueWithdrawalStatePendingTypePending RevenueWithdrawalStatePendingType = "pending"
|
|
)
|
|
|
|
type RevenueWithdrawalStateSucceededType string
|
|
|
|
const (
|
|
RevenueWithdrawalStateSucceededTypeSucceeded RevenueWithdrawalStateSucceededType = "succeeded"
|
|
)
|
|
|
|
type StickerType string
|
|
|
|
const (
|
|
StickerTypeRegular StickerType = "regular"
|
|
StickerTypeMask StickerType = "mask"
|
|
StickerTypeCustomEmoji StickerType = "custom_emoji"
|
|
)
|
|
|
|
type StoryAreaTypeLinkType string
|
|
|
|
const (
|
|
StoryAreaTypeLinkTypeLink StoryAreaTypeLinkType = "link"
|
|
)
|
|
|
|
type StoryAreaTypeLocationType string
|
|
|
|
const (
|
|
StoryAreaTypeLocationTypeLocation StoryAreaTypeLocationType = "location"
|
|
)
|
|
|
|
type StoryAreaTypeSuggestedReactionType string
|
|
|
|
const (
|
|
StoryAreaTypeSuggestedReactionTypeSuggestedReaction StoryAreaTypeSuggestedReactionType = "suggested_reaction"
|
|
)
|
|
|
|
type StoryAreaTypeUniqueGiftType string
|
|
|
|
const (
|
|
StoryAreaTypeUniqueGiftTypeUniqueGift StoryAreaTypeUniqueGiftType = "unique_gift"
|
|
)
|
|
|
|
type StoryAreaTypeWeatherType string
|
|
|
|
const (
|
|
StoryAreaTypeWeatherTypeWeather StoryAreaTypeWeatherType = "weather"
|
|
)
|
|
|
|
type SuggestedPostInfoState string
|
|
|
|
const (
|
|
SuggestedPostInfoStatePending SuggestedPostInfoState = "pending"
|
|
SuggestedPostInfoStateApproved SuggestedPostInfoState = "approved"
|
|
SuggestedPostInfoStateDeclined SuggestedPostInfoState = "declined"
|
|
)
|
|
|
|
type SuggestedPostPaidCurrency string
|
|
|
|
const (
|
|
SuggestedPostPaidCurrencyXTR SuggestedPostPaidCurrency = "XTR"
|
|
SuggestedPostPaidCurrencyTON SuggestedPostPaidCurrency = "TON"
|
|
)
|
|
|
|
type SuggestedPostRefundedReason string
|
|
|
|
const (
|
|
SuggestedPostRefundedReasonPostDeleted SuggestedPostRefundedReason = "post_deleted"
|
|
SuggestedPostRefundedReasonPaymentRefunded SuggestedPostRefundedReason = "payment_refunded"
|
|
)
|
|
|
|
type TransactionPartnerAffiliateProgramType string
|
|
|
|
const (
|
|
TransactionPartnerAffiliateProgramTypeAffiliateProgram TransactionPartnerAffiliateProgramType = "affiliate_program"
|
|
)
|
|
|
|
type TransactionPartnerFragmentType string
|
|
|
|
const (
|
|
TransactionPartnerFragmentTypeFragment TransactionPartnerFragmentType = "fragment"
|
|
)
|
|
|
|
type TransactionPartnerOtherType string
|
|
|
|
const (
|
|
TransactionPartnerOtherTypeOther TransactionPartnerOtherType = "other"
|
|
)
|
|
|
|
type TransactionPartnerTelegramAdsType string
|
|
|
|
const (
|
|
TransactionPartnerTelegramAdsTypeTelegramAds TransactionPartnerTelegramAdsType = "telegram_ads"
|
|
)
|
|
|
|
type TransactionPartnerTelegramApiType string
|
|
|
|
const (
|
|
TransactionPartnerTelegramApiTypeTelegramApi TransactionPartnerTelegramApiType = "telegram_api"
|
|
)
|
|
|
|
type TransactionPartnerUserTransactionType string
|
|
|
|
const (
|
|
TransactionPartnerUserTransactionTypeInvoicePayment TransactionPartnerUserTransactionType = "invoice_payment"
|
|
TransactionPartnerUserTransactionTypePaidMediaPayment TransactionPartnerUserTransactionType = "paid_media_payment"
|
|
TransactionPartnerUserTransactionTypeGiftPurchase TransactionPartnerUserTransactionType = "gift_purchase"
|
|
TransactionPartnerUserTransactionTypePremiumPurchase TransactionPartnerUserTransactionType = "premium_purchase"
|
|
TransactionPartnerUserTransactionTypeBusinessAccountTransfer TransactionPartnerUserTransactionType = "business_account_transfer"
|
|
)
|
|
|
|
type UniqueGiftInfoOrigin string
|
|
|
|
const (
|
|
UniqueGiftInfoOriginUpgrade UniqueGiftInfoOrigin = "upgrade"
|
|
UniqueGiftInfoOriginTransfer UniqueGiftInfoOrigin = "transfer"
|
|
UniqueGiftInfoOriginResale UniqueGiftInfoOrigin = "resale"
|
|
UniqueGiftInfoOriginGiftedUpgrade UniqueGiftInfoOrigin = "gifted_upgrade"
|
|
UniqueGiftInfoOriginOffer UniqueGiftInfoOrigin = "offer"
|
|
)
|
|
|
|
type UniqueGiftModelRarity string
|
|
|
|
const (
|
|
UniqueGiftModelRarityUncommon UniqueGiftModelRarity = "uncommon"
|
|
UniqueGiftModelRarityRare UniqueGiftModelRarity = "rare"
|
|
UniqueGiftModelRarityEpic UniqueGiftModelRarity = "epic"
|
|
UniqueGiftModelRarityLegendary UniqueGiftModelRarity = "legendary"
|
|
)
|