diff options
author | Ivanik <ivan170102@gmail.com> | 2021-01-29 04:25:14 +0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-29 00:25:14 +0100 |
commit | 8764be74616bde87bbbf6c32901cd9f43264d1e0 (patch) | |
tree | 88902ba17d6a6d245cadb7e0b277bee7ef424f99 /vendor/github.com/SevereCloud/vksdk/v2/object/groups.go | |
parent | 5dd15ef8e716c65accb6cd021095c0e19913d55f (diff) | |
download | matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.tar.gz matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.tar.bz2 matterbridge-msglm-8764be74616bde87bbbf6c32901cd9f43264d1e0.zip |
Add vk bridge (#1372)
* Add vk bridge
* Vk bridge attachments
* Vk bridge forwarded messages
* Vk bridge sample config and code cleanup
* Vk bridge add vendor
* Vk bridge message edit
* Vk bridge: fix fetching names of other bots
* Vk bridge: code cleanup
* Vk bridge: fix shadows declaration
* Vk bridge: remove UseFileURL
Diffstat (limited to 'vendor/github.com/SevereCloud/vksdk/v2/object/groups.go')
-rw-r--r-- | vendor/github.com/SevereCloud/vksdk/v2/object/groups.go | 807 |
1 files changed, 807 insertions, 0 deletions
diff --git a/vendor/github.com/SevereCloud/vksdk/v2/object/groups.go b/vendor/github.com/SevereCloud/vksdk/v2/object/groups.go new file mode 100644 index 00000000..b66c1ee6 --- /dev/null +++ b/vendor/github.com/SevereCloud/vksdk/v2/object/groups.go @@ -0,0 +1,807 @@ +package object // import "github.com/SevereCloud/vksdk/v2/object" + +import ( + "encoding/json" + "fmt" + "reflect" +) + +// GroupsAddress WorkInfoStatus of information about timetable. +const ( + WorkStatusNoInformation = "no_information" + WorkStatusTemporarilyClosed = "temporarily_closed" + WorkStatusAlwaysOpened = "always_opened" + WorkStatusTimetable = "timetable" + WorkStatusForeverClosed = "forever_closed" +) + +// GroupsAddress struct. +type GroupsAddress struct { + // Additional address to the place (6 floor, left door). + AdditionalAddress string `json:"additional_address"` + Address string `json:"address"` // String address to the place (Nevsky, 28) + CityID int `json:"city_id"` // City id of address + CountryID int `json:"country_id"` // Country id of address + Distance int `json:"distance"` // Distance from the point + ID int `json:"id"` // Address id + Latitude float64 `json:"latitude"` // Address latitude + Longitude float64 `json:"longitude"` // Address longitude + MetroStationID int `json:"metro_station_id"` // Metro id of address + Phone string `json:"phone"` // Address phone + TimeOffset int `json:"time_offset"` // Time offset int minutes from utc time + Timetable GroupsAddressTimetable `json:"timetable"` // Week timetable for the address + Title string `json:"title"` // Title of the place (Zinger, etc) + WorkInfoStatus string `json:"work_info_status"` // Status of information about timetable +} + +// GroupsAddressTimetable Timetable for a week. +type GroupsAddressTimetable struct { + Fri GroupsAddressTimetableDay `json:"fri"` // Timetable for friday + Mon GroupsAddressTimetableDay `json:"mon"` // Timetable for monday + Sat GroupsAddressTimetableDay `json:"sat"` // Timetable for saturday + Sun GroupsAddressTimetableDay `json:"sun"` // Timetable for sunday + Thu GroupsAddressTimetableDay `json:"thu"` // Timetable for thursday + Tue GroupsAddressTimetableDay `json:"tue"` // Timetable for tuesday + Wed GroupsAddressTimetableDay `json:"wed"` // Timetable for wednesday +} + +// GroupsAddressTimetableDay Timetable for one day. +type GroupsAddressTimetableDay struct { + BreakCloseTime int `json:"break_close_time"` // Close time of the break in minutes + BreakOpenTime int `json:"break_open_time"` // Start time of the break in minutes + CloseTime int `json:"close_time"` // Close time in minutes + OpenTime int `json:"open_time"` // Open time in minutes +} + +// GroupsAddressesInfo struct. +type GroupsAddressesInfo struct { + IsEnabled BaseBoolInt `json:"is_enabled"` // Information whether addresses is enabled + MainAddressID int `json:"main_address_id"` // Main address id for group +} + +// GroupsGroup AdminLevel type. +const ( + GroupsAdminLevelModerator = iota + GroupsAdminLevelEditor + GroupsAdminLevelAdministrator +) + +// GroupsGroup MainSection type. +const ( + GroupsMainSectionAbsent = iota + GroupsMainSectionPhotos + GroupsMainSectionTopics + GroupsMainSectionAudio + GroupsMainSectionVideo + GroupsMainSectionMarket +) + +// GroupsGroup MemberStatus(events_event_attach, newsfeed_event_activity). +const ( + GroupsMemberStatusNotMember = iota + GroupsMemberStatusMember + GroupsMemberStatusNotSure + GroupsMemberStatusDeclined + GroupsMemberStatusHasSentRequest + GroupsMemberStatusInvited +) + +// GroupsGroup Access or IsClosed type. +const ( + GroupsGroupOpen = iota + GroupsGroupClosed + GroupsGroupPrivate +) + +// GroupsGroup AgeLimits. +const ( + GroupsAgeLimitsNo = iota + GroupsAgeLimitsOver16 + GroupsAgeLimitsOver18 +) + +// GroupsGroup type. +const ( + GroupsTypeGroup = "group" + GroupsTypePage = "page" + GroupsTypeEvent = "event" +) + +// GroupsGroup struct. +type GroupsGroup struct { + AdminLevel int `json:"admin_level"` + Deactivated string `json:"deactivated"` // Information whether community is banned + FinishDate int `json:"finish_date"` // Finish date in Unixtime format + ID int `json:"id"` // Community ID + Name string `json:"name"` // Community name + Photo100 string `json:"photo_100"` // URL of square photo of the community with 100 pixels in width + Photo200 string `json:"photo_200"` // URL of square photo of the community with 200 pixels in width + Photo50 string `json:"photo_50"` // URL of square photo of the community with 50 pixels in width + ScreenName string `json:"screen_name"` // Domain of the community page + StartDate int `json:"start_date"` // Start date in Unixtime format + Type string `json:"type"` + Market GroupsMarketInfo `json:"market"` + MemberStatus int `json:"member_status"` // Current user's member status + IsClosed int `json:"is_closed"` + City BaseObject `json:"city"` + Country BaseCountry `json:"country"` + + // Information whether current user is administrator. + IsAdmin BaseBoolInt `json:"is_admin"` + + // Information whether current user is advertiser. + IsAdvertiser BaseBoolInt `json:"is_advertiser"` + + // Information whether current user is member. + IsMember BaseBoolInt `json:"is_member"` + + // Information whether community is in faves. + IsFavorite BaseBoolInt `json:"is_favorite"` + + // Information whether community is adult. + IsAdult BaseBoolInt `json:"is_adult"` + + // Information whether current user is subscribed. + IsSubscribed BaseBoolInt `json:"is_subscribed"` + + // Information whether current user can post on community's wall. + CanPost BaseBoolInt `json:"can_post"` + + // Information whether current user can see all posts on community's wall. + CanSeeAllPosts BaseBoolInt `json:"can_see_all_posts"` + + // Information whether current user can create topic. + CanCreateTopic BaseBoolInt `json:"can_create_topic"` + + // Information whether current user can upload video. + CanUploadVideo BaseBoolInt `json:"can_upload_video"` + + // Information whether current user can upload doc. + CanUploadDoc BaseBoolInt `json:"can_upload_doc"` + + // Information whether community has photo. + HasPhoto BaseBoolInt `json:"has_photo"` + + // Information whether current user can send a message to community. + CanMessage BaseBoolInt `json:"can_message"` + + // Information whether community can send a message to current user. + IsMessagesBlocked BaseBoolInt `json:"is_messages_blocked"` + + // Information whether community can send notifications by phone number to current user. + CanSendNotify BaseBoolInt `json:"can_send_notify"` + + // Information whether current user is subscribed to podcasts. + IsSubscribedPodcasts BaseBoolInt `json:"is_subscribed_podcasts"` + + // Owner in whitelist or not. + CanSubscribePodcasts BaseBoolInt `json:"can_subscribe_podcasts"` + + // Can subscribe to wall. + CanSubscribePosts BaseBoolInt `json:"can_subscribe_posts"` + + // Information whether community has market app. + HasMarketApp BaseBoolInt `json:"has_market_app"` + IsHiddenFromFeed BaseBoolInt `json:"is_hidden_from_feed"` + IsMarketCartEnabled BaseBoolInt `json:"is_market_cart_enabled"` + Verified BaseBoolInt `json:"verified"` // Information whether community is verified + + // Information whether the community has a fire pictogram. + Trending BaseBoolInt `json:"trending"` + Description string `json:"description"` // Community description + WikiPage string `json:"wiki_page"` // Community's main wiki page title + MembersCount int `json:"members_count"` // Community members number + Counters GroupsCountersGroup `json:"counters"` + Cover GroupsCover `json:"cover"` + + // Type of group, start date of event or category of public page. + Activity string `json:"activity"` + FixedPost int `json:"fixed_post"` // Fixed post ID + Status string `json:"status"` // Community status + MainAlbumID int `json:"main_album_id"` // Community's main photo album ID + Links []GroupsLinksItem `json:"links"` + Contacts []GroupsContactsItem `json:"contacts"` + Site string `json:"site"` // Community's website + MainSection int `json:"main_section"` + OnlineStatus GroupsOnlineStatus `json:"online_status"` // Status of replies in community messages + AgeLimits int `json:"age_limits"` // Information whether age limit + BanInfo GroupsGroupBanInfo `json:"ban_info"` // User ban info + Addresses GroupsAddressesInfo `json:"addresses"` // Info about addresses in Groups + LiveCovers GroupsLiveCovers `json:"live_covers"` + CropPhoto UsersCropPhoto `json:"crop_photo"` + Wall int `json:"wall"` + ActionButton GroupsActionButton `json:"action_button"` + TrackCode string `json:"track_code"` + PublicDateLabel string `json:"public_date_label"` + AuthorID int `json:"author_id"` + Phone string `json:"phone"` +} + +// ToMention return mention. +func (group GroupsGroup) ToMention() string { + return fmt.Sprintf("[club%d|%s]", group.ID, group.Name) +} + +// GroupsLiveCovers struct. +type GroupsLiveCovers struct { + IsEnabled BaseBoolInt `json:"is_enabled"` + IsScalable BaseBoolInt `json:"is_scalable"` + StoryIds []string `json:"story_ids"` +} + +// GroupsBanInfo reason type. +const ( + GroupsBanReasonOther = iota + GroupsBanReasonSpam + GroupsBanReasonVerbalAbuse + GroupsBanReasonStrongLanguage + GroupsBanReasonFlood +) + +// GroupsBanInfo struct. +type GroupsBanInfo struct { + AdminID int `json:"admin_id"` // Administrator ID + Comment string `json:"comment"` // Comment for a ban + Date int `json:"date"` // Date when user has been added to blacklist in Unixtime + EndDate int `json:"end_date"` // Date when user will be removed from blacklist in Unixtime + Reason int `json:"reason"` + CommentVisible BaseBoolInt `json:"comment_visible"` +} + +// GroupsCallbackServer struct. +type GroupsCallbackServer struct { + CreatorID int `json:"creator_id"` + ID int `json:"id"` + SecretKey string `json:"secret_key"` + Status string `json:"status"` + Title string `json:"title"` + URL string `json:"url"` +} + +// GroupsCallbackSettings struct. +type GroupsCallbackSettings struct { + APIVersion string `json:"api_version"` // API version used for the events + Events GroupsLongPollEvents `json:"events"` +} + +// GroupsContactsItem struct. +type GroupsContactsItem struct { + Desc string `json:"desc"` // Contact description + Email string `json:"email"` // Contact email + Phone string `json:"phone"` // Contact phone + UserID int `json:"user_id"` // User ID +} + +// GroupsCountersGroup struct. +type GroupsCountersGroup struct { + Addresses int `json:"addresses"` // Addresses number + Albums int `json:"albums"` // Photo albums number + Articles int `json:"articles"` // Articles number + Audios int `json:"audios"` // Audios number + Docs int `json:"docs"` // Docs number + Market int `json:"market"` // Market items number + Photos int `json:"photos"` // Photos number + Topics int `json:"topics"` // Topics number + Videos int `json:"videos"` // Videos number + Narratives int `json:"narratives"` // Narratives number +} + +// GroupsCover struct. +type GroupsCover struct { + Enabled BaseBoolInt `json:"enabled"` // Information whether cover is enabled + Images []BaseImage `json:"images"` +} + +// GroupsGroupBanInfo struct. +type GroupsGroupBanInfo struct { + Comment string `json:"comment"` // Ban comment + EndDate int `json:"end_date"` // End date of ban in Unixtime +} + +// GroupsGroupCategory struct. +type GroupsGroupCategory struct { + ID int `json:"id"` // Category ID + Name string `json:"name"` // Category name + Subcategories []BaseObjectWithName `json:"subcategories"` +} + +// GroupsGroupCategoryFull struct. +type GroupsGroupCategoryFull struct { + ID int `json:"id"` // Category ID + Name string `json:"name"` // Category name + PageCount int `json:"page_count"` // Pages number + PagePreviews []GroupsGroup `json:"page_previews"` + Subcategories []GroupsGroupCategoryFull `json:"subcategories"` +} + +// GroupsGroupCategoryType struct. +type GroupsGroupCategoryType struct { + ID int `json:"id"` + Name string `json:"name"` +} + +// GroupsGroupLink struct. +type GroupsGroupLink struct { + Desc string `json:"desc"` // Link description + EditTitle BaseBoolInt `json:"edit_title"` // Information whether the title can be edited + ImageProcessing BaseBoolInt `json:"image_processing"` // Information whether the image on processing + Name string `json:"name"` + ID int `json:"id"` // Link ID + URL string `json:"url"` // Link URL +} + +// GroupsGroupPublicCategoryList struct. +type GroupsGroupPublicCategoryList struct { + ID int `json:"id"` + Name string `json:"name"` + Subcategories []GroupsGroupCategoryType `json:"subcategories"` +} + +// GroupsGroupSettings Photos type. +const ( + GroupsGroupPhotosDisabled = iota + GroupsGroupPhotosOpen + GroupsGroupPhotosLimited +) + +// GroupsGroupSettings Subject type. +const ( + _ = iota + GroupsGroupSubjectAuto + GroupsGroupSubjectActivityHolidays + GroupsGroupSubjectBusiness + GroupsGroupSubjectPets + GroupsGroupSubjectHealth + GroupsGroupSubjectDatingAndCommunication + GroupsGroupSubjectGames + GroupsGroupSubjectIt + GroupsGroupSubjectCinema + GroupsGroupSubjectBeautyAndFashion + GroupsGroupSubjectCooking + GroupsGroupSubjectArtAndCulture + GroupsGroupSubjectLiterature + GroupsGroupSubjectMobileServicesAndInternet + GroupsGroupSubjectMusic + GroupsGroupSubjectScienceAndTechnology + GroupsGroupSubjectRealEstate + GroupsGroupSubjectNewsAndMedia + GroupsGroupSubjectSecurity + GroupsGroupSubjectEducation + GroupsGroupSubjectHomeAndRenovations + GroupsGroupSubjectPolitics + GroupsGroupSubjectFood + GroupsGroupSubjectIndustry + GroupsGroupSubjectTravel + GroupsGroupSubjectWork + GroupsGroupSubjectEntertainment + GroupsGroupSubjectReligion + GroupsGroupSubjectFamily + GroupsGroupSubjectSports + GroupsGroupSubjectInsurance + GroupsGroupSubjectTelevision + GroupsGroupSubjectGoodsAndServices + GroupsGroupSubjectHobbies + GroupsGroupSubjectFinance + GroupsGroupSubjectPhoto + GroupsGroupSubjectEsoterics + GroupsGroupSubjectElectronicsAndAppliances + GroupsGroupSubjectErotic + GroupsGroupSubjectHumor + GroupsGroupSubjectSocietyHumanities + GroupsGroupSubjectDesignAndGraphics +) + +// GroupsGroupSettings Topics type. +const ( + GroupsGroupTopicsDisabled = iota + GroupsGroupTopicsOpen + GroupsGroupTopicsLimited +) + +// GroupsGroupSettings Docs type. +const ( + GroupsGroupDocsDisabled = iota + GroupsGroupDocsOpen + GroupsGroupDocsLimited +) + +// GroupsGroupSettings Audio type. +const ( + GroupsGroupAudioDisabled = iota + GroupsGroupAudioOpen + GroupsGroupAudioLimited +) + +// GroupsGroupSettings Video type. +const ( + GroupsGroupVideoDisabled = iota + GroupsGroupVideoOpen + GroupsGroupVideoLimited +) + +// GroupsGroupSettings Wall type. +const ( + GroupsGroupWallDisabled = iota + GroupsGroupWallOpen + GroupsGroupWallLimited + GroupsGroupWallClosed +) + +// GroupsGroupSettings Wiki type. +const ( + GroupsGroupWikiDisabled = iota + GroupsGroupWikiOpen + GroupsGroupWikiLimited +) + +// GroupsGroupSettings struct. +type GroupsGroupSettings struct { + Access int `json:"access"` // Community access settings + Address string `json:"address"` // Community's page domain + Audio int `json:"audio"` // Audio settings + Description string `json:"description"` // Community description + Docs int `json:"docs"` // Docs settings + ObsceneWords []string `json:"obscene_words"` // The list of stop words + Photos int `json:"photos"` // Photos settings + PublicCategory int `json:"public_category"` // Information about the group category + PublicCategoryList []GroupsGroupPublicCategoryList `json:"public_category_list"` + + // Information about the group subcategory. + PublicSubcategory int `json:"public_subcategory"` + Rss string `json:"rss"` // URL of the RSS feed + Subject int `json:"subject"` // Community subject ID + SubjectList []GroupsSubjectItem `json:"subject_list"` + Title string `json:"title"` // Community title + Topics int `json:"topics"` // Topics settings + Video int `json:"video"` // Video settings + Wall int `json:"wall"` // Wall settings + Website string `json:"website"` // Community website + Wiki int `json:"wiki"` // Wiki settings + CountryID int `json:"country_id"` + CityID int `json:"city_id"` + Messages int `json:"messages"` + Articles int `json:"articles"` + Events int `json:"events"` + AgeLimits int `json:"age_limits"` + + // Information whether the obscene filter is enabled. + ObsceneFilter BaseBoolInt `json:"obscene_filter"` + + // Information whether the stopwords filter is enabled. + ObsceneStopwords BaseBoolInt `json:"obscene_stopwords"` + LiveCovers struct { + IsEnabled BaseBoolInt `json:"is_enabled"` + } `json:"live_covers"` + Market GroupsMarketInfo `json:"market"` + SectionsList []GroupsSectionsList `json:"sections_list"` + MainSection int `json:"main_section"` + SecondarySection int `json:"secondary_section"` + ActionButton GroupsActionButton `json:"action_button"` + Phone string `json:"phone"` +} + +// GroupsSectionsList struct. +type GroupsSectionsList struct { + ID int `json:"id"` + Name string `json:"name"` +} + +// UnmarshalJSON need for unmarshal dynamic array (Example: [1, "Фотографии"]) to struct. +// +// To unmarshal JSON into a value implementing the Unmarshaler interface, +// Unmarshal calls that value's UnmarshalJSON method. +// See more https://golang.org/pkg/encoding/json/#Unmarshal +func (g *GroupsSectionsList) UnmarshalJSON(data []byte) error { + var alias []interface{} + if err := json.Unmarshal(data, &alias); err != nil { + return err + } + + if len(alias) != 2 { + return &json.UnmarshalTypeError{ + Value: string(data), + Type: reflect.TypeOf((*GroupsSectionsList)(nil)), + } + } + + // default concrete Go type float64 for JSON numbers + id, ok := alias[0].(float64) + if !ok { + return &json.UnmarshalTypeError{ + Value: string(data), + Type: reflect.TypeOf((*GroupsSectionsList)(nil)), + Struct: "GroupsSectionsList", + Field: "ID", + } + } + + name, ok := alias[1].(string) + if !ok { + return &json.UnmarshalTypeError{ + Value: string(data), + Type: reflect.TypeOf((*GroupsSectionsList)(nil)), + Struct: "GroupsSectionsList", + Field: "Name", + } + } + + g.ID = int(id) + g.Name = name + + return nil +} + +// GroupsActionType for action_button in groups. +type GroupsActionType string + +// GroupsActionType enums. +const ( + GroupsActionTypeOpenURL GroupsActionType = "open_url" + GroupsActionTypeSendEmail GroupsActionType = "send_email" + GroupsActionTypeCallPhone GroupsActionType = "call_phone" + GroupsActionTypeCallVK GroupsActionType = "call_vk" + GroupsActionTypeOpenGroupApp GroupsActionType = "open_group_app" + GroupsActionTypeOpenApp GroupsActionType = "open_app" +) + +// GroupsActionButton struct. +type GroupsActionButton struct { + ActionType GroupsActionType `json:"action_type"` + Target GroupsActionButtonTarget `json:"target"` + Title string `json:"title"` + + // IsEnabled for GroupsGroupSettings + IsEnabled BaseBoolInt `json:"is_enabled,omitempty"` +} + +// GroupsActionButtonTarget struct. +type GroupsActionButtonTarget struct { + // ActionType == ActionTypeSendEmail + Email string `json:"email"` + + // ActionType == ActionTypeCallPhone + Phone string `json:"phone"` + + // ActionType == ActionTypeCallVK + UserID int `json:"user_id"` + + // ActionType == ActionTypeOpenURL + URL string `json:"url"` + + // ActionType == ActionTypeOpenApp + GoogleStoreURL string `json:"google_store_url"` + ItunesURL string `json:"itunes_url"` + // URL string `json:"url"` + + // ActionType == ActionTypeOpenGroupApp + AppID int `json:"app_id"` + + IsInternal BaseBoolInt `json:"is_internal"` +} + +// GroupsGroupXtrInvitedBy struct. +type GroupsGroupXtrInvitedBy struct { + AdminLevel int `json:"admin_level"` + ID int `json:"id"` // Community ID + InvitedBy int `json:"invited_by"` // Inviter ID + Name string `json:"name"` // Community name + Photo100 string `json:"photo_100"` // URL of square photo of the community with 100 pixels in width + Photo200 string `json:"photo_200"` // URL of square photo of the community with 200 pixels in width + Photo50 string `json:"photo_50"` // URL of square photo of the community with 50 pixels in width + ScreenName string `json:"screen_name"` // Domain of the community page + Type string `json:"type"` + IsClosed int `json:"is_closed"` // Information whether community is closed + IsAdmin BaseBoolInt `json:"is_admin"` // Information whether current user is manager + IsMember BaseBoolInt `json:"is_member"` // Information whether current user is member + IsAdvertiser BaseBoolInt `json:"is_advertiser"` // Information whether current user is advertiser +} + +// ToMention return mention. +func (group GroupsGroupXtrInvitedBy) ToMention() string { + return fmt.Sprintf("[club%d|%s]", group.ID, group.Name) +} + +// GroupsLinksItem struct. +type GroupsLinksItem struct { + Desc string `json:"desc"` // Link description + EditTitle BaseBoolInt `json:"edit_title"` // Information whether the link title can be edited + ID int `json:"id"` // Link ID + Name string `json:"name"` // Link title + Photo100 string `json:"photo_100"` // URL of square image of the link with 100 pixels in width + Photo50 string `json:"photo_50"` // URL of square image of the link with 50 pixels in width + URL string `json:"url"` // Link URL +} + +// GroupsLongPollEvents struct. +type GroupsLongPollEvents struct { + MessageNew BaseBoolInt `json:"message_new"` + MessageReply BaseBoolInt `json:"message_reply"` + PhotoNew BaseBoolInt `json:"photo_new"` + AudioNew BaseBoolInt `json:"audio_new"` + VideoNew BaseBoolInt `json:"video_new"` + WallReplyNew BaseBoolInt `json:"wall_reply_new"` + WallReplyEdit BaseBoolInt `json:"wall_reply_edit"` + WallReplyDelete BaseBoolInt `json:"wall_reply_delete"` + WallReplyRestore BaseBoolInt `json:"wall_reply_restore"` + WallPostNew BaseBoolInt `json:"wall_post_new"` + BoardPostNew BaseBoolInt `json:"board_post_new"` + BoardPostEdit BaseBoolInt `json:"board_post_edit"` + BoardPostRestore BaseBoolInt `json:"board_post_restore"` + BoardPostDelete BaseBoolInt `json:"board_post_delete"` + PhotoCommentNew BaseBoolInt `json:"photo_comment_new"` + PhotoCommentEdit BaseBoolInt `json:"photo_comment_edit"` + PhotoCommentDelete BaseBoolInt `json:"photo_comment_delete"` + PhotoCommentRestore BaseBoolInt `json:"photo_comment_restore"` + VideoCommentNew BaseBoolInt `json:"video_comment_new"` + VideoCommentEdit BaseBoolInt `json:"video_comment_edit"` + VideoCommentDelete BaseBoolInt `json:"video_comment_delete"` + VideoCommentRestore BaseBoolInt `json:"video_comment_restore"` + MarketCommentNew BaseBoolInt `json:"market_comment_new"` + MarketCommentEdit BaseBoolInt `json:"market_comment_edit"` + MarketCommentDelete BaseBoolInt `json:"market_comment_delete"` + MarketCommentRestore BaseBoolInt `json:"market_comment_restore"` + MarketOrderNew BaseBoolInt `json:"market_order_new"` + MarketOrderEdit BaseBoolInt `json:"market_order_edit"` + PollVoteNew BaseBoolInt `json:"poll_vote_new"` + GroupJoin BaseBoolInt `json:"group_join"` + GroupLeave BaseBoolInt `json:"group_leave"` + GroupChangeSettings BaseBoolInt `json:"group_change_settings"` + GroupChangePhoto BaseBoolInt `json:"group_change_photo"` + GroupOfficersEdit BaseBoolInt `json:"group_officers_edit"` + MessageAllow BaseBoolInt `json:"message_allow"` + MessageDeny BaseBoolInt `json:"message_deny"` + WallRepost BaseBoolInt `json:"wall_repost"` + UserBlock BaseBoolInt `json:"user_block"` + UserUnblock BaseBoolInt `json:"user_unblock"` + MessageEdit BaseBoolInt `json:"message_edit"` + MessageTypingState BaseBoolInt `json:"message_typing_state"` + LeadFormsNew BaseBoolInt `json:"lead_forms_new"` + LikeAdd BaseBoolInt `json:"like_add"` + LikeRemove BaseBoolInt `json:"like_remove"` + VkpayTransaction BaseBoolInt `json:"vkpay_transaction"` + AppPayload BaseBoolInt `json:"app_payload"` + MessageRead BaseBoolInt `json:"message_read"` + MessageEvent BaseBoolInt `json:"message_event"` + DonutSubscriptionCreate BaseBoolInt `json:"donut_subscription_create"` + DonutSubscriptionProlonged BaseBoolInt `json:"donut_subscription_prolonged"` + DonutSubscriptionExpired BaseBoolInt `json:"donut_subscription_expired"` + DonutSubscriptionCancelled BaseBoolInt `json:"donut_subscription_cancelled"` + DonutSubscriptionPriceChanged BaseBoolInt `json:"donut_subscription_price_changed"` + DonutMoneyWithdraw BaseBoolInt `json:"donut_money_withdraw"` + DonutMoneyWithdrawError BaseBoolInt `json:"donut_money_withdraw_error"` + + // Bugs + // MessagesEdit BaseBoolInt `json:"messages_edit"` + // WallNew BaseBoolInt `json:"wall_new"` + // WallNewReply BaseBoolInt `json:"wall_new_reply"` + // WallEditReply BaseBoolInt `json:"wall_edit_reply"` +} + +// GroupsLongPollServer struct. +type GroupsLongPollServer struct { + Key string `json:"key"` // Long Poll key + Server string `json:"server"` // Long Poll server address + Ts string `json:"ts"` // Number of the last event +} + +// TODO: func (g GroupsLongPollServer) GetURL() string { + +// GroupsLongPollSettings struct. +type GroupsLongPollSettings struct { + APIVersion string `json:"api_version"` // API version used for the events + Events GroupsLongPollEvents `json:"events"` + IsEnabled BaseBoolInt `json:"is_enabled"` // Shows whether Long Poll is enabled +} + +// GroupsMarketType ... +type GroupsMarketType string + +// Possible values. +const ( + GroupsMarketBasic GroupsMarketType = "basic" + GroupsMarketAdvanced GroupsMarketType = "advanced" +) + +// GroupsMarketInfo struct. +type GroupsMarketInfo struct { + // information about the type of store. Returned if the group includes + // the "Products" section. + Type GroupsMarketType `json:"type,omitempty"` + ContactID int `json:"contact_id,omitempty"` // Contact person ID + Currency MarketCurrency `json:"currency,omitempty"` + CurrencyText string `json:"currency_text,omitempty"` // Currency name + Enabled BaseBoolInt `json:"enabled"` // Information whether the market is enabled + CommentsEnabled BaseBoolInt `json:"comments_enabled,omitempty"` + CanMessage BaseBoolInt `json:"can_message,omitempty"` + MainAlbumID int `json:"main_album_id,omitempty"` // Main market album ID + PriceMax string `json:"price_max,omitempty"` // Maximum price + PriceMin string `json:"price_min,omitempty"` // Minimum price + Wiki PagesWikipageFull `json:"wiki,omitempty"` + CityIDs []int `json:"city_ids"` + CountryIDs []int `json:"country_ids,omitempty"` +} + +// GroupsGroupRole Role type. +const ( + GroupsGroupRoleModerator = "moderator" + GroupsGroupRoleEditor = "editor" + GroupsGroupRoleAdministrator = "administrator" + GroupsGroupRoleCreator = "creator" +) + +// GroupsMemberRole struct. +type GroupsMemberRole struct { + ID int `json:"id"` // User ID + Role string `json:"role"` + Permissions []string `json:"permissions"` +} + +// GroupsMemberRoleXtrUsersUser struct. +type GroupsMemberRoleXtrUsersUser struct { + UsersUser + Role string `json:"role"` + Permissions []string `json:"permissions"` +} + +// GroupsMemberStatus struct. +type GroupsMemberStatus struct { + Member BaseBoolInt `json:"member"` // Information whether user is a member of the group + UserID int `json:"user_id"` // User ID + Permissions []string `json:"permissions"` +} + +// GroupsMemberStatusFull struct. +type GroupsMemberStatusFull struct { + Invitation BaseBoolInt `json:"invitation"` // Information whether user has been invited to the group + Member BaseBoolInt `json:"member"` // Information whether user is a member of the group + Request BaseBoolInt `json:"request"` // Information whether user has send request to the group + CanInvite BaseBoolInt `json:"can_invite"` // Information whether user can be invite + CanRecall BaseBoolInt `json:"can_recall"` // Information whether user's invite to the group can be recalled + UserID int `json:"user_id"` // User ID +} + +// GroupsOnlineStatus Status type. +const ( + GroupsOnlineStatusTypeNone = "none" + GroupsOnlineStatusTypeOnline = "online" + GroupsOnlineStatusTypeAnswerMark = "answer_mark" +) + +// GroupsOnlineStatus struct. +type GroupsOnlineStatus struct { + Minutes int `json:"minutes"` // Estimated time of answer (for status = answer_mark) + Status string `json:"status"` +} + +// GroupsOwnerXtrBanInfo struct. +type GroupsOwnerXtrBanInfo struct { + BanInfo GroupsBanInfo `json:"ban_info"` + Group GroupsGroup `json:"group"` + Profile UsersUser `json:"profile"` + Type string `json:"type"` +} + +// GroupsSubjectItem struct. +type GroupsSubjectItem struct { + ID int `json:"id"` + Name string `json:"name"` +} + +// GroupsTokenPermissionSetting struct. +type GroupsTokenPermissionSetting struct { + Name string `json:"name"` + Setting int `json:"setting"` +} + +// GroupsTokenPermissions struct. +type GroupsTokenPermissions struct { + Mask int `json:"mask"` + Permissions []GroupsTokenPermissionSetting `json:"permissions"` +} + +// GroupsTag struct. +type GroupsTag struct { + ID int `json:"id"` + Name string `json:"name"` + Color string `json:"color"` +} |