members package - github.com/sol-armada/sol-bot/members - Go Packages

members

package
v1.15.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2026 License: GPL-3.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BulkSave

func BulkSave(members []Member) error

func ConvertRank added in v1.12.10

func ConvertRank(r int32) ranks.Rank

Helper to convert Rank from int32

func GetPromotionsEmbed added in v1.13.2

func GetPromotionsEmbed() (*discordgo.MessageEmbed, error)

func GetStoredMemberIDs

func GetStoredMemberIDs() ([]string, error)

func ListPromotions added in v1.12.7

func ListPromotions() ([]dbgen.ListPromotionsRow, error)

func PgTypeTextToString added in v1.12.10

func PgTypeTextToString(t pgtype.Text) string

Custom converters for pgtype to native types

func PgTypeTimestamptzToTime added in v1.12.10

func PgTypeTimestamptzToTime(t pgtype.Timestamptz) time.Time

func Setup

func Setup() error

func ValidateDiscordMembers

func ValidateDiscordMembers(discordMembers []*discordgo.Member) []*discordgo.Member

func Watch

func Watch(ctx context.Context, out chan Member) error

Types

type AttendedEvent

type AttendedEvent struct {
	ID   string `json:"id"`
	Name string `json:"name"`
}

type Converter added in v1.12.10

type Converter interface {
	// goverter:map ID Id
	// goverter:ignore Notes RsiInfo Avatar Suffix
	// goverter:ignore MemberSince DKP DKPSpent Merits Demerits BlueprintIds OnboardedAt Age
	// goverter:ignore Pronouns Playtime Gameplay Recruiter ChannelId MessageId FoundBy
	// goverter:ignore TimeZone Other LegacyAge LegacyPlaytime LegacyGameplay LegacyRecruiter LegacyOther
	// goverter:ignore RsiInfo
	FromGetMemberRow(row dbgen.GetMemberRow) Member

	// goverter:map ID Id
	// goverter:ignore Notes RsiInfo Avatar Suffix
	// goverter:ignore MemberSince DKP DKPSpent Merits Demerits BlueprintIds OnboardedAt Age
	// goverter:ignore Pronouns Playtime Gameplay Recruiter ChannelId MessageId FoundBy
	// goverter:ignore TimeZone Other LegacyAge LegacyPlaytime LegacyGameplay LegacyRecruiter LegacyOther
	// goverter:ignore RsiInfo
	FromListMembersRow(row dbgen.ListMembersRow) Member
	FromListMembersRows(rows []dbgen.ListMembersRow) []Member

	// goverter:map ID Id
	// goverter:ignore Notes RsiInfo Avatar Suffix
	// goverter:ignore MemberSince DKP DKPSpent Merits Demerits BlueprintIds OnboardedAt Age
	// goverter:ignore Pronouns Playtime Gameplay Recruiter ChannelId MessageId FoundBy
	// goverter:ignore TimeZone Other LegacyAge LegacyPlaytime LegacyGameplay LegacyRecruiter LegacyOther
	FromListMembersByIDsRow(row dbgen.ListMembersByIDsRow) Member

	// goverter:map ID Id
	// goverter:ignore Notes RsiInfo Avatar Suffix
	// goverter:ignore MemberSince DKP DKPSpent Merits Demerits BlueprintIds OnboardedAt Age
	// goverter:ignore Pronouns Playtime Gameplay Recruiter ChannelId MessageId FoundBy
	// goverter:ignore TimeZone Other LegacyAge LegacyPlaytime LegacyGameplay LegacyRecruiter LegacyOther
	FromListMembersPageRow(row dbgen.ListMembersPageRow) Member

	// goverter:map ID Id
	// goverter:ignore Notes RsiInfo Avatar Suffix
	// goverter:ignore MemberSince DKP DKPSpent Merits Demerits BlueprintIds OnboardedAt Age
	// goverter:ignore Pronouns Playtime Gameplay Recruiter ChannelId MessageId FoundBy
	// goverter:ignore TimeZone Other LegacyAge LegacyPlaytime LegacyGameplay LegacyRecruiter LegacyOther
	FromListMembersByBlueprintRow(row dbgen.ListMembersByBlueprintRow) Member

	// goverter:map ID Id
	// goverter:ignore Notes RsiInfo Avatar Suffix
	// goverter:ignore MemberSince DKP DKPSpent Merits Demerits BlueprintIds OnboardedAt Age
	// goverter:ignore Pronouns Playtime Gameplay Recruiter ChannelId MessageId FoundBy
	// goverter:ignore TimeZone Other LegacyAge LegacyPlaytime LegacyGameplay LegacyRecruiter LegacyOther
	FromListRandomMembersByRankRow(row dbgen.ListRandomMembersByRankRow) Member

	// Batch conversions for slices
	FromGetMemberRows(rows []dbgen.GetMemberRow) []Member
	FromListMembersPageRows(rows []dbgen.ListMembersPageRow) []Member
	FromListMembersByIDsRows(rows []dbgen.ListMembersByIDsRow) []Member
	FromListMembersByBlueprintRows(rows []dbgen.ListMembersByBlueprintRow) []Member
	FromListRandomMembersByRankRows(rows []dbgen.ListRandomMembersByRankRow) []Member

	FromRsiInfoRow(row dbgen.RsiInfo) *RsiInfo
	FromRsiInfoRows(rows []dbgen.RsiInfo) []*RsiInfo
}

