storage

package
v0.0.0-...-f3179c4 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2023 License: GPL-3.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ChatLog

type ChatLog struct {
	Timestamp        int64
	DiscordUserID    string
	DiscordChannel   string
	Message          string
	DiscordMessageID string
}

ChatLog represents a single logged chat message from Discord

type Config

type Config struct {
	MongoHost string `split_words:"true" required:"true"`
	MongoPort string `split_words:"true" required:"true"`
	MongoName string `split_words:"true" required:"true"`
	MongoUser string `split_words:"true" required:"true"`
	MongoPass string `split_words:"true" required:"false"`
}

Config represents database connection info

type Memory

type Memory struct{}

func (*Memory) AddEmojiReactionToUser

func (m *Memory) AddEmojiReactionToUser(discordUserID string, emoji string) (err error)

func (*Memory) FetchReadmeMessage

func (m *Memory) FetchReadmeMessage(gistID string, gistFile github.GistFilename) (message string, err error)

func (*Memory) GetCommandSettings

func (m *Memory) GetCommandSettings(command string) (settings types.CommandSettings, found bool, err error)

func (*Memory) GetDiscordUserForumUser

func (m *Memory) GetDiscordUserForumUser(forumUserID string) (discordUserID string, err error)

func (*Memory) GetDiscordUserFromForumName

func (m *Memory) GetDiscordUserFromForumName(forumName string) (legacyUserID string, burgerUserID string, err error)

func (*Memory) GetForumNameFromDiscordUser

func (m *Memory) GetForumNameFromDiscordUser(discordUserID string) (legacyUserName string, burgerUserName string, err error)

func (*Memory) GetForumUserFromDiscordUser

func (m *Memory) GetForumUserFromDiscordUser(discordUserID string) (legacyUserID string, burgerUserID string, err error)

func (*Memory) GetMessageByID

func (m *Memory) GetMessageByID(messageID string) (message ChatLog, err error)

func (*Memory) GetMessagesForUser

func (m *Memory) GetMessagesForUser(discordUserID string) (messages []ChatLog, err error)

func (*Memory) GetRandomMessage

func (m *Memory) GetRandomMessage() (result ChatLog, err error)

func (*Memory) GetRandomMessageFromUsers

func (m *Memory) GetRandomMessageFromUsers([]string) (result ChatLog, err error)

func (*Memory) GetRandomUser

func (m *Memory) GetRandomUser() (result string, err error)

func (*Memory) GetReadmeMessage

func (m *Memory) GetReadmeMessage() (message string, err error)

func (*Memory) GetTopMessages

func (m *Memory) GetTopMessages(top int) (result TopMessages, err error)

func (*Memory) GetTopReactions

func (m *Memory) GetTopReactions(top int, reaction string) (result []TopReactionEntry, err error)

func (*Memory) GetUserMessageCount

func (m *Memory) GetUserMessageCount(discordUserID string) (messageCount int, err error)

func (*Memory) GetUserOrCreate

func (m *Memory) GetUserOrCreate(discordUserID string) (result User)

func (*Memory) GetUserRank

func (m *Memory) GetUserRank(discordUserID string) (rank int, err error)

func (*Memory) IsUserLegacyVerified

func (m *Memory) IsUserLegacyVerified(discordUserID string) (verified bool, err error)

func (*Memory) IsUserVerified

func (m *Memory) IsUserVerified(discordUserID string) (verified bool, err error)

func (*Memory) RecordChatLog

func (m *Memory) RecordChatLog(discordUserID string, discordChannel string, message string, messageID string) (err error)

func (*Memory) RemoveEmojiReactionFromUser

func (m *Memory) RemoveEmojiReactionFromUser(discordUserID string, emoji string) (err error)

func (*Memory) RemoveUser

func (m *Memory) RemoveUser(id string) (err error)

func (*Memory) SetCommandSettings

func (m *Memory) SetCommandSettings(command string, settings types.CommandSettings) (err error)

func (*Memory) UpdateReadmeMessage

func (m *Memory) UpdateReadmeMessage(session *discordgo.Session, original *discordgo.Message, upstream string) (err error)

func (*Memory) UpdateUser

func (m *Memory) UpdateUser(user User) (err error)

func (*Memory) UpdateUserUsername

func (m *Memory) UpdateUserUsername(discordUserID string, username string) (err error)

type MongoStorer

type MongoStorer struct {
	// contains filtered or unexported fields
}

MongoStorer exposes a storage MongoStorer for the bot

func New

func New(config Config) (m *MongoStorer, err error)

New constructs a new storage API and connects to the database

func (*MongoStorer) AddEmojiReactionToUser

func (m *MongoStorer) AddEmojiReactionToUser(discordUserID string, emoji string) (err error)

