Documentation ¶
Index ¶
- Constants
- Variables
- type ActiveEmote
- type ActiveEmoteFlag
- type AuditLog
- type AuditLogBuilder
- func (alb *AuditLogBuilder) AddChanges(changes ...*AuditLogChange) *AuditLogBuilder
- func (alb *AuditLogBuilder) SetActor(id primitive.ObjectID) *AuditLogBuilder
- func (alb *AuditLogBuilder) SetExtra(key string, value interface{}) *AuditLogBuilder
- func (alb *AuditLogBuilder) SetKind(kind AuditLogKind) *AuditLogBuilder
- func (alb *AuditLogBuilder) SetTargetID(id primitive.ObjectID) *AuditLogBuilder
- func (alb *AuditLogBuilder) SetTargetKind(kind ObjectKind) *AuditLogBuilder
- type AuditLogChange
- func (alc *AuditLogChange) WriteArrayAdded(values ...any) *AuditLogChange
- func (alc *AuditLogChange) WriteArrayRemoved(values ...any) *AuditLogChange
- func (alc *AuditLogChange) WriteArrayUpdated(values ...AuditLogChangeSingleValue) *AuditLogChange
- func (alc *AuditLogChange) WriteSingleValues(old any, new any) *AuditLogChange
- type AuditLogChangeArrayChange
- type AuditLogChangeFormat
- type AuditLogChangeSingleValue
- type AuditLogKind
- type Ban
- type BanBuilder
- func (bb BanBuilder) Initial() Ban
- func (bb BanBuilder) IsTainted() bool
- func (ub *BanBuilder) MarkAsTainted()
- func (bb *BanBuilder) SetActorID(id primitive.ObjectID) *BanBuilder
- func (bb *BanBuilder) SetEffects(a BanEffect) *BanBuilder
- func (bb *BanBuilder) SetExpireAt(t time.Time) *BanBuilder
- func (bb *BanBuilder) SetReason(s string) *BanBuilder
- func (bb *BanBuilder) SetVictimID(id primitive.ObjectID) *BanBuilder
- type BanEffect
- type BitField
- type Cosmetic
- type CosmeticData
- type CosmeticDataBadge
- type CosmeticDataPaint
- type CosmeticKind
- type CosmeticPaintDropShadow
- type CosmeticPaintFlair
- type CosmeticPaintFlairKind
- type CosmeticPaintGradient
- type CosmeticPaintGradientFunction
- type CosmeticPaintGradientRepeat
- type CosmeticPaintGradientStop
- type CosmeticPaintStroke
- type CosmeticPaintText
- type CosmeticPaintTextTransform
- type Emote
- type EmoteBuilder
- func (eb *EmoteBuilder) AddVersion(v EmoteVersion) *EmoteBuilder
- func (eb *EmoteBuilder) Initial() Emote
- func (eb *EmoteBuilder) InitialVersions() []EmoteVersion
- func (eb *EmoteBuilder) IsTainted() bool
- func (eb *EmoteBuilder) MarkAsTainted()
- func (eb *EmoteBuilder) RemoveVersion(id ObjectID) *EmoteBuilder
- func (eb *EmoteBuilder) SetFlags(sum BitField[EmoteFlag]) *EmoteBuilder
- func (eb *EmoteBuilder) SetName(name string) *EmoteBuilder
- func (eb *EmoteBuilder) SetOwnerID(id primitive.ObjectID) *EmoteBuilder
- func (eb *EmoteBuilder) SetTags(tags []string, validate bool) *EmoteBuilder
- func (eb *EmoteBuilder) UpdateVersion(id ObjectID, v EmoteVersion) *EmoteBuilder
- type EmoteFlag
- type EmoteLifecycle
- type EmoteSet
- type EmoteSetBuilder
- func (esb *EmoteSetBuilder) AddActiveEmote(id ObjectID, alias string, at time.Time, actorID *primitive.ObjectID) *EmoteSetBuilder
- func (esb *EmoteSetBuilder) AddOrigin(id ObjectID, weight int32) *EmoteSetBuilder
- func (esb *EmoteSetBuilder) Initial() *EmoteSet
- func (esb *EmoteSetBuilder) IsTainted() bool
- func (esb *EmoteSetBuilder) MarkAsTainted()
- func (esb *EmoteSetBuilder) RemoveActiveEmote(id ObjectID) (*EmoteSetBuilder, int)
- func (esb *EmoteSetBuilder) RemoveOrigin(id ObjectID) *EmoteSetBuilder
- func (esb *EmoteSetBuilder) SetCapacity(slots int32) *EmoteSetBuilder
- func (esb *EmoteSetBuilder) SetImmutable(b bool) *EmoteSetBuilder
- func (esb *EmoteSetBuilder) SetName(name string) *EmoteSetBuilder
- func (esb *EmoteSetBuilder) SetOrigins(origins []EmoteSetOrigin) *EmoteSetBuilder
- func (esb *EmoteSetBuilder) SetOwnerID(id ObjectID) *EmoteSetBuilder
- func (esb *EmoteSetBuilder) SetPrivileged(b bool) *EmoteSetBuilder
- func (esb *EmoteSetBuilder) SetTags(tags []string) *EmoteSetBuilder
- func (esb *EmoteSetBuilder) UpdateActiveEmote(id ObjectID, alias string) *EmoteSetBuilder
- type EmoteSetCondition
- type EmoteSetFlag
- type EmoteSetOrigin
- type EmoteSetValidator
- type EmoteState
- type EmoteValidator
- type EmoteVersion
- func (ev EmoteVersion) CountFiles(contentType string, omitStatic bool) int32
- func (ev EmoteVersion) GetFiles(contentType string, omitStatic bool) []ImageFile
- func (ev EmoteVersion) IsProcessing() bool
- func (ev EmoteVersion) IsUnavailable() bool
- func (e *EmoteVersion) Validator() EmoteVersionValidator
- type EmoteVersionState
- type EmoteVersionValidator
- type Entitlement
- type EntitlementApp
- type EntitlementBuilder
- func (b *EntitlementBuilder[D]) SetApp(app EntitlementApp) *EntitlementBuilder[D]
- func (b *EntitlementBuilder[D]) SetClaim(claim EntitlementClaim) *EntitlementBuilder[D]
- func (b *EntitlementBuilder[D]) SetCondition(cond EntitlementCondition) *EntitlementBuilder[D]
- func (b *EntitlementBuilder[D]) SetData(data D) *EntitlementBuilder[D]
- func (b *EntitlementBuilder[D]) SetKind(kind EntitlementKind) *EntitlementBuilder[D]
- func (b *EntitlementBuilder[D]) SetUserID(id primitive.ObjectID) *EntitlementBuilder[D]
- type EntitlementClaim
- type EntitlementCondition
- type EntitlementData
- type EntitlementDataBadge
- type EntitlementDataBase
- type EntitlementDataBaseSelectable
- type EntitlementDataEmoteSet
- type EntitlementDataPaint
- type EntitlementDataRole
- type EntitlementDataSubscription
- type EntitlementKind
- type ImageFile
- type ListItemAction
- type Message
- type MessageBuilder
- func (eb *MessageBuilder[D]) IsTainted() bool
- func (eb *MessageBuilder[D]) MarkAsTainted()
- func (mb *MessageBuilder[D]) SetAnonymous(b bool) *MessageBuilder[D]
- func (mb *MessageBuilder[D]) SetAuthorID(id primitive.ObjectID) *MessageBuilder[D]
- func (mb *MessageBuilder[D]) SetData(data D) *MessageBuilder[D]
- func (mb *MessageBuilder[D]) SetKind(kind MessageKind) *MessageBuilder[D]
- func (mb *MessageBuilder[D]) SetTimestamp(t time.Time) *MessageBuilder[D]
- type MessageComponent
- type MessageComponentBuilder
- func (mcb *MessageComponentBuilder) SetColor(c utils.Color) *MessageComponentBuilder
- func (mcb *MessageComponentBuilder) SetContent(c string) *MessageComponentBuilder
- func (mcb *MessageComponentBuilder) SetHeading(h uint8) *MessageComponentBuilder
- func (mcb *MessageComponentBuilder) SetLocale(l bool) *MessageComponentBuilder
- func (mcb *MessageComponentBuilder) SetType(t MessageComponentType) *MessageComponentBuilder
- func (mcb *MessageComponentBuilder) SetWeight(w uint8) *MessageComponentBuilder
- type MessageComponentType
- type MessageData
- type MessageDataEmoteComment
- type MessageDataInbox
- type MessageDataModRequest
- type MessageDataPlaceholder
- type MessageKind
- type MessageRead
- type Object
- type ObjectID
- type ObjectKind
- type Report
- type ReportBuilder
- func (rb *ReportBuilder) AddAssignee(id primitive.ObjectID) *ReportBuilder
- func (rb *ReportBuilder) AddNote(note ReportNote) *ReportBuilder
- func (rb *ReportBuilder) RemoveAssignee(id primitive.ObjectID) *ReportBuilder
- func (rb *ReportBuilder) SetBody(body string) *ReportBuilder
- func (rb *ReportBuilder) SetClosedAt(t time.Time) *ReportBuilder
- func (rb *ReportBuilder) SetCreatedAt(t time.Time) *ReportBuilder
- func (rb *ReportBuilder) SetLastUpdatedAt(t time.Time) *ReportBuilder
- func (rb *ReportBuilder) SetPriority(p int32) *ReportBuilder
- func (rb *ReportBuilder) SetReporterID(id primitive.ObjectID) *ReportBuilder
- func (rb *ReportBuilder) SetStatus(s ReportStatus) *ReportBuilder
- func (rb *ReportBuilder) SetSubject(subject string) *ReportBuilder
- func (rb *ReportBuilder) SetTargetID(id primitive.ObjectID) *ReportBuilder
- func (rb *ReportBuilder) SetTargetKind(kind ObjectKind) *ReportBuilder
- type ReportNote
- type ReportStatus
- type Role
- type RoleBuilder
- func (eb *RoleBuilder) Initial() Role
- func (rb *RoleBuilder) SetAllowed(allowed RolePermission) *RoleBuilder
- func (rb *RoleBuilder) SetColor(color utils.Color) *RoleBuilder
- func (rb *RoleBuilder) SetDenied(denied RolePermission) *RoleBuilder
- func (rb *RoleBuilder) SetName(name string) *RoleBuilder
- func (rb *RoleBuilder) SetPosition(pos int32) *RoleBuilder
- type RolePermission
- type System
- type SystemConfigExtension
- type SystemConfigExtensionCompat
- type SystemConfigExtensionCompatIssue
- type SystemConfigExtensionCompatIssueSeverity
- type SystemDefaultObject
- type UpdateMap
- func (u UpdateMap) AddToSet(key string, value UpdateValue) UpdateMap
- func (u UpdateMap) Clear()
- func (u UpdateMap) Has(operator, key string) bool
- func (u UpdateMap) Pull(key string, value UpdateValue) UpdateMap
- func (u UpdateMap) Push(key string, value UpdateValue) UpdateMap
- func (u UpdateMap) Set(key string, value UpdateValue) UpdateMap
- func (u UpdateMap) UndoSet(key string) UpdateMap
- type UpdateValue
- type User
- func (u *User) AddRoles(roles ...Role)
- func (u *User) FinalPermission() (total RolePermission)
- func (u *User) GetEditor(id primitive.ObjectID) (UserEditor, bool, int)
- func (u *User) GetHighestRole() Role
- func (u *User) HasPermission(bit RolePermission) bool
- func (u *User) InferUsername()
- func (u *User) SetDiscriminator(discrim string)
- func (u *User) SortRoles()
- func (e User) WebURL(origin string) string
- type UserAvatar
- type UserBuilder
- func (ub *UserBuilder) AddConnection(conn UserConnection[bson.Raw]) *UserBuilder
- func (ub *UserBuilder) AddEditor(id ObjectID, permissions UserEditorPermission, visible bool) (UserEditor, int, *UserBuilder)
- func (ub *UserBuilder) GetConnection(p UserConnectionPlatform, id ...string) (*UserConnectionBuilder[bson.Raw], int)
- func (ub *UserBuilder) Initial() *User
- func (ub *UserBuilder) IsTainted() bool
- func (ub *UserBuilder) MarkAsTainted()
- func (ub *UserBuilder) RemoveConnection(id string) (*UserBuilder, int)
- func (ub *UserBuilder) RemoveEditor(id ObjectID) (UserEditor, int, *UserBuilder)
- func (ub *UserBuilder) SetAvatarID(url string) *UserBuilder
- func (ub *UserBuilder) SetDiscriminator(discrim string) *UserBuilder
- func (ub *UserBuilder) SetDisplayName(s string) *UserBuilder
- func (ub *UserBuilder) SetEmail(email string) *UserBuilder
- func (ub *UserBuilder) SetUsername(username string) *UserBuilder
- func (ub *UserBuilder) UpdateConnection(id string, data bson.Raw) bool
- func (ub *UserBuilder) UpdateEditor(id ObjectID, permissions UserEditorPermission, visible bool) (UserEditor, int, *UserBuilder)
- type UserConnection
- type UserConnectionBuilder
- func (ucb *UserConnectionBuilder[D]) SetActiveEmoteSet(id ObjectID) *UserConnectionBuilder[D]
- func (ucb *UserConnectionBuilder[D]) SetData(data D) *UserConnectionBuilder[D]
- func (ucb *UserConnectionBuilder[D]) SetGrant(at string, rt string, ex int, sc []string) *UserConnectionBuilder[D]
- func (ucb *UserConnectionBuilder[D]) SetID(id string) *UserConnectionBuilder[D]
- func (ucb *UserConnectionBuilder[D]) SetLinkedAt(date time.Time) *UserConnectionBuilder[D]
- func (ucb *UserConnectionBuilder[D]) SetPlatform(platform UserConnectionPlatform) *UserConnectionBuilder[D]
- type UserConnectionData
- type UserConnectionDataDiscord
- type UserConnectionDataKick
- type UserConnectionDataTwitch
- type UserConnectionDataYoutube
- type UserConnectionGrant
- type UserConnectionList
- func (ucl UserConnectionList) Discord(filter ...string) (UserConnection[UserConnectionDataDiscord], int, error)
- func (ucl UserConnectionList) Get(id string) (UserConnection[bson.Raw], int)
- func (ucl UserConnectionList) Twitch(filter ...string) (UserConnection[UserConnectionDataTwitch], int, error)
- func (ucl UserConnectionList) YouTube(filter ...string) (UserConnection[UserConnectionDataYoutube], int, error)
- type UserConnectionPlatform
- type UserDiscriminator
- type UserEditor
- type UserEditorPermission
- type UserPresence
- type UserPresenceData
- type UserPresenceDataChannel
- type UserPresenceDataChannelFilter
- type UserPresenceEntitlement
- type UserPresenceKind
- type UserPresenceLocationDataWebPage
- type UserState
- type UserType
Constants ¶
const ( EmoteSetNameLengthLeast int = 48 EmoteSetNameLengthMost int = 3 )
const ( EntitlementKindSubscription = EntitlementKind("SUBSCRIPTION") // Subscription Entitlement EntitlementKindBadge = EntitlementKind("BADGE") // Badge Entitlement EntitlementKindPaint = EntitlementKind("PAINT") // Badge Entitlement EntitlementKindRole = EntitlementKind("ROLE") // Role Entitlement EntitlementKindEmoteSet = EntitlementKind("EMOTE_SET") // Emote Set Entitlement )
const ( RolePermissionAll = RolePermissionCreateEmote | RolePermissionEditEmote | RolePermissionEditEmoteSet | RolePermissionCreateReport | RolePermissionFeatureZeroWidthEmoteType | RolePermissionFeatureProfilePictureAnimation | RolePermissionManageBans | RolePermissionManageRoles | RolePermissionManageReports | RolePermissionEditAnyEmote | RolePermissionEditAnyEmoteSet | RolePermissionSuperAdministrator | RolePermissionManageContent | RolePermissionManageStack | RolePermissionManageCosmetics )
All permissions
Variables ¶
var ( RegExpEmoteName = regexp.MustCompile(`^[-_A-Za-z(!?&)$+:0-9]{2,100}$`) RegExpEmoteVersionName = regexp.MustCompile(`^[A-Za-z0-9\s]{2,40}$`) RegExpEmoteVersionDescription = regexp.MustCompile(`^[-_*=/\\"'\]\[}{@&~!?;:A-Za-z0-9\s]{3,240}$`) )
var BanEffectMap = map[string]BanEffect{ "NO_PERMISSIONS": BanEffectNoPermissions, "NO_AUTH": BanEffectNoAuth, "NO_OWNERSHIP": BanEffectNoOwnership, "MEMORY_HOLE": BanEffectMemoryHole, "IP_BLOCKED": BanEffectBlockedIP, }
var DeletedEmote = Emote{ ID: primitive.NilObjectID, OwnerID: DeletedUser.ID, Name: "*UnknownEmote", Flags: 0, Tags: []string{}, State: EmoteState{}, Versions: []EmoteVersion{}, ChildrenIDs: []primitive.ObjectID{}, Owner: &DeletedUser, }
var DeletedUser = User{ ID: primitive.NilObjectID, UserType: UserTypeSystem, Username: "*deleted_user", DisplayName: "*DeletedUser", Discriminator: "0000", RoleIDs: []primitive.ObjectID{}, Editors: []UserEditor{}, TokenVersion: 0, Connections: UserConnectionList{}, }
var NilRole = Role{ ID: primitive.NilObjectID, Name: "NULL", Position: 0, }
var RegExpEmoteSetName = regexp.MustCompile(`^[a-zA-Z0-9&'_-~# ]{1,40}$`)
var RevocationRole = Role{ ID: [12]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32}, Name: "NORIGHTS", Denied: RolePermissionAll, Position: 0, }
var SystemUser = User{ ID: [12]byte{96, 58, 221, 0, 209, 207, 107, 48, 44, 192, 226, 142}, UserType: UserTypeSystem, Username: "*system", DisplayName: "*System", Discriminator: "0001", RoleIDs: []primitive.ObjectID{}, Editors: []UserEditor{}, Connections: UserConnectionList{}, }
var UsernameRegex = regexp.MustCompile("[^a-zA-Z0-9_]+")
Functions ¶
This section is empty.
Types ¶
type ActiveEmote ¶
type ActiveEmote struct { ID primitive.ObjectID `json:"id" bson:"id"` Name string `json:"name" bson:"name"` Flags BitField[ActiveEmoteFlag] `json:"flags" bson:"flags"` Timestamp time.Time `json:"timestamp" bson:"timestamp"` TimestampUpdate *time.Time `json:"timestamp_update,omitempty" bson:"timestamp_update,omitempty"` MergedFromID primitive.ObjectID `json:"merged_from_id,omitempty" bson:"merged_from_id,omitempty"` MergedAt time.Time `json:"merged_at,omitempty" bson:"merged_at,omitempty"` ActorID primitive.ObjectID `json:"actor_id,omitempty" bson:"actor_id,omitempty"` Origin EmoteSetOrigin `json:"-" bson:"-"` Emote *Emote `json:"emote" bson:"emote,omitempty,skip"` Actor *User `json:"actor" bson:"actor,omitempty,skip"` }
type ActiveEmoteFlag ¶
type ActiveEmoteFlag int32
const ( ActiveEmoteFlagZeroWidth ActiveEmoteFlag = 1 << 0 // 1 - Emote is zero-width ActiveEmoteFlagPending ActiveEmoteFlag = 1 << 8 // 256 - Emote is pending review ActiveEmoteFlagOverrideTwitchGlobal ActiveEmoteFlag = 1 << 16 // 65536 - Overrides Twitch Global emotes with the same name ActiveEmoteFlagOverrideTwitchSubscriber ActiveEmoteFlag = 1 << 17 // 131072 - Overrides Twitch Subscriber emotes with the same name ActiveEmoteFlagOverrideBetterTTV ActiveEmoteFlag = 1 << 18 // 262144 - Overrides BetterTTV emotes with the same name ActiveEmoteFlagOverrideFrankerFaceZ ActiveEmoteFlag = 1 << 19 // 524288 - Overrides FrankerFaceZ emotes with the same name )
type AuditLog ¶
type AuditLog struct { ID primitive.ObjectID `json:"id" bson:"_id,omitempty"` Kind AuditLogKind `json:"kind" bson:"kind"` ActorID primitive.ObjectID `json:"actor_id" bson:"actor_id"` TargetID primitive.ObjectID `json:"target_id" bson:"target_id"` TargetKind ObjectKind `json:"target_kind" bson:"target_kind"` Changes []*AuditLogChange `json:"changes" bson:"changes"` Extra map[string]any `json:"extra,omitempty" bson:"extra,omitempty"` Reason string `json:"reason,omitempty" bson:"reason,omitempty"` }
type AuditLogBuilder ¶
func NewAuditLogBuilder ¶
func NewAuditLogBuilder(log AuditLog) *AuditLogBuilder
NewAuditLogBuilder creates a new Builder utility for an Audit Log
func (*AuditLogBuilder) AddChanges ¶
func (alb *AuditLogBuilder) AddChanges(changes ...*AuditLogChange) *AuditLogBuilder
AddChanges adds one or more changes in the audit log
func (*AuditLogBuilder) SetActor ¶
func (alb *AuditLogBuilder) SetActor(id primitive.ObjectID) *AuditLogBuilder
SetActor defines the ID of the responsible ('actor') user in the audit log
func (*AuditLogBuilder) SetExtra ¶
func (alb *AuditLogBuilder) SetExtra(key string, value interface{}) *AuditLogBuilder
SetExtra defines arbitrary extraneous data that may be helpful in some cases where changes cannot be explained with just old and new values
func (*AuditLogBuilder) SetKind ¶
func (alb *AuditLogBuilder) SetKind(kind AuditLogKind) *AuditLogBuilder
SetKind sets the kind of the audit log
func (*AuditLogBuilder) SetTargetID ¶
func (alb *AuditLogBuilder) SetTargetID(id primitive.ObjectID) *AuditLogBuilder
SetTargetID sets the id of the resource targeted in the audit log
func (*AuditLogBuilder) SetTargetKind ¶
func (alb *AuditLogBuilder) SetTargetKind(kind ObjectKind) *AuditLogBuilder
SetTargetKind sets the object kind of the resource targeted in the audit log
type AuditLogChange ¶
type AuditLogChange struct { Format AuditLogChangeFormat `json:"format" bson:"format"` Key string `json:"key" bson:"key"` Value bson.Raw `json:"value" bson:"value"` }
func NewAuditChange ¶
func NewAuditChange(key string) *AuditLogChange
func (*AuditLogChange) WriteArrayAdded ¶
func (alc *AuditLogChange) WriteArrayAdded(values ...any) *AuditLogChange
func (*AuditLogChange) WriteArrayRemoved ¶
func (alc *AuditLogChange) WriteArrayRemoved(values ...any) *AuditLogChange
func (*AuditLogChange) WriteArrayUpdated ¶
func (alc *AuditLogChange) WriteArrayUpdated(values ...AuditLogChangeSingleValue) *AuditLogChange
func (*AuditLogChange) WriteSingleValues ¶
func (alc *AuditLogChange) WriteSingleValues(old any, new any) *AuditLogChange
type AuditLogChangeArrayChange ¶
type AuditLogChangeArrayChange struct { Added []any `json:"added,omitempty" bson:"added,omitempty"` Removed []any `json:"removed,omitempty" bson:"removed,omitempty"` Updated []AuditLogChangeSingleValue `json:"updated,omitempty" bson:"updated,omitempty"` }
type AuditLogChangeFormat ¶
type AuditLogChangeFormat int8
const ( AuditLogChangeFormatSingleValue AuditLogChangeFormat = 1 AuditLogChangeFormatArrayChange AuditLogChangeFormat = 2 )
type AuditLogKind ¶
type AuditLogKind uint8
const ( AuditLogKindCreateEmote AuditLogKind = 1 // emote was created AuditLogKindDeleteEmote AuditLogKind = 2 // emote was deleted AuditLogKindDisableEmote AuditLogKind = 3 // emote was disabled AuditLogKindUpdateEmote AuditLogKind = 4 // emote was updated AuditLogKindMergeEmote AuditLogKind = 5 // emote was merged AuditLogKindUndoDeleteEmote AuditLogKind = 6 // deleted emote was restored AuditLogKindEnableEmote AuditLogKind = 7 // emote was enabled AuditLogKindProcessEmote AuditLogKind = 8 // a new processing job was ran for this emote AuditLogKindSignUserToken AuditLogKind = 20 // a user token was signed AuditLogKindSignCSRFToken AuditLogKind = 21 // a CSRF token was signed AuditLogKindRejectedAccess AuditLogKind = 26 // an attempt to access a privileged area was rejected AuditLogKindCreateUser AuditLogKind = 30 // user was created AuditLogKindDeleteUser AuditLogKind = 31 // user was deleted AuditLogKindBanUser AuditLogKind = 32 // user was banned AuditLogKindEditUser AuditLogKind = 33 // user was edited AuditLogKindUnbanUser AuditLogKind = 36 // user was unbanned AuditLogKindCreateEmoteSet AuditLogKind = 70 // emote set was created AuditLogKindUpdateEmoteSet AuditLogKind = 71 // emote set was updated AuditLogKindDeleteEmoteSet AuditLogKind = 72 // emote set was deleted // Range: 80-89 (Report) AuditLogKindCreateReport AuditLogKind = 80 AuditLogKindUpdateReport AuditLogKind = 81 // Range: 90-110 (Messaging) AuditLogKindReadMessage AuditLogKind = 90 )
type Ban ¶
type Ban struct { ID primitive.ObjectID `json:"id" bson:"_id,omitempty"` // The user who is affected by this ban VictimID primitive.ObjectID `json:"victim_id" bson:"victim_id"` // The user who created this ban ActorID primitive.ObjectID `json:"actor_id" bson:"actor_id"` // The reason for the ban Reason string `json:"reason" bson:"reason"` // The time at which the ban will expire ExpireAt time.Time `json:"expire_at" bson:"expire_at"` // The effects that this ban will have Effects BanEffect `json:"effects" bson:"effects"` Victim *User `json:"victim" bson:"victim,skip,omitempty"` Actor *User `json:"actor" bson:"actor,skip,omitempty"` }
type BanBuilder ¶
func NewBanBuilder ¶
func NewBanBuilder(ban Ban) *BanBuilder
NewRoleBuilder: create a new role builder
func (BanBuilder) Initial ¶
func (bb BanBuilder) Initial() Ban
Initial returns a pointer to the value first passed to this Builder
func (BanBuilder) IsTainted ¶
func (bb BanBuilder) IsTainted() bool
IsTainted returns whether or not this Builder has been mutated before
func (*BanBuilder) MarkAsTainted ¶
func (ub *BanBuilder) MarkAsTainted()
MarkAsTainted taints the builder, preventing it from being mutated again
func (*BanBuilder) SetActorID ¶
func (bb *BanBuilder) SetActorID(id primitive.ObjectID) *BanBuilder
func (*BanBuilder) SetEffects ¶
func (bb *BanBuilder) SetEffects(a BanEffect) *BanBuilder
func (*BanBuilder) SetExpireAt ¶
func (bb *BanBuilder) SetExpireAt(t time.Time) *BanBuilder
func (*BanBuilder) SetReason ¶
func (bb *BanBuilder) SetReason(s string) *BanBuilder
func (*BanBuilder) SetVictimID ¶
func (bb *BanBuilder) SetVictimID(id primitive.ObjectID) *BanBuilder
type BanEffect ¶
type BanEffect uint32
const ( // Strip the banned user of all permissions BanEffectNoPermissions BanEffect = 1 << 0 // Prevents the banned user from authenticating BanEffectNoAuth BanEffect = 1 << 1 // Any object owned by the banned user will no longer be returned by the API BanEffectNoOwnership BanEffect = 1 << 2 // The banned user is never returned by the API to non-privileged users BanEffectMemoryHole BanEffect = 1 << 3 // The banned user's IP will be blocked from accessing all services BanEffectBlockedIP BanEffect = 1 << 4 )
type Cosmetic ¶
type Cosmetic[D CosmeticData] struct { ID primitive.ObjectID `json:"id" bson:"_id"` Kind CosmeticKind `json:"kind" bson:"kind"` Priority int `json:"priority" bson:"priority"` Name string `json:"name" bson:"name"` UserIDs []primitive.ObjectID `json:"users" bson:"user_ids"` Users []User `json:"user_objects" bson:"user_objects,skip,omitempty"` Data D `json:"data" bson:"data"` // User Relationals Selected bool `json:"selected" bson:"selected,skip,omitempty"` }
func ConvertCosmetic ¶
type CosmeticData ¶
type CosmeticData interface { bson.Raw | CosmeticDataBadge | CosmeticDataPaint }
type CosmeticDataBadge ¶
type CosmeticDataPaint ¶
type CosmeticDataPaint struct { ID primitive.ObjectID `json:"id" bson:"-"` // The default color of the paint Color *utils.Color `json:"color" bson:"color"` // A list of gradients. There may be any amount, which can be stacked onto each other Gradients []CosmeticPaintGradient `json:"gradients" bson:"gradients"` // A list of drop shadows. There may be any amount, which can be stacked onto each other DropShadows []CosmeticPaintDropShadow `json:"drop_shadows,omitempty" bson:"drop_shadows,omitempty"` // A list of flairs Flairs []CosmeticPaintFlair `json:"flairs,omitempty" bson:"flairs,omitempty"` // Text properties Text *CosmeticPaintText `json:"text,omitempty" bson:"text,omitempty"` // Text stroke // The function used to generate the paint (i.e gradients or an image) Function CosmeticPaintGradientFunction `json:"function" bson:"function"` // Gradient stops, a list of positions and colors Stops []CosmeticPaintGradientStop `json:"stops" bson:"stops"` // Whether or not the gradient repeats outside its original area Repeat bool `json:"repeat" bson:"repeat"` // Gradient angle in degrees Angle int32 `json:"angle" bson:"angle"` // Shape of a radial gradient, when the paint is of RADIAL_GRADIENT type Shape string `json:"shape,omitempty" bson:"shape,omitempty"` // URL of an image, when the paint is of BACKGROUND_IMAGE type ImageURL string `json:"image_url,omitempty" bson:"image_url,omitempty"` }
type CosmeticKind ¶
type CosmeticKind string
const ( CosmeticKindBadge CosmeticKind = "BADGE" CosmeticKindNametagPaint CosmeticKind = "PAINT" CosmeticKindAvatar CosmeticKind = "AVATAR" )
type CosmeticPaintDropShadow ¶
type CosmeticPaintFlair ¶
type CosmeticPaintFlair struct { // The kind of sprite Kind CosmeticPaintFlairKind `json:"kind" bson:"kind"` // The X offset of the flair (%) OffsetX float64 `json:"x_offset" bson:"x_offset"` // The Y offset of the flair (%) OffsetY float64 `json:"y_offset" bson:"y_offset"` // The width of the flair Width float64 `json:"width" bson:"width"` // The height of the flair Height float64 `json:"height" bson:"height"` // Base64-encoded image or vector data Data string `json:"data" bson:"data"` }
type CosmeticPaintFlairKind ¶
type CosmeticPaintFlairKind string
const ( CosmeticPaintSpriteKindImage CosmeticPaintFlairKind = "IMAGE" CosmeticPaintSpriteKindVector CosmeticPaintFlairKind = "VECTOR" CosmeticPaintSpriteKindText CosmeticPaintFlairKind = "TEXT" )
type CosmeticPaintGradient ¶
type CosmeticPaintGradient struct { // The function used to generate the paint (i.e gradients or an image) Function CosmeticPaintGradientFunction `json:"function" bson:"function"` // The repeat mode of the gradient canvas CanvasRepeat CosmeticPaintGradientRepeat `json:"canvas_repeat" bson:"canvas_repeat"` // The canvas size for the paint Size [2]float64 `json:"size" bson:"size"` // Gradient position (X/Y % values) At [2]float64 `json:"at,omitempty" bson:"at,omitempty"` // Gradient stops, a list of positions and colors Stops []CosmeticPaintGradientStop `json:"stops" bson:"stops"` // For a URL-based paint, the URL to an image ImageURL string `json:"image_url,omitempty" bson:"image_url,omitempty"` // For a radial gradient, the shape of the gradient Shape string `json:"shape,omitempty" bson:"shape,omitempty"` // The degree angle of the gradient (does not apply if function is URL) Angle int32 `json:"angle,omitempty" bson:"angle,omitempty"` // Whether or not the gradient stops repeat after they end Repeat bool `json:"repeat" bson:"repeat"` }
type CosmeticPaintGradientFunction ¶
type CosmeticPaintGradientFunction string
const ( CosmeticPaintFunctionLinearGradient CosmeticPaintGradientFunction = "LINEAR_GRADIENT" CosmeticPaintFunctionRadialGradient CosmeticPaintGradientFunction = "RADIAL_GRADIENT" CosmeticPaintFunctionImageURL CosmeticPaintGradientFunction = "URL" )
type CosmeticPaintGradientRepeat ¶
type CosmeticPaintGradientRepeat string
const ( CosmeticPaintCanvasRepeatNone CosmeticPaintGradientRepeat = "no-repeat" CosmeticPaintCanvasRepeatX CosmeticPaintGradientRepeat = "repeat-x" CosmeticPaintCanvasRepeatY CosmeticPaintGradientRepeat = "repeat-y" CosmeticPaintCanvasRepeatRevert CosmeticPaintGradientRepeat = "revert" CosmeticPaintCanvasRepeatRound CosmeticPaintGradientRepeat = "round" CosmeticPaintCanvasRepeatSpace CosmeticPaintGradientRepeat = "space" )
type CosmeticPaintStroke ¶
type CosmeticPaintText ¶
type CosmeticPaintText struct { // Weight multiplier for the text. Defaults to 9x is not specified Weight uint8 `json:"weight,omitempty" bson:"weight,omitempty"` // Shadows applied to the text Shadows []CosmeticPaintDropShadow `json:"shadows,omitempty" bson:"shadows,omitempty"` // Text tranformation Transform CosmeticPaintTextTransform `json:"transform,omitempty" bson:"transform,omitempty"` // Text stroke Stroke *CosmeticPaintStroke `json:"stroke,omitempty" bson:"stroke,omitempty"` // (css) font variant property. non-standard Variant string `json:"variant" bson:"variant"` }
type CosmeticPaintTextTransform ¶
type CosmeticPaintTextTransform string
const ( CosmeticPaintTextTransformUppercase CosmeticPaintTextTransform = "uppercase" CosmeticPaintTextTransformLowercase CosmeticPaintTextTransform = "lowercase" )
type Emote ¶
type Emote struct { ID ObjectID `json:"id" bson:"_id"` OwnerID ObjectID `json:"owner_id" bson:"owner_id"` Name string `json:"name" bson:"name"` Flags BitField[EmoteFlag] `json:"flags" bson:"flags"` Tags []string `json:"tags" bson:"tags"` State EmoteState `json:"state" bson:"state"` Versions []EmoteVersion `json:"versions" bson:"versions"` ChildrenIDs []primitive.ObjectID `json:"children_ids" bson:"children_ids"` ParentID *primitive.ObjectID `json:"parent_id" bson:"parent_id"` Owner *User `json:"owner" bson:"owner_user,skip,omitempty"` Channels []User `json:"channels" bson:"channels,skip,omitempty"` VersionRef *EmoteVersion `json:"version_ref" bson:"version_ref,skip,omitempty"` }
func (Emote) GetLatestVersion ¶
func (e Emote) GetLatestVersion(onlyListed bool) EmoteVersion
func (Emote) GetVersion ¶
func (e Emote) GetVersion(id ObjectID) (EmoteVersion, int)
func (*Emote) Validator ¶
func (e *Emote) Validator() EmoteValidator
type EmoteBuilder ¶
EmoteBuilder Wraps an Emote and offers methods to fetch and mutate emote data
func NewEmoteBuilder ¶
func NewEmoteBuilder(emote Emote) *EmoteBuilder
NewEmoteBuilder: create a new emote builder
func (*EmoteBuilder) AddVersion ¶
func (eb *EmoteBuilder) AddVersion(v EmoteVersion) *EmoteBuilder
func (*EmoteBuilder) Initial ¶
func (eb *EmoteBuilder) Initial() Emote
Initial returns a pointer to the value first passed to this Builder
func (*EmoteBuilder) InitialVersions ¶
func (eb *EmoteBuilder) InitialVersions() []EmoteVersion
func (*EmoteBuilder) IsTainted ¶
func (eb *EmoteBuilder) IsTainted() bool
IsTainted returns whether or not this Builder has been mutated before
func (*EmoteBuilder) MarkAsTainted ¶
func (eb *EmoteBuilder) MarkAsTainted()
MarkAsTainted taints the builder, preventing it from being mutated again
func (*EmoteBuilder) RemoveVersion ¶
func (eb *EmoteBuilder) RemoveVersion(id ObjectID) *EmoteBuilder
func (*EmoteBuilder) SetFlags ¶
func (eb *EmoteBuilder) SetFlags(sum BitField[EmoteFlag]) *EmoteBuilder
func (*EmoteBuilder) SetName ¶
func (eb *EmoteBuilder) SetName(name string) *EmoteBuilder
SetName: change the name of the emote
func (*EmoteBuilder) SetOwnerID ¶
func (eb *EmoteBuilder) SetOwnerID(id primitive.ObjectID) *EmoteBuilder
func (*EmoteBuilder) SetTags ¶
func (eb *EmoteBuilder) SetTags(tags []string, validate bool) *EmoteBuilder
func (*EmoteBuilder) UpdateVersion ¶
func (eb *EmoteBuilder) UpdateVersion(id ObjectID, v EmoteVersion) *EmoteBuilder
type EmoteFlag ¶
type EmoteFlag int32
const ( EmoteFlagsPrivate EmoteFlag = 1 << 0 // The emote is private and can only be accessed by its owner, editors and moderators EmoteFlagsAuthentic EmoteFlag = 1 << 1 // The emote was verified to be an original creation by the uploader EmoteFlagsZeroWidth EmoteFlag = 1 << 8 // The emote is recommended to be enabled as Zero-Width EmoteFlagsContentSexual EmoteFlag = 1 << 16 // Sexually Suggesive EmoteFlagsContentEpilepsy EmoteFlag = 1 << 17 // Rapid flashing EmoteFlagsContentEdgy EmoteFlag = 1 << 18 // Edgy or distasteful, may be offensive to some users EmoteFlagsContentTwitchDisallowed EmoteFlag = 1 << 24 // Not allowed specifically on the Twitch platform )
type EmoteLifecycle ¶
type EmoteLifecycle int32
const ( EmoteLifecycleDeleted EmoteLifecycle = iota - 1 EmoteLifecyclePending EmoteLifecycleProcessing EmoteLifecycleDisabled EmoteLifecycleLive EmoteLifecycleFailed EmoteLifecycle = -2 )
type EmoteSet ¶
type EmoteSet struct { ID primitive.ObjectID `json:"-" bson:"_id,omitempty"` // The emote set's name Name string `json:"name" bson:"name"` // Search tags for the emote set Tags []string `json:"tags" bson:"tags"` // Bit flags for the emote set Flags BitField[EmoteSetFlag] `json:"flags" bson:"flags"` // Whether or not the emote set can be edited // // DEPRECATED - use Flags instead Immutable bool `json:"immutable" bson:"immutable"` // If true, the set is "privileged" and can only be modified by its owner or a super administrator, regardless of the "Edit Any Emote Set" permission // // DEPRECATED - use Flags instead Privileged bool `json:"privilleged" bson:"privileged"` // The emotes assigned to this set Emotes []ActiveEmote `json:"emotes" bson:"emotes"` // The set's emote capacity (slots), the maximum amount of emotes it can hold Capacity int32 `json:"capacity" bson:"capacity"` // The set's emote capacity using the quota system // Experimental - replaces slot capacity QuotaCapacity float64 `json:"capacity_experimental,omitempty" bson:"capacity_experimental,omitempty"` // Other emote sets that this set is based upon Origins []EmoteSetOrigin `json:"origins,omitempty" bson:"origins,omitempty"` // The ID of the user who owns this emote set OwnerID ObjectID `json:"owner_id" bson:"owner_id"` // Conditions governing how this emote set may be utilized Condition EmoteSetCondition `json:"condition" bson:"condition"` Owner *User `json:"owner,omitempty" bson:"owner_user,skip,omitempty"` }
func (EmoteSet) GetEmote ¶
func (es EmoteSet) GetEmote(id primitive.ObjectID) (ActiveEmote, int)
HasEmote: returns whether or not the set has an emote active, as well as its index
func (*EmoteSet) Validator ¶
func (e *EmoteSet) Validator() EmoteSetValidator
type EmoteSetBuilder ¶
type EmoteSetBuilder struct { Update UpdateMap EmoteSet EmoteSet // contains filtered or unexported fields }
func NewEmoteSetBuilder ¶
func NewEmoteSetBuilder(emoteSet EmoteSet) *EmoteSetBuilder
func (*EmoteSetBuilder) AddActiveEmote ¶
func (esb *EmoteSetBuilder) AddActiveEmote(id ObjectID, alias string, at time.Time, actorID *primitive.ObjectID) *EmoteSetBuilder
func (*EmoteSetBuilder) AddOrigin ¶
func (esb *EmoteSetBuilder) AddOrigin(id ObjectID, weight int32) *EmoteSetBuilder
func (*EmoteSetBuilder) Initial ¶
func (esb *EmoteSetBuilder) Initial() *EmoteSet
Initial returns a pointer to the value first passed to this Builder
func (*EmoteSetBuilder) IsTainted ¶
func (esb *EmoteSetBuilder) IsTainted() bool
IsTainted returns whether or not this Builder has been mutated before
func (*EmoteSetBuilder) MarkAsTainted ¶
func (esb *EmoteSetBuilder) MarkAsTainted()
MarkAsTainted taints the builder, preventing it from being mutated again
func (*EmoteSetBuilder) RemoveActiveEmote ¶
func (esb *EmoteSetBuilder) RemoveActiveEmote(id ObjectID) (*EmoteSetBuilder, int)
func (*EmoteSetBuilder) RemoveOrigin ¶
func (esb *EmoteSetBuilder) RemoveOrigin(id ObjectID) *EmoteSetBuilder
func (*EmoteSetBuilder) SetCapacity ¶
func (esb *EmoteSetBuilder) SetCapacity(slots int32) *EmoteSetBuilder
func (*EmoteSetBuilder) SetImmutable ¶
func (esb *EmoteSetBuilder) SetImmutable(b bool) *EmoteSetBuilder
func (*EmoteSetBuilder) SetName ¶
func (esb *EmoteSetBuilder) SetName(name string) *EmoteSetBuilder
func (*EmoteSetBuilder) SetOrigins ¶
func (esb *EmoteSetBuilder) SetOrigins(origins []EmoteSetOrigin) *EmoteSetBuilder
func (*EmoteSetBuilder) SetOwnerID ¶
func (esb *EmoteSetBuilder) SetOwnerID(id ObjectID) *EmoteSetBuilder
func (*EmoteSetBuilder) SetPrivileged ¶
func (esb *EmoteSetBuilder) SetPrivileged(b bool) *EmoteSetBuilder
func (*EmoteSetBuilder) SetTags ¶
func (esb *EmoteSetBuilder) SetTags(tags []string) *EmoteSetBuilder
func (*EmoteSetBuilder) UpdateActiveEmote ¶
func (esb *EmoteSetBuilder) UpdateActiveEmote(id ObjectID, alias string) *EmoteSetBuilder
type EmoteSetCondition ¶
type EmoteSetCondition struct { // If true, this emote set may be entitled on to a user and used globally Entitlable bool `json:"entitlable,omitempty" bson:"entitlable,omitempty"` // A list of channel IDs (user connections) where this set is allowed to be used. If empty it is unrestricted Channels []string `json:"channels,omitempty" bson:"channels,omitempty"` }
type EmoteSetFlag ¶
type EmoteSetFlag int32
const ( // 1 - Set is immutable, meaning it cannot be modified EmoteSetFlagImmutable EmoteSetFlag = 1 << 0 // 2 - Set is privileged, meaning it can only be modified by its owner // or a super administrator, regardless of the "Edit Any Emote Set" permission EmoteSetFlagPrivileged EmoteSetFlag = 1 << 1 // 4 - Set can be personally entitled to a user, meaning its content can be used globally // but may require additional review by content moderators EmoteSetFlagPersonal EmoteSetFlag = 1 << 2 // 8 - Set is distributed via a purchase, meaning its content must be approved // for commercial use by rightsholders EmoteSetFlagCommercial EmoteSetFlag = 1 << 3 )
type EmoteSetOrigin ¶
type EmoteSetOrigin struct { // The ID of the referenced emote set ID primitive.ObjectID `json:"id" bson:"id"` // The weight of this set for serving emotes with names Weight int32 `json:"weight" bson:"weight"` // Slicing of active emotes inside the origin set Slices []uint32 `json:"slices" bson:"slices"` Set *EmoteSet }
type EmoteSetValidator ¶
type EmoteSetValidator struct {
// contains filtered or unexported fields
}
func (EmoteSetValidator) Name ¶
func (x EmoteSetValidator) Name() error
type EmoteState ¶
type EmoteValidator ¶
type EmoteValidator struct {
// contains filtered or unexported fields
}
func (EmoteValidator) Name ¶
func (x EmoteValidator) Name() error
type EmoteVersion ¶
type EmoteVersion struct { ID primitive.ObjectID `json:"id" bson:"id"` Name string `json:"name" bson:"name"` Description string `json:"description" bson:"description"` Animated bool `json:"animated" bson:"animated"` State EmoteVersionState `json:"state" bson:"state"` InputFile ImageFile `json:"input_file" bson:"input_file"` ImageFiles []ImageFile `json:"image_files" bson:"image_files"` ArchiveFile ImageFile `json:"archive_file" bson:"archive_file"` CreatedAt time.Time `json:"created_at" bson:"created_at"` StartedAt time.Time `json:"started_at" bson:"started_at"` CompletedAt time.Time `json:"completed_at" bson:"completed_at"` }
func (EmoteVersion) CountFiles ¶
func (ev EmoteVersion) CountFiles(contentType string, omitStatic bool) int32
func (EmoteVersion) GetFiles ¶
func (ev EmoteVersion) GetFiles(contentType string, omitStatic bool) []ImageFile
func (EmoteVersion) IsProcessing ¶
func (ev EmoteVersion) IsProcessing() bool
func (EmoteVersion) IsUnavailable ¶
func (ev EmoteVersion) IsUnavailable() bool
func (*EmoteVersion) Validator ¶
func (e *EmoteVersion) Validator() EmoteVersionValidator
type EmoteVersionState ¶
type EmoteVersionState struct { // The current life cycle of the emote // indicating whether it's processing, live, deleted, etc. Lifecycle EmoteLifecycle `json:"lifecycle" bson:"lifecycle"` // An error message linked to a failure in the emote's processing stage Error string `json:"error,omitempty" bson:"error,omitempty"` // ID of a replacing emote (used to redirect merges) ReplaceID primitive.ObjectID `json:"replace_id,omitempty" bson:"replace_id,omitempty"` // Whether or not the emote is listed Listed bool `json:"listed" bson:"listed"` // Whether or not the emote is validated for personal use AllowPersonal *bool `json:"allow_personal" bson:"allow_personal"` // The ranked position for the amount of channels this emote is added on to. // This value is to be determined with an external cron job ChannelCountRank int32 `json:"-" bson:"channel_count_rank"` // The amount of channels this emote is added on to. // This value is to be determined with an external cron job ChannelCount int32 `json:"-" bson:"channel_count"` // The time at which the ChannelCount value was last checked ChannelCountCheckAt time.Time `json:"-" bson:"channel_count_check_at"` Language string `json:"language,omitempty" bson:"language,omitempty"` }
type EmoteVersionValidator ¶
type EmoteVersionValidator struct {
// contains filtered or unexported fields
}
func (EmoteVersionValidator) Description ¶
func (x EmoteVersionValidator) Description() error
func (EmoteVersionValidator) Name ¶
func (x EmoteVersionValidator) Name() error
type Entitlement ¶
type Entitlement[D EntitlementData] struct { ID primitive.ObjectID `json:"id" bson:"_id,omitempty"` // Kind represents what item this entitlement grants Kind EntitlementKind `json:"kind" bson:"kind"` // Data referencing the entitled item Data D `json:"data" bson:"data"` // The user who is entitled to the item UserID primitive.ObjectID `json:"user_id" bson:"user_id"` // An optional claim expectation Claim *EntitlementClaim `json:"claim" bson:"claim"` // Eligibility conditions for this entitlement Condition EntitlementCondition `json:"condition" bson:"condition"` // Whether this entitlement is currently inactive Disabled bool `json:"disabled,omitempty" bson:"disabled,omitempty"` // Information about the app that created this entitlement App *EntitlementApp `json:"app,omitempty" bson:"app,omitempty"` }
Entitlement is a binding between a resource and a user It grants the user access to the bound resource and may define some additional properties on top.
func ConvertEntitlement ¶
func ConvertEntitlement[D EntitlementData](c Entitlement[bson.Raw]) (Entitlement[D], error)
func (Entitlement[D]) ToRaw ¶
func (e Entitlement[D]) ToRaw() Entitlement[bson.Raw]
type EntitlementApp ¶
type EntitlementBuilder ¶
type EntitlementBuilder[D EntitlementData] struct { Entitlement Entitlement[D] User *User // contains filtered or unexported fields }
func NewEntitlementBuilder ¶
func NewEntitlementBuilder[D EntitlementData](ent Entitlement[D]) *EntitlementBuilder[D]
func (*EntitlementBuilder[D]) SetApp ¶
func (b *EntitlementBuilder[D]) SetApp(app EntitlementApp) *EntitlementBuilder[D]
func (*EntitlementBuilder[D]) SetClaim ¶
func (b *EntitlementBuilder[D]) SetClaim(claim EntitlementClaim) *EntitlementBuilder[D]
func (*EntitlementBuilder[D]) SetCondition ¶
func (b *EntitlementBuilder[D]) SetCondition(cond EntitlementCondition) *EntitlementBuilder[D]
func (*EntitlementBuilder[D]) SetData ¶
func (b *EntitlementBuilder[D]) SetData(data D) *EntitlementBuilder[D]
SetSubscriptionData: Add a subscription reference to the entitlement
func (*EntitlementBuilder[D]) SetKind ¶
func (b *EntitlementBuilder[D]) SetKind(kind EntitlementKind) *EntitlementBuilder[D]
SetKind: Change the entitlement's kind
func (*EntitlementBuilder[D]) SetUserID ¶
func (b *EntitlementBuilder[D]) SetUserID(id primitive.ObjectID) *EntitlementBuilder[D]
SetUserID: Change the entitlement's assigned user
type EntitlementClaim ¶
type EntitlementClaim struct { Platform UserConnectionPlatform `json:"platform" bson:"platform"` ID string `json:"id" bson:"id"` }
type EntitlementCondition ¶
type EntitlementCondition struct { AnyRoles []primitive.ObjectID `json:"any_roles,omitempty" bson:"any_roles,omitempty"` AllRoles []primitive.ObjectID `json:"all_roles,omitempty" bson:"all_roles,omitempty"` MinDate time.Time `json:"min_date,omitempty" bson:"min_date,omitempty"` MaxDate time.Time `json:"max_date,omitempty" bson:"max_date,omitempty"` NoLegacy bool `json:"no_legacy,omitempty" bson:"no_legacy,omitempty"` }
type EntitlementData ¶
type EntitlementData interface { bson.Raw | EntitlementDataBase | EntitlementDataBaseSelectable | EntitlementDataSubscription | EntitlementDataBadge | EntitlementDataPaint | EntitlementDataRole | EntitlementDataEmoteSet }
type EntitlementDataBadge ¶
type EntitlementDataBadge struct { RefID primitive.ObjectID `json:"-" bson:"ref"` RefObject *Cosmetic[CosmeticDataBadge] `json:"ref_object" bson:"ref_object,skip,omitempty"` Selected bool `json:"selected,omitempty" bson:"selected,omitempty"` }
EntitledBadge Badge binding in an Entitlement
type EntitlementDataBase ¶
type EntitlementDataEmoteSet ¶
type EntitlementDataEmoteSet struct { RefID primitive.ObjectID `json:"-" bson:"ref"` RefObject *EmoteSet `json:"ref_object" bson:"ref_object,skip,omitempty"` }
EntitledEmoteSet Emote Set binding in an Entitlement
type EntitlementDataPaint ¶
type EntitlementDataPaint struct { RefID primitive.ObjectID `json:"-" bson:"ref"` RefObject *Cosmetic[CosmeticDataPaint] `json:"ref_object" bson:"ref_object,skip,omitempty"` Selected bool `json:"selected,omitempty" bson:"selected,omitempty"` }
type EntitlementDataRole ¶
type EntitlementDataRole struct { RefID primitive.ObjectID `json:"-" bson:"ref"` RefObject *Role `json:"ref_object" bson:"ref_object,skip,omitempty"` }
EntitledRole Role binding in an Entitlement
type EntitlementDataSubscription ¶
type EntitlementDataSubscription struct { Interval int `json:"interval" bson:"interval"` IntervalUnit string `json:"interval_unit" bson:"interval_unit"` }
EntitledSubscription Subscription binding in an Entitlement
type EntitlementKind ¶
type EntitlementKind string
EntitlementKind A string representing a kind of entitlement
type ImageFile ¶
type ImageFile struct { Name string `json:"name" bson:"name"` // The name of the file Width int32 `json:"width" bson:"width,omitempty"` // The pixel width of the emote Height int32 `json:"height" bson:"height,omitempty"` // The pixel height of the emote FrameCount int32 `json:"frame_count" bson:"frame_count,omitempty"` // Whether or not this file is animated Size int64 `json:"size" bson:"size"` // The file size in bytes ContentType string `json:"content_type" bson:"content_type"` SHA3 string `json:"sha3" bson:"sha3"` Key string `json:"key" bson:"key"` Bucket string `json:"bucket" bson:"bucket"` ACL string `json:"acl"` CacheControl string `json:"cache_control"` }
type ListItemAction ¶
type ListItemAction string
const ( ListItemActionAdd ListItemAction = "ADD" ListItemActionUpdate ListItemAction = "UPDATE" ListItemActionRemove ListItemAction = "REMOVE" )
type Message ¶
type Message[D MessageData] struct { ID primitive.ObjectID `json:"id" bson:"_id,omitempty"` // The kind of message this is (i.e a comment, or inbox message) Kind MessageKind `json:"kind" bson:"kind"` // The ID of the user who created this message AuthorID primitive.ObjectID `json:"author_id" bson:"author_id,omitempty"` // Whether or not the message's author will not be displayed to unprivileged end users Anonymous bool `json:"anonymous,omitempty" bson:"anonymous,omitempty"` // The date on which this message was cretaed CreatedAt time.Time `json:"created_at" bson:"created_at"` // Message data Data D `json:"data" bson:"data"` Author *User `json:"author,omitempty" bson:"author,omitempty"` Timestamp time.Time `json:"timestamp,omitempty" bson:"timestamp,omitempty"` Read bool `json:"read,omitempty" bson:"read,omitempty"` }
func ConvertMessage ¶
type MessageBuilder ¶
type MessageBuilder[D MessageData] struct { Message Message[D] Update UpdateMap // contains filtered or unexported fields }
func NewMessageBuilder ¶
func NewMessageBuilder[D MessageData](msg Message[D]) *MessageBuilder[D]
func (*MessageBuilder[D]) IsTainted ¶
func (eb *MessageBuilder[D]) IsTainted() bool
IsTainted returns whether or not this Builder has been mutated before
func (*MessageBuilder[D]) MarkAsTainted ¶
func (eb *MessageBuilder[D]) MarkAsTainted()
MarkAsTainted taints the builder, preventing it from being mutated again
func (*MessageBuilder[D]) SetAnonymous ¶
func (mb *MessageBuilder[D]) SetAnonymous(b bool) *MessageBuilder[D]
func (*MessageBuilder[D]) SetAuthorID ¶
func (mb *MessageBuilder[D]) SetAuthorID(id primitive.ObjectID) *MessageBuilder[D]
func (*MessageBuilder[D]) SetData ¶
func (mb *MessageBuilder[D]) SetData(data D) *MessageBuilder[D]
func (*MessageBuilder[D]) SetKind ¶
func (mb *MessageBuilder[D]) SetKind(kind MessageKind) *MessageBuilder[D]
func (*MessageBuilder[D]) SetTimestamp ¶
func (mb *MessageBuilder[D]) SetTimestamp(t time.Time) *MessageBuilder[D]
type MessageComponent ¶
type MessageComponent struct { Type MessageComponentType `json:"type" bson:"type"` // the type of component Heading uint8 `json:"heading,omitempty" bson:"heading,omitempty"` // component heading level Weight uint8 `json:"weight,omitempty" bson:"weight,omitempty"` // component font weight (1-9) Color utils.Color `json:"color" bson:"color"` // text color (ineffective on some types) Locale bool `json:"locale" bson:"locale"` // whether or not the content of this component is a locale string Content string `json:"content" bson:"content"` // the content of the component }
type MessageComponentBuilder ¶
type MessageComponentBuilder struct { MessageComponent MessageComponent Update UpdateMap }
func NewMessageComponentBuilder ¶
func NewMessageComponentBuilder(mcb MessageComponent) *MessageComponentBuilder
func (*MessageComponentBuilder) SetColor ¶
func (mcb *MessageComponentBuilder) SetColor(c utils.Color) *MessageComponentBuilder
func (*MessageComponentBuilder) SetContent ¶
func (mcb *MessageComponentBuilder) SetContent(c string) *MessageComponentBuilder
func (*MessageComponentBuilder) SetHeading ¶
func (mcb *MessageComponentBuilder) SetHeading(h uint8) *MessageComponentBuilder
func (*MessageComponentBuilder) SetLocale ¶
func (mcb *MessageComponentBuilder) SetLocale(l bool) *MessageComponentBuilder
func (*MessageComponentBuilder) SetType ¶
func (mcb *MessageComponentBuilder) SetType(t MessageComponentType) *MessageComponentBuilder
func (*MessageComponentBuilder) SetWeight ¶
func (mcb *MessageComponentBuilder) SetWeight(w uint8) *MessageComponentBuilder
type MessageComponentType ¶
type MessageComponentType string
const ( MessageComponentTypeImage MessageComponentType = "image" MessageComponentTypeLink MessageComponentType = "link" MessageComponentTypeText MessageComponentType = "text" MessageComponentTypeMention MessageComponentType = "mention" MessageComponentTypeInteract MessageComponentType = "interact" )
type MessageData ¶
type MessageData interface { bson.Raw | MessageDataEmoteComment | MessageDataInbox | MessageDataPlaceholder | MessageDataModRequest }
type MessageDataEmoteComment ¶
type MessageDataEmoteComment struct { EmoteID primitive.ObjectID `json:"emote_id" bson:"emote_id"` // Whether or not the comment is an official statement // i.e, a warning by a moderator Authoritative bool `json:"authoritative,omitempty" bson:"authoritative,omitempty"` // Whether or not the comment is pinned. // Pinned comments will always appear at the top Pinned bool `json:"pinned,omitempty" bson:"pinned,omitempty"` // The comment's text contents Content string `json:"content" bson:"content"` }
type MessageDataInbox ¶
type MessageDataInbox struct { Subject string `json:"subject" bson:"subject"` // the message's subject Components []MessageComponent `json:"components" bson:"components"` // the message's components Content string `json:"content" bson:"content"` // the content of the message Important bool `json:"important,omitempty" bson:"important,omitempty"` // whether or not the message is important Starred bool `json:"starred,omitempty" bson:"starred,omitempty"` // whether or not the message is started Pinned bool `json:"pinned,omitempty" bson:"pinned,omitempty"` // whether or not the message is pinned Locked bool `json:"locked,omitempty" bson:"locked,omitempty"` // whether or not replies can be added to this message Locale bool `json:"locale,omitempty" bson:"locale,omitempty"` // whether or not this message can use locale strings System bool `json:"system,omitempty" bson:"system,omitempty"` // whether or not the message is a system message Placeholders map[string]string `json:"placeholders,omitempty" bson:"placeholders,omitempty"` // placeholders for localization }
type MessageDataModRequest ¶
type MessageDataModRequest struct { TargetKind ObjectKind `json:"target_kind" bson:"target_kind"` TargetID primitive.ObjectID `json:"target_id" bson:"target_id"` Wish string `json:"wish" bson:"wish"` Priority uint8 `json:"priority" bson:"priority,omitempty"` ActorCountryName string `json:"actor_country_name,omitempty" bson:"actor_country_name,omitempty"` ActorCountryCode string `json:"actor_country_code,omitempty" bson:"actor_country_code,omitempty"` Target bson.Raw `json:"target" bson:"target,omitempty"` }
type MessageDataPlaceholder ¶
type MessageKind ¶
type MessageKind int8
const ( MessageKindEmoteComment MessageKind = 1 // a comment MessageKindModRequest MessageKind = 2 // a moderator action request MessageKindInbox MessageKind = 3 // an inbox message MessageKindNews MessageKind = 4 // a news post )
func (MessageKind) String ¶
func (k MessageKind) String() string
type MessageRead ¶
type MessageRead struct { ID primitive.ObjectID `json:"id" bson:"_id,omitempty"` Kind MessageKind `json:"kind" bson:"kind"` Timestamp time.Time `json:"timestamp" bson:"timestamp"` MessageID primitive.ObjectID `json:"message_id" bson:"message_id"` RecipientID primitive.ObjectID `json:"recipient_id,omitempty" bson:"recipient_id,omitempty"` Read bool `json:"read" bson:"read"` ReadAt time.Time `json:"read_at,omitempty" bson:"read_at,omitempty"` Weight int32 `json:"weight" bson:"weight"` Message *Message[bson.Raw] `json:"message,omitempty" bson:"message,skip,omitempty"` }
MessageRead read/unread state for a message
type ObjectKind ¶
type ObjectKind int8
const ( ObjectKindUser ObjectKind = 1 ObjectKindEmote ObjectKind = 2 ObjectKindEmoteSet ObjectKind = 3 ObjectKindRole ObjectKind = 4 ObjectKindEntitlement ObjectKind = 5 ObjectKindBan ObjectKind = 6 ObjectKindMessage ObjectKind = 7 ObjectKindReport ObjectKind = 8 ObjectKindPresence ObjectKind = 9 ObjectKindCosmetic ObjectKind = 10 )
func (ObjectKind) CollectionName ¶
func (k ObjectKind) CollectionName() string
func (ObjectKind) String ¶
func (k ObjectKind) String() string
type Report ¶
type Report struct { ID primitive.ObjectID `json:"id" bson:"_id"` CaseID string `json:"case_id" bson:"case_id"` // The type of the target TargetKind ObjectKind `json:"target_kind" bson:"target_kind"` // The ID of the target TargetID primitive.ObjectID `json:"target_id" bson:"target_id"` // The ID of the user who created the report ActorID primitive.ObjectID `json:"actor_id" bson:"actor_id"` // The report subject (i.e "Stolen Emote") Subject string `json:"subject" bson:"subject"` // The report body (a user-generated text field with details) Body string `json:"body" bson:"body"` // Priority of the report Priority int32 `json:"priority" bson:"priority"` // Whether or not the report is open Status ReportStatus `json:"status" bson:"status"` // The date on which the report was created CreatedAt time.Time `json:"created_at" bson:"created_at"` // The date on which the report was closed ClosedAt *time.Time `json:"closed_at,omitempty" bson:"closed_at,omitempty"` // The date on which the report was last updated LastUpdatedAt time.Time `json:"last_updated_at" bson:"last_updated_at"` // The IDs of users assigned to this report AssigneeIDs []primitive.ObjectID `json:"assignee_ids" bson:"assignee_ids"` // Notes (moderator comments) Notes []ReportNote `json:"notes" bson:"notes"` Target *User `json:"target" bson:"target,skip,omitempty"` Actor *User `json:"reporter" bson:"actor,skip,omitempty"` Assignees []User `json:"assignees" bson:"assignees,skip,omitempty"` }
type ReportBuilder ¶
func NewReportBuilder ¶
func NewReportBuilder(report Report) *ReportBuilder
NewReportBuilder: create a new report builder
func (*ReportBuilder) AddAssignee ¶
func (rb *ReportBuilder) AddAssignee(id primitive.ObjectID) *ReportBuilder
func (*ReportBuilder) AddNote ¶
func (rb *ReportBuilder) AddNote(note ReportNote) *ReportBuilder
func (*ReportBuilder) RemoveAssignee ¶
func (rb *ReportBuilder) RemoveAssignee(id primitive.ObjectID) *ReportBuilder
func (*ReportBuilder) SetBody ¶
func (rb *ReportBuilder) SetBody(body string) *ReportBuilder
func (*ReportBuilder) SetClosedAt ¶
func (rb *ReportBuilder) SetClosedAt(t time.Time) *ReportBuilder
func (*ReportBuilder) SetCreatedAt ¶
func (rb *ReportBuilder) SetCreatedAt(t time.Time) *ReportBuilder
func (*ReportBuilder) SetLastUpdatedAt ¶
func (rb *ReportBuilder) SetLastUpdatedAt(t time.Time) *ReportBuilder
func (*ReportBuilder) SetPriority ¶
func (rb *ReportBuilder) SetPriority(p int32) *ReportBuilder
func (*ReportBuilder) SetReporterID ¶
func (rb *ReportBuilder) SetReporterID(id primitive.ObjectID) *ReportBuilder
func (*ReportBuilder) SetStatus ¶
func (rb *ReportBuilder) SetStatus(s ReportStatus) *ReportBuilder
func (*ReportBuilder) SetSubject ¶
func (rb *ReportBuilder) SetSubject(subject string) *ReportBuilder
func (*ReportBuilder) SetTargetID ¶
func (rb *ReportBuilder) SetTargetID(id primitive.ObjectID) *ReportBuilder
func (*ReportBuilder) SetTargetKind ¶
func (rb *ReportBuilder) SetTargetKind(kind ObjectKind) *ReportBuilder
type ReportNote ¶
type ReportNote struct { // The time at which the note was created Timestamp time.Time `json:"timestamp" bson:"timestamp"` // The ID of the user who wrote this note AuthorID primitive.ObjectID `json:"author_id" bson:"author_id"` // The text content of the note Content string `json:"content" bson:"content"` // If true, the note is only visible to other privileged users // it will not be visible to the reporter Internal bool `json:"internal" bson:"internal"` // Whether or not the note was read by the reporter Read bool `json:"read" bson:"read"` // A reply to the note by the reporter Reply string `json:"reply" bson:"reply"` }
type ReportStatus ¶
type ReportStatus string
const ( ReportStatusOpen ReportStatus = "OPEN" ReportStatusAssigned ReportStatus = "ASSIGNED" ReportStatusClosed ReportStatus = "CLOSED" )
type Role ¶
type Role struct { ID primitive.ObjectID `json:"id" bson:"_id"` // the role's name Name string `json:"name" bson:"name"` // the role's privilege position Position int32 `json:"position" bson:"position"` // the role's display color Color utils.Color `json:"color" bson:"color"` // the role's allowed permission bits Allowed RolePermission `json:"allowed" bson:"allowed"` // the role's denied permission bits Denied RolePermission `json:"denied" bson:"denied"` // whether or not this role is the default role Default bool `json:"default" bson:"default,omitempty"` // whether or not the role Invisible bool `json:"invisible" bson:"invisible,omitempty"` // the id of the linked role on discord DiscordID uint64 `json:"discord_id,omitempty" bson:"discord_id,omitempty"` }
func (Role) HasPermissionBit ¶
func (r Role) HasPermissionBit(bit RolePermission) bool
HasPermissionBit: Check for specific bit in the role's allowed permissions
type RoleBuilder ¶
func NewRoleBuilder ¶
func NewRoleBuilder(role Role) *RoleBuilder
NewRoleBuilder: create a new role builder
func (*RoleBuilder) Initial ¶
func (eb *RoleBuilder) Initial() Role
Initial returns a pointer to the value first passed to this Builder
func (*RoleBuilder) SetAllowed ¶
func (rb *RoleBuilder) SetAllowed(allowed RolePermission) *RoleBuilder
func (*RoleBuilder) SetColor ¶
func (rb *RoleBuilder) SetColor(color utils.Color) *RoleBuilder
func (*RoleBuilder) SetDenied ¶
func (rb *RoleBuilder) SetDenied(denied RolePermission) *RoleBuilder
func (*RoleBuilder) SetName ¶
func (rb *RoleBuilder) SetName(name string) *RoleBuilder
func (*RoleBuilder) SetPosition ¶
func (rb *RoleBuilder) SetPosition(pos int32) *RoleBuilder
type RolePermission ¶
type RolePermission int64
RolePermission Role permission bits
const ( RolePermissionCreateEmote RolePermission = 1 << 0 // 1 - Allows creating emotes RolePermissionEditEmote RolePermission = 1 << 1 // 2 - Allows editing emotes RolePermissionCreateEmoteSet RolePermission = 1 << 2 // 4 - Allows creating emote sets RolePermissionEditEmoteSet RolePermission = 1 << 3 // 8 - Allows creating and modifying emote sets )
Emotes Range: 1 << 0 - 1 << 5
const ( RolePermissionCreateReport RolePermission = 1 << 13 // 8192 - Allows creating reports RolePermissionSendMessages RolePermission = 1 << 14 // 16384 - Allows sending messages (i.e comments or user inboxs) RolePermissionFeatureZeroWidthEmoteType RolePermission = 1 << 23 // 8388608 - Allows using the Zero-Width emote type RolePermissionFeatureProfilePictureAnimation RolePermission = 1 << 24 // 16777216 - Allows the user's profile picture to be animated RolePermissionFeatureMessagingPriority RolePermission = 1 << 25 // 33554432 - The user's messages will become prioritized )
User / Misc / Special Range: 1 << 13 - 1 << 1 << 29
const ( RolePermissionManageBans RolePermission = 1 << 30 // 1073741824 - (Mod) Allows creating or deleting bans RolePermissionManageRoles RolePermission = 1 << 31 // 2147483648 - (Mod) Allows creating, deleting and assigning roles to users RolePermissionManageReports RolePermission = 1 << 32 // 4294967296 - (Mod) Allows managing reports RolePermissionManageUsers RolePermission = 1 << 33 // 8589934592 - (Mod) Allows managing users RolePermissionEditAnyEmote RolePermission = 1 << 41 // 2199023255552 - (Mod) Allows editing any emote RolePermissionEditAnyEmoteSet RolePermission = 1 << 42 // 4398046511104 - (Mod) Allows editing any emote set, unless it is a privileged set RolePermissionBypassPrivacy RolePermission = 1 << 48 // 281474976710656 - (Mod) Lets the user see all non-public content )
Moderation Range: 1 << 30 - 1 << 53
const ( RolePermissionSuperAdministrator RolePermission = 1 << 62 // 4611686018427387904 - (Admin) GRANTS EVERY PERMISSION /!\ RolePermissionManageContent RolePermission = 1 << 54 // 18014398509481984 - (Admin) Allows managing featured content or publish items of significance RolePermissionManageStack RolePermission = 1 << 55 // 36028797018963968 - (Admin) Allows managing the application stack RolePermissionManageCosmetics RolePermission = 1 << 56 // 72057594037927936 - (Admin) Allows managing user cosmetics RolePermissionRunJobs RolePermission = 1 << 57 // 144115188075855872 - (Admin) Allows firing processing jobs RolePermissionManageEntitlements RolePermission = 1 << 58 // 288230376151711744 - (Admin) Allows managing entitlements )
Range: 1 << 54 - 1 << 63
type System ¶
type System struct { ID ObjectID `json:"id" bson:"_id"` AdminUserID ObjectID `json:"admin_user_id" bson:"admin_user_id"` EmoteSetID ObjectID `json:"emote_set_id" bson:"emote_set_id"` Config struct { Extension SystemConfigExtension `json:"extension" bson:"extension"` ExtensionNightly SystemConfigExtension `json:"extension_nightly" bson:"extension_nightly"` } `json:"config" bson:"config"` }
type SystemConfigExtension ¶
type SystemConfigExtension struct { Version string `json:"version" bson:"version"` Overrides []struct{} `json:"overrides" bson:"overrides"` Compatibility []SystemConfigExtensionCompat `json:"compatibility" bson:"compatibility"` }
type SystemConfigExtensionCompat ¶
type SystemConfigExtensionCompat struct { ID []string `json:"id" bson:"id"` Issues []SystemConfigExtensionCompatIssue `json:"issues" bson:"issues"` }
type SystemConfigExtensionCompatIssue ¶
type SystemConfigExtensionCompatIssue struct { Platforms []UserConnectionPlatform `json:"platform" bson:"platform"` Severity SystemConfigExtensionCompatIssueSeverity `json:"severity" bson:"severity"` Message string `json:"message" bson:"message"` }
type SystemConfigExtensionCompatIssueSeverity ¶
type SystemConfigExtensionCompatIssueSeverity string
const ( SystemConfigExtensionCompatIssueSeverityNote SystemConfigExtensionCompatIssueSeverity = "NOTE" SystemConfigExtensionCompatIssueSeverityWarning SystemConfigExtensionCompatIssueSeverity = "WARNING" SystemConfigExtensionCompatIssueSeverityBadPerformance SystemConfigExtensionCompatIssueSeverity = "BAD_PERFORMANCE" SystemConfigExtensionCompatIssueSeverityClashing SystemConfigExtensionCompatIssueSeverity = "CLASHING" SystemConfigExtensionCompatIssueSeverityDuplicateFunctionality SystemConfigExtensionCompatIssueSeverity = "DUPLICATE_FUNCTIONALITY" )
type SystemDefaultObject ¶
type UpdateValue ¶
type UpdateValue interface{}
type User ¶
type User struct { ID ObjectID `json:"id,omitempty" bson:"_id,omitempty"` // the type of this user. empty when a regular user, but could also be "BOT" or "SYSTEM" UserType UserType `json:"type,omitempty" bson:"type,omitempty"` // the user's username Username string `json:"username" bson:"username"` // the user's display name DisplayName string `json:"display_name" bson:"display_name"` // the user's discriminatory space Discriminator string `json:"discriminator" bson:"discriminator"` // the user's email Email string `json:"email" bson:"email"` // list of role IDs directly bound to the user (not via an entitlement) RoleIDs []ObjectID `json:"role_ids" bson:"role_ids"` // the user's editors Editors []UserEditor `json:"editors" bson:"editors"` // the user's avatar URL AvatarID string `json:"avatar_id" bson:"avatar_id"` // the user's avatar Avatar *UserAvatar `json:"avatar" bson:"avatar"` // the user's biography Biography string `json:"biography" bson:"biography"` // token version. When this value changes all existing auth tokens are invalidated TokenVersion float64 `json:"token_version" bson:"token_version"` // third party connections. Who's the third party now? Connections UserConnectionList `json:"connections" bson:"connections"` // the ID of users who have been blocked by the user BlockedUserIDs []ObjectID `json:"blocked_user_ids,omitempty" bson:"blocked_user_ids,omitempty"` // persisted non-structural data that can be used internally for querying State UserState `json:"-" bson:"state"` // Special treatments attributed to the user; // This is used to run experiments Treatments []string `json:"treatments" bson:"treatments"` Emotes []Emote `json:"emotes" bson:"emotes,skip,omitempty"` OwnedEmotes []Emote `json:"owned_emotes" bson:"owned_emotes,skip,omitempty"` Bans []Ban `json:"bans" bson:"bans,skip,omitempty"` Entitlements []Entitlement[bson.Raw] `json:"entitlements" bson:"entitlements,skip,omitempty"` Roles []Role `json:"roles" bson:"roles,skip,omitempty"` EditorOf []UserEditor `json:"editor_of" bson:"editor_of,skip,omitempty"` AvatarURL string `json:"avatar_url" bson:"-"` }
User A standard app user object
func (*User) FinalPermission ¶
func (u *User) FinalPermission() (total RolePermission)
func (*User) GetHighestRole ¶
func (*User) HasPermission ¶
func (u *User) HasPermission(bit RolePermission) bool
HasPermission checks relational roles against a permission bit
func (*User) InferUsername ¶
func (u *User) InferUsername()
func (*User) SetDiscriminator ¶
type UserAvatar ¶
type UserBuilder ¶
func NewUserBuilder ¶
func NewUserBuilder(user User) *UserBuilder
NewUserBuilder: create a new user builder
func (*UserBuilder) AddConnection ¶
func (ub *UserBuilder) AddConnection(conn UserConnection[bson.Raw]) *UserBuilder
func (*UserBuilder) AddEditor ¶
func (ub *UserBuilder) AddEditor(id ObjectID, permissions UserEditorPermission, visible bool) (UserEditor, int, *UserBuilder)
func (*UserBuilder) GetConnection ¶
func (ub *UserBuilder) GetConnection(p UserConnectionPlatform, id ...string) (*UserConnectionBuilder[bson.Raw], int)
func (*UserBuilder) Initial ¶
func (ub *UserBuilder) Initial() *User
Initial returns a pointer to the value first passed to this Builder
func (*UserBuilder) IsTainted ¶
func (ub *UserBuilder) IsTainted() bool
IsTainted returns whether or not this Builder has been mutated before
func (*UserBuilder) MarkAsTainted ¶
func (ub *UserBuilder) MarkAsTainted()
MarkAsTainted taints the builder, preventing it from being mutated again
func (*UserBuilder) RemoveConnection ¶
func (ub *UserBuilder) RemoveConnection(id string) (*UserBuilder, int)
func (*UserBuilder) RemoveEditor ¶
func (ub *UserBuilder) RemoveEditor(id ObjectID) (UserEditor, int, *UserBuilder)
func (*UserBuilder) SetAvatarID ¶
func (ub *UserBuilder) SetAvatarID(url string) *UserBuilder
func (*UserBuilder) SetDiscriminator ¶
func (ub *UserBuilder) SetDiscriminator(discrim string) *UserBuilder
func (*UserBuilder) SetDisplayName ¶
func (ub *UserBuilder) SetDisplayName(s string) *UserBuilder
func (*UserBuilder) SetEmail ¶
func (ub *UserBuilder) SetEmail(email string) *UserBuilder
SetEmail: set the email for the user
func (*UserBuilder) SetUsername ¶
func (ub *UserBuilder) SetUsername(username string) *UserBuilder
SetUsername: set the username for the user
func (*UserBuilder) UpdateConnection ¶
func (ub *UserBuilder) UpdateConnection(id string, data bson.Raw) bool
func (*UserBuilder) UpdateEditor ¶
func (ub *UserBuilder) UpdateEditor(id ObjectID, permissions UserEditorPermission, visible bool) (UserEditor, int, *UserBuilder)
type UserConnection ¶
type UserConnection[D UserConnectionData] struct { ID string `json:"id,omitempty" bson:"id,omitempty"` // the platform of this connection Platform UserConnectionPlatform `json:"platform" bson:"platform"` // the time at which this connection was linked LinkedAt time.Time `json:"linked_at" bson:"linked_at"` // the maximum amount of emotes this connection may have have enabled, counting the total from active sets EmoteSlots int32 `json:"emote_slots" bson:"emote_slots"` // emote sets bound to this connection / channel EmoteSetID ObjectID `json:"emote_set_id,omitempty" bson:"emote_set_id,omitempty"` // third-party connection data Data D `json:"data" bson:"data"` // a list of different possible connection data objects // the user must choose one to confirm the connection ChoiceData []bson.Raw `json:"choice_data,omitempty" bson:"choice_data,omitempty"` // a full oauth2 token grant Grant *UserConnectionGrant `json:"-" bson:"grant,omitempty"` EmoteSet *EmoteSet `json:"emote_set" bson:"emote_set,skip,omitempty"` }
UserConnection: Represents an external connection to a platform for a user
func ConvertUserConnection ¶
func ConvertUserConnection[D UserConnectionData](c UserConnection[bson.Raw]) (UserConnection[D], error)
func (UserConnection[D]) ToRaw ¶
func (u UserConnection[D]) ToRaw() UserConnection[bson.Raw]
func (UserConnection[D]) Username ¶
func (uc UserConnection[D]) Username() (string, string)
type UserConnectionBuilder ¶
type UserConnectionBuilder[D UserConnectionData] struct { Update UpdateMap UserConnection UserConnection[D] }
UserConnectionBuilder: utility for creating a new UserConnection
func NewUserConnectionBuilder ¶
func NewUserConnectionBuilder[D UserConnectionData](v UserConnection[D]) *UserConnectionBuilder[D]
NewUserConnectionBuilder: create a new user connection builder
func (*UserConnectionBuilder[D]) SetActiveEmoteSet ¶
func (ucb *UserConnectionBuilder[D]) SetActiveEmoteSet(id ObjectID) *UserConnectionBuilder[D]
func (*UserConnectionBuilder[D]) SetData ¶
func (ucb *UserConnectionBuilder[D]) SetData(data D) *UserConnectionBuilder[D]
func (*UserConnectionBuilder[D]) SetGrant ¶
func (ucb *UserConnectionBuilder[D]) SetGrant(at string, rt string, ex int, sc []string) *UserConnectionBuilder[D]
func (*UserConnectionBuilder[D]) SetID ¶
func (ucb *UserConnectionBuilder[D]) SetID(id string) *UserConnectionBuilder[D]
func (*UserConnectionBuilder[D]) SetLinkedAt ¶
func (ucb *UserConnectionBuilder[D]) SetLinkedAt(date time.Time) *UserConnectionBuilder[D]
SetLinkedAt: set the time at which the connection was linked
func (*UserConnectionBuilder[D]) SetPlatform ¶
func (ucb *UserConnectionBuilder[D]) SetPlatform(platform UserConnectionPlatform) *UserConnectionBuilder[D]
SetPlatform: defines the platform a connection is for (i.e twitch/youtube)
type UserConnectionData ¶
type UserConnectionData interface { bson.Raw | UserConnectionDataTwitch | UserConnectionDataYoutube | UserConnectionDataDiscord | UserConnectionDataKick }
type UserConnectionDataDiscord ¶
type UserConnectionDataDiscord struct { ID string `json:"id" bson:"id"` Username string `json:"username" bson:"username"` Discriminator string `json:"discriminator" bson:"discriminator"` Avatar string `json:"avatar" bson:"avatar"` Bot bool `json:"bot" bson:"bot"` System bool `json:"system" bson:"system"` MFAEnabled bool `json:"mfa_enabled" bson:"mfa_enabled"` Banner string `json:"banner" bson:"banner,omitempty"` AccentColor int64 `json:"accent_color" bson:"accent_color,omitempty"` Locale string `json:"locale" bson:"locale,omitempty"` Verified bool `json:"verified" bson:"verified"` Email string `json:"email" bson:"email,omitempty"` Flags int64 `json:"flags" bson:"flags"` PremiumType uint32 `json:"premium_type" bson:"premium_type"` PublicFlags uint32 `json:"public_flags" bson:"public_flags"` }
type UserConnectionDataKick ¶
type UserConnectionDataTwitch ¶
type UserConnectionDataTwitch struct { ID string `json:"id" bson:"id"` Login string `json:"login" bson:"login"` DisplayName string `json:"display_name" bson:"display_name"` BroadcasterType string `json:"broadcaster_type" bson:"broadcaster_type"` Description string `json:"description" bson:"description"` ProfileImageURL string `json:"profile_image_url" bson:"profile_image_url"` OfflineImageURL string `json:"offline_image_url" bson:"offline_image_url"` ViewCount int `json:"view_count" bson:"view_count"` Email string `json:"email" bson:"email"` CreatedAt time.Time `json:"created_at" bson:"twitch_created_at"` }
type UserConnectionDataYoutube ¶
type UserConnectionDataYoutube struct { ID string `json:"id" bson:"id"` Title string `json:"title" bson:"title"` Description string `json:"description" bson:"description"` ViewCount int64 `json:"view_count" bson:"view_count"` SubCount int64 `json:"sub_count" bson:"sub_count"` ProfileImageURL string `json:"profile_image_url" bson:"profile_image_url"` }
type UserConnectionGrant ¶
type UserConnectionList ¶
type UserConnectionList []UserConnection[bson.Raw]
func (UserConnectionList) Discord ¶
func (ucl UserConnectionList) Discord(filter ...string) (UserConnection[UserConnectionDataDiscord], int, error)
func (UserConnectionList) Get ¶
func (ucl UserConnectionList) Get(id string) (UserConnection[bson.Raw], int)
func (UserConnectionList) Twitch ¶
func (ucl UserConnectionList) Twitch(filter ...string) (UserConnection[UserConnectionDataTwitch], int, error)
Twitch returns the first Twitch user connection
func (UserConnectionList) YouTube ¶
func (ucl UserConnectionList) YouTube(filter ...string) (UserConnection[UserConnectionDataYoutube], int, error)
YouTube returns the first YouTube user connection
type UserConnectionPlatform ¶
type UserConnectionPlatform string
UserConnectionPlatform Represents a platform that the app supports
var ( UserConnectionPlatformTwitch UserConnectionPlatform = "TWITCH" UserConnectionPlatformYouTube UserConnectionPlatform = "YOUTUBE" UserConnectionPlatformDiscord UserConnectionPlatform = "DISCORD" UserConnectionPlatformKick UserConnectionPlatform = "KICK" )
func (UserConnectionPlatform) AuthorizeURL ¶
func (ap UserConnectionPlatform) AuthorizeURL() string
func (UserConnectionPlatform) Supported ¶
func (ucp UserConnectionPlatform) Supported() bool
func (UserConnectionPlatform) TokenURL ¶
func (ap UserConnectionPlatform) TokenURL() string
type UserDiscriminator ¶
type UserDiscriminator uint8
type UserEditor ¶
type UserEditor struct { ID ObjectID `json:"id" bson:"id"` // The permissions this editor has Permissions UserEditorPermission `json:"permissions" bson:"permissions"` // Whether or not that editor will be visible on the user's profile page Visible bool `json:"visible" bson:"visible"` AddedAt time.Time `json:"added_at,omitempty" bson:"added_at,omitempty"` // Relational User *User `json:"user" bson:"user,skip,omitempty"` }
func (*UserEditor) HasPermission ¶
func (ed *UserEditor) HasPermission(bit UserEditorPermission) bool
HasPermission: check whether or not the editor has a permission
type UserEditorPermission ¶
type UserEditorPermission int32
const ( UserEditorPermissionModifyEmotes UserEditorPermission = 1 << 0 // 1 - Allows modifying emotes in the user's active emote sets UserEditorPermissionUsePrivateEmotes UserEditorPermission = 1 << 1 // 2 - Allows using the user's private emotes UserEditorPermissionManageProfile UserEditorPermission = 1 << 2 // 4 - Allows managing the user's public profile UserEditorPermissionManageOwnedEmotes UserEditorPermission = 1 << 3 // 8 - Allows managing the user's owned emotes UserEditorPermissionManageEmoteSets UserEditorPermission = 1 << 4 // 16 - Allows managing the user's owned emote sets UserEditorPermissionManageBilling UserEditorPermission = 1 << 5 // 32 - Allows managing billing and payments, such as subscriptions UserEditorPermissionManageEditors UserEditorPermission = 1 << 6 // 64 - Allows adding or removing editors for the user UserEditorPermissionViewMessages UserEditorPermission = 1 << 7 // 128 - Allows viewing the user's private messages, such as inbox )
type UserPresence ¶
type UserPresence[T UserPresenceData] struct { ID primitive.ObjectID `json:"id" bson:"_id,omitempty"` UserID primitive.ObjectID `json:"user_id" bson:"user_id"` // IP is the IP address of the client who initiated this presence IP string `json:"ip" bson:"ip"` // Authentic is whether or not this presence was authenticated; confirmed that the actor issued this presence // // If false, such a presence cannot be trusted as truth of a user's location. // This may be used for non-sensitive information delivery, for example // to allow a client to announce a user as active in a chat room, but not require // a full authentication flow to attain this functionality. Authentic bool `json:"authentic" bson:"authentic"` // Known is whether or not the data in this presence is known // // If false, it means the data passed wasn't validated to match a real location. Known bool `json:"known" bson:"known"` // Timestamp is the time at which this presence was issued Timestamp time.Time `json:"timestamp" bson:"timestamp"` // TTL is how long this presence is valid for, before it expires TTL time.Time `json:"ttl" bson:"ttl"` // Kind is the type of presence this is Kind UserPresenceKind `json:"kind" bson:"kind"` Data T `json:"data" bson:"data"` Entitlements []UserPresenceEntitlement `json:"entitlements,omitempty" bson:"entitlements,omitempty"` }
func ConvertPresence ¶
func ConvertPresence[D UserPresenceData](presence UserPresence[bson.Raw]) (UserPresence[D], error)
func (UserPresence[T]) ToRaw ¶
func (up UserPresence[T]) ToRaw() UserPresence[bson.Raw]
type UserPresenceData ¶
type UserPresenceData interface { bson.Raw | UserPresenceDataChannel | UserPresenceLocationDataWebPage }
type UserPresenceDataChannel ¶
type UserPresenceDataChannel struct { Platform UserConnectionPlatform `json:"platform" bson:"platform"` ID string `json:"id" bson:"id"` Filter UserPresenceDataChannelFilter `json:"filter" bson:"-"` }
type UserPresenceDataChannelFilter ¶
type UserPresenceDataChannelFilter struct {
Emotes []string `json:"emotes" bson:"-"`
}
type UserPresenceEntitlement ¶
type UserPresenceKind ¶
type UserPresenceKind uint8
const ( UserPresenceKindUnknown UserPresenceKind = iota UserPresenceKindChannel UserPresenceKindWebPage )
func (UserPresenceKind) String ¶
func (upk UserPresenceKind) String() string
Source Files ¶
- builder.audit.go
- builder.emote.go
- builder.emoteset.go
- builder.entitlement.go
- builder.message.go
- builder.report.go
- builder.user.go
- defaults.go
- structures.go
- type.audit.go
- type.ban.go
- type.cosmetic.go
- type.emote.go
- type.emoteset.go
- type.entitlement.go
- type.message.go
- type.report.go
- type.role.go
- type.system.go
- type.user-connection.go
- type.user-presence.go
- type.user.go
- validator.emote.go
- validator.emote_set.go