v0.5.0 #8

Merged
ScuroNeko merged 17 commits from dev into main 2026-02-12 11:51:02 +03:00
3 changed files with 114 additions and 25 deletions
Showing only changes of commit a5ca836fa4 - Show all commits

View File

@@ -177,26 +177,24 @@ type ChatMember struct {
CanAddWebPagePreview *bool `json:"can_add_web_page_preview,omitempty"`
}
type BaseChatBoostSource struct {
type ChatBoostSource struct {
Source string `json:"source"`
User User `json:"user"`
}
type ChatBoostSourcePremium struct{ BaseChatBoostSource }
type ChatBoostSourceGiftCode struct{ BaseChatBoostSource }
type ChatBoostSourceGiveaway struct {
BaseChatBoostSource
GiveawayMessageID int `json:"giveaway_message_id"`
// Giveaway
GiveawayMessageID *int `json:"giveaway_message_id,omitempty"`
PrizeStarCount *int `json:"prize_star_count,omitempty"`
IsUnclaimed bool `json:"is_unclaimed"`
IsUnclaimed *bool `json:"is_unclaimed,omitempty"`
}
type ChatBoost[T BaseChatBoostSource] struct {
type ChatBoost struct {
BoostID int `json:"boost_id"`
AddDate int `json:"add_date"`
ExpirationDate int `json:"expiration_date"`
Source T `json:"source"`
Source ChatBoostSource `json:"source"`
}
type UserChatBoosts struct {
Boosts []ChatBoost[BaseChatBoostSource] `json:"boosts"`
Boosts []ChatBoost `json:"boosts"`
}
type ChatAdministratorRights struct {
@@ -218,3 +216,15 @@ type ChatAdministratorRights struct {
CanManageTopics *bool `json:"can_manage_topics,omitempty"`
CanManageDirectMessages *bool `json:"can_manage_direct_messages,omitempty"`
}
type ChatBoostUpdated struct {
Chat Chat `json:"chat"`
Boost ChatBoost `json:"boost"`
}
type ChatBoostRemoved struct {
Chat Chat `json:"chat"`
BoostID string `json:"boost_id"`
RemoveDate int `json:"remove_date"`
Source ChatBoostSource `json:"source"`
}

View File

@@ -13,9 +13,10 @@ type EmptyParams struct{}
var NoParams = EmptyParams{}
type UpdateParams struct {
Offset int `json:"offset"`
Timeout int `json:"timeout"`
AllowedUpdates []string `json:"allowed_updates"`
Offset *int `json:"offset,omitempty"`
Limit *int `json:"limit,omitempty"`
Timeout *int `json:"timeout,omitempty"`
AllowedUpdates []UpdateType `json:"allowed_updates"`
}
func (api *Api) GetMe() (User, error) {

View File

@@ -1,5 +1,35 @@
package tgapi
type UpdateType string
const (
UpdateTypeMessage UpdateType = "message"
UpdateTypeEditedMessage UpdateType = "edited_message"
UpdateTypeChannelPost UpdateType = "channel_post"
UpdateTypeEditedChannelPost UpdateType = "edited_channel_post"
UpdateTypeMessageReaction UpdateType = "message_reaction"
UpdateTypeMessageReactionCount UpdateType = "message_reaction_count"
UpdateTypeBusinessConnection UpdateType = "business_connection"
UpdateTypeBusinessMessage UpdateType = "business_message"
UpdateTypeEditedBusinessMessage UpdateType = "edited_business_message"
UpdateTypeDeletedBusinessMessage UpdateType = "deleted_business_message"
UpdateTypeInlineQuery UpdateType = "inline_query"
UpdateTypeChosenInlineResult UpdateType = "chosen_inline_result"
UpdateTypeCallbackQuery UpdateType = "callback_query"
UpdateTypeShippingQuery UpdateType = "shipping_query"
UpdateTypePreCheckoutQuery UpdateType = "pre_checkout_query"
UpdateTypePurchasedPaidMedia UpdateType = "purchased_paid_media"
UpdateTypePoll UpdateType = "poll"
UpdateTypePollAnswer UpdateType = "poll_answer"
UpdateTypeMyChatMember UpdateType = "my_chat_member"
UpdateTypeChatMember UpdateType = "chat_member"
UpdateTypeChatJoinRequest UpdateType = "chat_join_request"
UpdateTypeChatBoost UpdateType = "chat_boost"
UpdateTypeRemovedChatBoost UpdateType = "removed_chat_boost"
)
type Update struct {
UpdateID int `json:"update_id"`
Message *Message `json:"message,omitempty"`
@@ -21,13 +51,13 @@ type Update struct {
PreCheckoutQuery *PreCheckoutQuery `json:"pre_checkout_query,omitempty"`
PurchasedPaidMedia *PaidMediaPurchased `json:"purchased_paid_media,omitempty"`
Poll any `json:"poll,omitempty"`
PollAnswer any `json:"poll_answer,omitempty"`
MyChatMember any `json:"my_chat_member,omitempty"`
ChatMember any `json:"chat_member,omitempty"`
ChatJoinRequest any `json:"chat_join_request,omitempty"`
ChatBoost any `json:"chat_boost,omitempty"`
RemovedChatBoost any `json:"removed_chat_boost,omitempty"`
Poll *Poll `json:"poll,omitempty"`
PollAnswer *PollAnswer `json:"poll_answer,omitempty"`
MyChatMember *ChatMemberUpdated `json:"my_chat_member,omitempty"`
ChatMember *ChatMemberUpdated `json:"chat_member,omitempty"`
ChatJoinRequest *ChatJoinRequest `json:"chat_join_request,omitempty"`
ChatBoost *ChatBoostUpdated `json:"chat_boost,omitempty"`
RemovedChatBoost *ChatBoostRemoved `json:"removed_chat_boost,omitempty"`
}
type InlineQuery struct {
@@ -102,6 +132,54 @@ type Audio struct {
Thumbnail *PhotoSize `json:"thumbnail,omitempty"`
}
type PollOption struct {
Text string `json:"text"`
TextEntities []MessageEntity `json:"text_entities"`
VoterCount int `json:"voter_count"`
}
type Poll struct {
ID string `json:"id"`
Question string `json:"question"`
QuestionEntities []MessageEntity `json:"question_entities"`
Options []PollOption `json:"options"`
TotalVoterCount int `json:"total_voter_count"`
IsClosed bool `json:"is_closed"`
IsAnonymous bool `json:"is_anonymous"`
Type PollType `json:"type"`
AllowsMultipleAnswers bool `json:"allows_multiple_answers"`
CorrectOptionID *int `json:"correct_option_id,omitempty"`
Explanation *string `json:"explanation,omitempty"`
ExplanationEntities []MessageEntity `json:"explanation_entities,omitempty"`
OpenPeriod int `json:"open_period,omitempty"`
CloseDate int `json:"close_date,omitempty"`
}
type PollAnswer struct {
PollID string `json:"poll_id"`
VoterChat Chat `json:"voter_chat"`
User User `json:"user"`
OptionIDS []int `json:"option_ids"`
}
type ChatMemberUpdated struct {
Chat Chat `json:"chat"`
From User `json:"from"`
Date int64 `json:"date"`
OldChatMember ChatMember `json:"old_chat_member"`
NewChatMember ChatMember `json:"new_chat_member"`
InviteLink *ChatInviteLink `json:"invite_link,omitempty"`
ViaJoinRequest *bool `json:"via_join_request,omitempty"`
ViaChatFolderInviteLink *bool `json:"via_chat_folder_invite_link,omitempty"`
}
type ChatJoinRequest struct {
Chat Chat `json:"chat"`
From User `json:"from"`
UserChatID int `json:"user_chat_id"`
Date int64 `json:"date"`
Bio *string `json:"bio,omitempty"`
InviteLink *ChatInviteLink `json:"invite_link,omitempty"`
}
type Location struct {
Latitude float64 `json:"latitude"`
Longitude float64 `json:"longitude"`