AddEmojiReactionToUser records an emoji reaction to a message of a discordUser.

func (*MongoStorer) FetchReadmeMessage

func (m *MongoStorer) FetchReadmeMessage(gistID string, gistFile github.GistFilename) (message string, err error)

FetchReadmeMessage fetches already sent message to upstream

func (*MongoStorer) GetCommandSettings

func (m *MongoStorer) GetCommandSettings(command string) (settings types.CommandSettings, found bool, err error)

GetCommandSettings returns command settings and uses a cache

func (*MongoStorer) GetDiscordUserForumUser

func (m *MongoStorer) GetDiscordUserForumUser(forumUserID string) (discordUserID string, err error)

GetDiscordUserForumUser returns a discord user, a blank string or an error

func (*MongoStorer) GetDiscordUserFromForumName

func (m *MongoStorer) GetDiscordUserFromForumName(forumName string) (legacyUserID string, burgerUserID string, err error)

GetDiscordUserFromForumName returns user's name on SA-MP Forums, a blank string or an error

func (*MongoStorer) GetForumNameFromDiscordUser

func (m *MongoStorer) GetForumNameFromDiscordUser(discordUserID string) (legacyUserName string, burgerUserName string, err error)

GetForumNameFromDiscordUser returns user's name on SA-MP Forums & Burgershot, a blank string or an error

func (*MongoStorer) GetForumUserFromDiscordUser

func (m *MongoStorer) GetForumUserFromDiscordUser(discordUserID string) (legacyUserID string, burgerUserID string, err error)

GetForumUserFromDiscordUser returns a link to user's profile, a blank string or an error

func (*MongoStorer) GetMessageByID

func (m *MongoStorer) GetMessageByID(messageID string) (message ChatLog, err error)

func (*MongoStorer) GetMessagesForUser

func (m *MongoStorer) GetMessagesForUser(discordUserID string) (messages []ChatLog, err error)

GetMessagesForUser returns all messages from the given discord user.

func (*MongoStorer) GetRandomMessage

func (m *MongoStorer) GetRandomMessage() (log ChatLog, err error)

GetRandomMessage returns a random message from the database.

func (*MongoStorer) GetRandomMessageFromUsers

func (m *MongoStorer) GetRandomMessageFromUsers(users []string) (result ChatLog, err error)

func (*MongoStorer) GetRandomUser

func (m *MongoStorer) GetRandomUser() (discordUserID string, err error)

GetRandomUser returns a random Discord user ID

func (*MongoStorer) GetReadmeMessage

func (m *MongoStorer) GetReadmeMessage() (message string, err error)

GetReadmeMessage gets the readme message id from the database

func (*MongoStorer) GetTopMessages

func (m *MongoStorer) GetTopMessages(top int) (result TopMessages, err error)

GetTopMessages returns n users with the most messages

func (*MongoStorer) GetTopReactions

func (m *MongoStorer) GetTopReactions(top int, reaction string) (result []TopReactionEntry, err error)

GetTopReactions gets the top <top> amount of people who received reaction <reaction>

func (*MongoStorer) GetUserMessageCount

func (m *MongoStorer) GetUserMessageCount(discordUserID string) (messageCount int, err error)

func (*MongoStorer) GetUserOrCreate

func (m *MongoStorer) GetUserOrCreate(discordUserID string) (user User)

GetUserOrCreate gets a user or creates one and returns it

func (*MongoStorer) GetUserRank

func (m *MongoStorer) GetUserRank(discordUserID string) (rank int, err error)

GetUserRank returns rank according to most messages sent with the top user having rank 1

func (*MongoStorer) IsUserLegacyVerified

func (m *MongoStorer) IsUserLegacyVerified(discordUserID string) (verified bool, err error)

IsUserLegacyVerified returns a discord user, a blank string or an error Difference between IsUserVerified: this specifically checks if the user verified on SA:MP.

func (*MongoStorer) IsUserVerified

func (m *MongoStorer) IsUserVerified(discordUserID string) (verified bool, err error)

IsUserVerified returns a discord user, a blank string or an error Difference between IsUserLegacyVerified: this specifically checks if the user verified on burgershot.

func (*MongoStorer) RecordChatLog

func (m *MongoStorer) RecordChatLog(discordUserID, discordChannel, message, messageID string) (err error)

RecordChatLog records a chat message from a user in a channel

func (*MongoStorer) RemoveEmojiReactionFromUser

func (m *MongoStorer) RemoveEmojiReactionFromUser(discordUserID string, emoji string) (err error)

RemoveEmojiReactionFromUser records an emoji reaction to a message of a discordUser.

func (*MongoStorer) RemoveUser

