|
| 1 | +package botapi |
| 2 | + |
| 3 | +// ChatMember is a sealed union describing one member of a chat. The concrete |
| 4 | +// type corresponds to the member's status. |
| 5 | +// |
| 6 | +// Concrete variants: *ChatMemberOwner, *ChatMemberAdministrator, |
| 7 | +// *ChatMemberMember, *ChatMemberRestricted, *ChatMemberLeft, *ChatMemberBanned. |
| 8 | +type ChatMember interface { |
| 9 | + isChatMember() |
| 10 | +} |
| 11 | + |
| 12 | +// ChatMemberOwner is the chat creator. |
| 13 | +type ChatMemberOwner struct { |
| 14 | + Status ChatMemberStatus `json:"status"` |
| 15 | + User User `json:"user"` |
| 16 | + IsAnonymous bool `json:"is_anonymous,omitempty"` |
| 17 | + CustomTitle string `json:"custom_title,omitempty"` |
| 18 | +} |
| 19 | + |
| 20 | +// ChatMemberAdministrator is a chat administrator with granted privileges. |
| 21 | +type ChatMemberAdministrator struct { |
| 22 | + Status ChatMemberStatus `json:"status"` |
| 23 | + User User `json:"user"` |
| 24 | + CanBeEdited bool `json:"can_be_edited,omitempty"` |
| 25 | + IsAnonymous bool `json:"is_anonymous,omitempty"` |
| 26 | + CanManageChat bool `json:"can_manage_chat,omitempty"` |
| 27 | + CanDeleteMessages bool `json:"can_delete_messages,omitempty"` |
| 28 | + CanManageVideoChats bool `json:"can_manage_video_chats,omitempty"` |
| 29 | + CanRestrictMembers bool `json:"can_restrict_members,omitempty"` |
| 30 | + CanPromoteMembers bool `json:"can_promote_members,omitempty"` |
| 31 | + CanChangeInfo bool `json:"can_change_info,omitempty"` |
| 32 | + CanInviteUsers bool `json:"can_invite_users,omitempty"` |
| 33 | + CanPostMessages bool `json:"can_post_messages,omitempty"` |
| 34 | + CanEditMessages bool `json:"can_edit_messages,omitempty"` |
| 35 | + CanPinMessages bool `json:"can_pin_messages,omitempty"` |
| 36 | + CustomTitle string `json:"custom_title,omitempty"` |
| 37 | +} |
| 38 | + |
| 39 | +// ChatMemberMember is an ordinary member with no special restrictions. |
| 40 | +type ChatMemberMember struct { |
| 41 | + Status ChatMemberStatus `json:"status"` |
| 42 | + User User `json:"user"` |
| 43 | + UntilDate int `json:"until_date,omitempty"` |
| 44 | +} |
| 45 | + |
| 46 | +// ChatMemberRestricted is a member subject to restrictions. |
| 47 | +type ChatMemberRestricted struct { |
| 48 | + Status ChatMemberStatus `json:"status"` |
| 49 | + User User `json:"user"` |
| 50 | + IsMember bool `json:"is_member,omitempty"` |
| 51 | + CanSendMessages bool `json:"can_send_messages,omitempty"` |
| 52 | + CanSendMediaMessages bool `json:"can_send_media_messages,omitempty"` |
| 53 | + CanSendPolls bool `json:"can_send_polls,omitempty"` |
| 54 | + CanSendOtherMessages bool `json:"can_send_other_messages,omitempty"` |
| 55 | + CanAddWebPagePreviews bool `json:"can_add_web_page_previews,omitempty"` |
| 56 | + CanChangeInfo bool `json:"can_change_info,omitempty"` |
| 57 | + CanInviteUsers bool `json:"can_invite_users,omitempty"` |
| 58 | + CanPinMessages bool `json:"can_pin_messages,omitempty"` |
| 59 | + UntilDate int `json:"until_date,omitempty"` |
| 60 | +} |
| 61 | + |
| 62 | +// ChatMemberLeft is a user who is not and was not a member of the chat. |
| 63 | +type ChatMemberLeft struct { |
| 64 | + Status ChatMemberStatus `json:"status"` |
| 65 | + User User `json:"user"` |
| 66 | +} |
| 67 | + |
| 68 | +// ChatMemberBanned is a user banned from the chat. |
| 69 | +type ChatMemberBanned struct { |
| 70 | + Status ChatMemberStatus `json:"status"` |
| 71 | + User User `json:"user"` |
| 72 | + UntilDate int `json:"until_date,omitempty"` |
| 73 | +} |
| 74 | + |
| 75 | +func (*ChatMemberOwner) isChatMember() {} |
| 76 | +func (*ChatMemberAdministrator) isChatMember() {} |
| 77 | +func (*ChatMemberMember) isChatMember() {} |
| 78 | +func (*ChatMemberRestricted) isChatMember() {} |
| 79 | +func (*ChatMemberLeft) isChatMember() {} |
| 80 | +func (*ChatMemberBanned) isChatMember() {} |
| 81 | + |
| 82 | +// ChatInviteLink represents an invite link for a chat. |
| 83 | +type ChatInviteLink struct { |
| 84 | + InviteLink string `json:"invite_link"` |
| 85 | + Creator User `json:"creator"` |
| 86 | + CreatesJoinRequest bool `json:"creates_join_request,omitempty"` |
| 87 | + IsPrimary bool `json:"is_primary,omitempty"` |
| 88 | + IsRevoked bool `json:"is_revoked,omitempty"` |
| 89 | + Name string `json:"name,omitempty"` |
| 90 | + ExpireDate int `json:"expire_date,omitempty"` |
| 91 | + MemberLimit int `json:"member_limit,omitempty"` |
| 92 | + PendingJoinRequestCount int `json:"pending_join_request_count,omitempty"` |
| 93 | +} |
| 94 | + |
| 95 | +// ChatMemberUpdated represents a change in the status of a chat member. |
| 96 | +type ChatMemberUpdated struct { |
| 97 | + Chat Chat `json:"chat"` |
| 98 | + From User `json:"from"` |
| 99 | + Date int `json:"date"` |
| 100 | + OldChatMember ChatMember `json:"old_chat_member"` |
| 101 | + NewChatMember ChatMember `json:"new_chat_member"` |
| 102 | + InviteLink *ChatInviteLink `json:"invite_link,omitempty"` |
| 103 | +} |
0 commit comments