goverter:converter goverter:output:file ./converters.gen.go goverter:extend PgTypeTextToString goverter:extend PgTypeTimestamptzToTime goverter:extend ConvertRank

type ConverterImpl added in v1.12.10

type ConverterImpl struct{}

func (*ConverterImpl) FromGetMemberRow added in v1.12.10

func (c *ConverterImpl) FromGetMemberRow(source dbgen.GetMemberRow) Member

func (*ConverterImpl) FromGetMemberRows added in v1.12.10

func (c *ConverterImpl) FromGetMemberRows(source []dbgen.GetMemberRow) []Member

func (*ConverterImpl) FromListMembersByBlueprintRow added in v1.12.10

func (c *ConverterImpl) FromListMembersByBlueprintRow(source dbgen.ListMembersByBlueprintRow) Member

func (*ConverterImpl) FromListMembersByBlueprintRows added in v1.12.10

func (c *ConverterImpl) FromListMembersByBlueprintRows(source []dbgen.ListMembersByBlueprintRow) []Member

func (*ConverterImpl) FromListMembersByIDsRow added in v1.12.10

func (c *ConverterImpl) FromListMembersByIDsRow(source dbgen.ListMembersByIDsRow) Member

func (*ConverterImpl) FromListMembersByIDsRows added in v1.12.10

func (c *ConverterImpl) FromListMembersByIDsRows(source []dbgen.ListMembersByIDsRow) []Member

func (*ConverterImpl) FromListMembersPageRow added in v1.12.10

func (c *ConverterImpl) FromListMembersPageRow(source dbgen.ListMembersPageRow) Member

func (*ConverterImpl) FromListMembersPageRows added in v1.12.10

func (c *ConverterImpl) FromListMembersPageRows(source []dbgen.ListMembersPageRow) []Member

func (*ConverterImpl) FromListMembersRow added in v1.14.13

func (c *ConverterImpl) FromListMembersRow(source dbgen.ListMembersRow) Member

func (*ConverterImpl) FromListMembersRows added in v1.14.13

func (c *ConverterImpl) FromListMembersRows(source []dbgen.ListMembersRow) []Member

func (*ConverterImpl) FromListRandomMembersByRankRow added in v1.12.10

func (c *ConverterImpl) FromListRandomMembersByRankRow(source dbgen.ListRandomMembersByRankRow) Member

func (*ConverterImpl) FromListRandomMembersByRankRows added in v1.12.10

func (c *ConverterImpl) FromListRandomMembersByRankRows(source []dbgen.ListRandomMembersByRankRow) []Member

func (*ConverterImpl) FromRsiInfoRow added in v1.12.10

func (c *ConverterImpl) FromRsiInfoRow(source dbgen.RsiInfo) *RsiInfo

func (*ConverterImpl) FromRsiInfoRows added in v1.12.10

func (c *ConverterImpl) FromRsiInfoRows(source []dbgen.RsiInfo) []*RsiInfo

type Demerit

type Demerit struct {
	Giver  Member    `json:"giver"`
	Reason string    `json:"reason"`
	When   time.Time `json:"when"`
}

type GameplayType

type GameplayType string
const (
	Unknown        GameplayType = "unknown"
	BountyHunting  GameplayType = "bounty_hunting"
	Engineering    GameplayType = "engineering"
	Exporation     GameplayType = "exporation"
	FpsCombat      GameplayType = "fps_combat"
	Hauling        GameplayType = "hauling"
	Medical        GameplayType = "medical"
	Mining         GameplayType = "mining"
	Reconnaissance GameplayType = "reconnaissance"
	Racing         GameplayType = "racing"
	Scrapping      GameplayType = "scrapping"
	ShipCrew       GameplayType = "ship_crew"
	ShipCombat     GameplayType = "ship_combat"
	Trading        GameplayType = "trading"
)

func ToGameplayType

func ToGameplayType(s string) GameplayType

func (GameplayType) String

func (g GameplayType) String() string

type Member