func (m *MongoStorer) RemoveUser(id string) (err error)

RemoveUser removes a user by their Discord ID

func (*MongoStorer) SetCommandSettings

func (m *MongoStorer) SetCommandSettings(command string, settings types.CommandSettings) (err error)

SetCommandSettings upsets command settings

func (*MongoStorer) UpdateReadmeMessage

func (m *MongoStorer) UpdateReadmeMessage(session *discordgo.Session, original *discordgo.Message, upstream string) (err error)

UpdateReadmeMessage updates the message in both channel and database

func (*MongoStorer) UpdateUser

func (m *MongoStorer) UpdateUser(user User) (err error)

UpdateUser aims to update a full document of a user

func (*MongoStorer) UpdateUserUsername

func (m *MongoStorer) UpdateUserUsername(discordUserID string, username string) (err error)

UpdateUserUsername updates a person's Burgershot forum name in the database. In case they have their name changed.

type ReactionCounter

type ReactionCounter struct {
	Counter  int
	Reaction string
}

type Readme

type Readme struct {
	MessageID string `json:"readme_message_id" bson:"readme_message_id"`
}

Readme holds the readme message id from the mongo database

type Storer

type Storer interface {
	RecordChatLog(discordUserID, discordChannel, message, messageID string) (err error)
	GetMessagesForUser(discordUserID string) (messages []ChatLog, err error)
	GetTopMessages(top int) (result TopMessages, err error)
	GetUserMessageCount(discordUserID string) (messageCount int, err error)
	GetUserRank(discordUserID string) (rank int, err error)
	GetRandomMessage() (result ChatLog, err error)
	GetRandomMessageFromUsers([]string) (result ChatLog, err error)
	GetRandomUser() (result string, err error)
	GetMessageByID(messageID string) (message ChatLog, err error)

	GetUserOrCreate(discordUserID string) (result User)
	UpdateUserUsername(discordUserID, username string) (err error)
	UpdateUser(user User) (err error)
	RemoveUser(id string) (err error)
	IsUserVerified(discordUserID string) (verified bool, err error)
	IsUserLegacyVerified(discordUserID string) (verified bool, err error)
	GetDiscordUserForumUser(forumUserID string) (discordUserID string, err error)
	GetForumUserFromDiscordUser(discordUserID string) (legacyUserID, burgerUserID string, err error)
	GetForumNameFromDiscordUser(discordUserID string) (legacyUserName, burgerUserName string, err error)
	GetDiscordUserFromForumName(forumName string) (legacyUserID, burgerUserID string, err error)
	AddEmojiReactionToUser(discordUserID, emoji string) (err error)
	RemoveEmojiReactionFromUser(discordUserID, emoji string) (err error)
	GetTopReactions(top int, reaction string) (result []TopReactionEntry, err error)

	SetCommandSettings(command string, settings types.CommandSettings) (err error)
	GetCommandSettings(command string) (settings types.CommandSettings, found bool, err error)

	GetReadmeMessage() (message string, err error)
	FetchReadmeMessage(gistID string, gistFile github.GistFilename) (message string, err error)
	UpdateReadmeMessage(session *discordgo.Session, original *discordgo.Message, upstream string) (err error)
}

Storer describes a type that is capable of persisting data

type TopMessages

type TopMessages []TopMessagesEntry

TopMessages is a list of users with the most messages

func (TopMessages) Len

func (s TopMessages) Len() int

func (TopMessages) Less

func (s TopMessages) Less(i, j int) bool

func (TopMessages) Swap

func (s TopMessages) Swap(i, j int)

type TopMessagesEntry

type TopMessagesEntry struct {
	User     string `bson:"_id"`
	Messages int    `bson:"count"`
}

TopMessagesEntry is a user and their message count

type TopReactionEntry

type TopReactionEntry struct {
	UserID   string `bson:"discord_user_id"`
	Counter  int    `bson:"counter"`
	Reaction string `bson:"reaction"`
}

type User

type User struct {
	DiscordUserID     string            `json:"discord_user_id" bson:"discord_user_id"`
	ForumUserID       string            `json:"forum_user_id" bson:"forum_user_id"`
	BurgerUserID      string            `json:"burger_user_id" bson:"burger_user_id"`
	ForumUserName     string            `json:"forum_user_name" bson:"forum_user_name"`
	BurgerUserName    string            `json:"burger_user_name" bson:"burger_user_name"`
	BurgerVerify      bool              `json:"burgershot_verified" bson:"burgershot_verified"`
	ReceivedReactions []ReactionCounter `json:"received_reactions" bson:"received_reactions,omitempty"`
}

User is a recorded and verified burgershot forum user.

Jump to

Keyboard shortcuts

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