type Member struct {
	Id          string     `json:"id"`
	Name        string     `json:"name"`
	Rank        ranks.Rank `json:"rank"`
	Notes       string     `json:"notes"`
	Avatar      string     `json:"avatar"`
	Updated     time.Time  `json:"updated"`
	ValidatedAt *time.Time `json:"validated_at"`
	Joined      time.Time  `json:"joined"`
	Suffix      string     `json:"suffix"`
	DmOptOut    bool       `json:"dm_opt_out"`
	DateLeft    *time.Time `json:"date_left"`

	RsiInfo *RsiInfo `json:"rsi_info"`

	MemberSince time.Time `json:"member_since"`

	IsBot       bool `json:"is_bot"`
	IsAlly      bool `json:"is_ally"`
	IsAffiliate bool `json:"is_affiliate"`

	DKP      []string `json:"dkp"`
	DKPSpent int      `json:"dkp_spent"`

	Merits   []*Merit   `json:"merits"`
	Demerits []*Demerit `json:"demerits"`

	BlueprintIds []string `json:"blueprintIds"`

	// onboarding info
	OnboardedAt *time.Time     `json:"onboarded_at"`
	Age         int            `json:"age"`
	Pronouns    string         `json:"pronouns"`
	Playtime    int            `json:"playtime"`
	Gameplay    []GameplayType `json:"gameplay"`
	Recruiter   *string        `json:"recruiter"`
	ChannelId   string         `json:"channel_id"`
	MessageId   string         `json:"message_id"`
	FoundBy     string         `json:"found_by"`
	TimeZone    string         `json:"time_zone"`
	Other       string         `json:"other"`

	LegacyAge       string `json:"legacy_age"`
	LegacyPlaytime  string `json:"legacy_playtime"`
	LegacyGameplay  string `json:"legacy_gameplay"`
	LegacyRecruiter string `json:"legacy_recruiter"`
	LegacyOther     string `json:"legacy_other"`
}

func Get

func Get(id string) (*Member, error)

func GetList

func GetList(ids []string) ([]*Member, error)

func GetRandom

func GetRandom(max int, maxRank ranks.Rank) ([]Member, error)

func List

func List(ctx context.Context, page, limit int) ([]Member, error)

func ListAll added in v1.14.14

func ListAll(ctx context.Context) ([]Member, error)

func ListByBlueprint

func ListByBlueprint(blueprintId string) ([]Member, error)

func New

func New(discordMember *discordgo.Member) *Member

func (*Member) ApplyDiscordMember added in v1.14.15

func (m *Member) ApplyDiscordMember(discordMember *discordgo.Member) bool

ApplyDiscordMember updates member fields from Discord data and returns whether any member fields changed.

func (*Member) BadAffiliation

func (m *Member) BadAffiliation() bool

func (*Member) Delete

func (m *Member) Delete(reason string) error

func (*Member) GetOnboardingMessage

func (m *Member) GetOnboardingMessage() *discordgo.Message

func (*Member) GetTrueNick

func (m *Member) GetTrueNick(discordMember *discordgo.Member) string

func (*Member) GiveDemerit

func (m *Member) GiveDemerit(reason string, who *Member) error

func (*Member) GiveMerit

func (m *Member) GiveMerit(reason string, who *Member) error

func (*Member) IsAdmin

func (m *Member) IsAdmin() bool

func (*Member) IsOfficer

func (m *Member) IsOfficer() bool

func (*Member) IsRanked

func (m *Member) IsRanked() bool

func (*Member) OnRsi added in v1.12.10

func (m *Member) OnRsi() bool

func (*Member) OptOutOfDMs added in v1.12.10

func (m *Member) OptOutOfDMs() error

func (*Member) Save

func (m *Member) Save() error

func (*Member) ToJSON

func (m *Member) ToJSON() ([]byte, error)

func (*Member) ToMap

func (m *Member) ToMap() map[string]any

func (*Member) UpdateFromDiscordMember added in v1.12.10

func (m *Member) UpdateFromDiscordMember(discordMember *discordgo.Member) error

func (*Member) UpdateRank added in v1.12.16

func (m *Member) UpdateRank(discordRoles []string)

func (*Member) UpdateRsiInfo added in v1.12.10

func (m *Member) UpdateRsiInfo() error

type MemberError

type MemberError error
var (
	MemberNotFound MemberError = errors.New("member not found")
)

type Merit

type Merit struct {
	Giver  Member    `json:"giver"`
	Reason string    `json:"reason"`
	When   time.Time `json:"when"`
}

type RsiInfo added in v1.12.10

type RsiInfo struct {
	Handle        string   `json:"handle"`
	PrimaryOrg    string   `json:"primary_org"`
	PrimaryOrgSid string   `json:"primary_org_sid"`
	Affiliations  []string `json:"affiliations"`
}

func (*RsiInfo) Save added in v1.12.10

func (r *RsiInfo) Save() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL