logs

package
v1.20.3 Latest Latest
Warning

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

Go to latest
Published: Aug 28, 2019 License: MIT Imports: 29 Imported by: 0

README

Logs

The logs plugin logs certain information from servers.

  • Can store a subset of the message history with deleted messages
  • Username changes

Documentation

Index

Constants

View Source
const CacheKeyConfig bot.GSCacheKey = "logs_config"

Variables

View Source
var AuthorColors = []string{
	"7c7cff",
	"529fb7",
	"4aa085",
	"7ea04a",
	"a0824a",
	"a04a4a",
	"a04a89",
}
View Source
var DBSchemas = []string{`
CREATE TABLE IF NOT EXISTS message_logs2 (
	id INT NOT NULL,
	guild_id BIGINT NOT NULL,
	legacy_id INT NOT NULL,

	created_at TIMESTAMP WITH TIME ZONE NOT NULL,
	updated_at TIMESTAMP WITH TIME ZONE NOT NULL,

	channel_name TEXT NOT NULL,
	channel_id BIGINT NOT NULL,
	author_id BIGINT NOT NULL,
	author_username TEXT NOT NULL,

	messages BIGINT[],

	PRIMARY KEY(guild_id, id)
);
`,

	`
CREATE TABLE IF NOT EXISTS messages2 (
	id BIGINT PRIMARY KEY,
	guild_id BIGINT NOT NULL,

	created_at TIMESTAMP WITH TIME ZONE NOT NULL,
	updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
	deleted BOOLEAN NOT NULL,

	author_username TEXT NOT NULL,
	author_id BIGINT NOT NULL,

	content TEXT NOT NULL
);
`, `

CREATE TABLE IF NOT EXISTS guild_logging_configs (
	guild_id BIGINT PRIMARY KEY,

	created_at TIMESTAMP WITH TIME ZONE,
	updated_at TIMESTAMP WITH TIME ZONE,

	username_logging_enabled BOOLEAN,
	nickname_logging_enabled BOOLEAN,

	blacklisted_channels TEXT,
	manage_messages_can_view_deleted BOOLEAN,
	everyone_can_view_deleted BOOLEAN
);`,

	`ALTER TABLE guild_logging_configs ADD COLUMN IF NOT EXISTS message_logs_allowed_roles BIGINT[];`,

	`CREATE TABLE IF NOT EXISTS username_listings (
	id SERIAL PRIMARY KEY,

	created_at TIMESTAMP WITH TIME ZONE,
	updated_at TIMESTAMP WITH TIME ZONE,
	deleted_at TIMESTAMP WITH TIME ZONE,

	user_id BIGINT,
	username TEXT
);`,

	`CREATE INDEX IF NOT EXISTS idx_username_listings_user_id ON username_listings(user_id);`,

	`CREATE TABLE IF NOT EXISTS nickname_listings (
	id SERIAL PRIMARY KEY,

	created_at TIMESTAMP WITH TIME ZONE,
	updated_at TIMESTAMP WITH TIME ZONE,
	deleted_at TIMESTAMP WITH TIME ZONE,

	user_id BIGINT,
	guild_id TEXT,
	nickname TEXT
);`,

	`CREATE INDEX IF NOT EXISTS idx_nickname_listings_deleted_at ON nickname_listings(deleted_at);`,

	`DROP INDEX IF EXISTS idx_nickname_listings_user_id;`,
	`DROP INDEX IF EXISTS nickname_listings_user_id_guild_idx;`,

	`CREATE INDEX IF NOT EXISTS nickname_listings_user_id_guild_id_id_idx ON nickname_listings(user_id, guild_id, id);`,
}
View Source
var (
	ErrChannelBlacklisted = errors.New("Channel blacklisted from creating message logs")
)

Functions

func CheckCanAccessLogs added in v1.19.13

func CheckCanAccessLogs(w http.ResponseWriter, r *http.Request, config *models.GuildLoggingConfig) bool

func CheckNickname

func CheckNickname(exec boil.ContextExecutor, ctx context.Context, nicknameStmt *sql.Stmt, userID, guildID int64, nickname string) error

func CheckUsername

func CheckUsername(exec boil.ContextExecutor, ctx context.Context, usernameStmt *sql.Stmt, user *discordgo.User) error

func CreateChannelLog

func CreateChannelLog(ctx context.Context, config *models.GuildLoggingConfig, guildID, channelID int64, author string, authorID int64, count int) (*models.MessageLogs2, error)
func CreateLink(guildID int64, id int) string

func EvtProcesser

func EvtProcesser()

Queue up all the events and process them one by one, because of limited connections

func EvtProcesserGCs

func EvtProcesserGCs()

func GetChannelLogs

func GetChannelLogs(ctx context.Context, id, guildID int64, sm SearchMode) (*models.MessageLogs2, []*models.Messages2, error)

func GetConfig

func GetConfig(exec boil.ContextExecutor, ctx context.Context, guildID int64) (*models.GuildLoggingConfig, error)

Returns either stored config, err or a default config

func GetConfigCached added in v1.18.3

func GetConfigCached(exec boil.ContextExecutor, gID int64) (*models.GuildLoggingConfig, error)

func GetGuilLogs

func GetGuilLogs(ctx context.Context, guildID int64, before, after, limit int) ([]*models.MessageLogs2, error)

func GetNicknames

func GetNicknames(ctx context.Context, userID, guildID int64, limit, offset int) ([]*models.NicknameListing, error)

func GetUsernames

func GetUsernames(ctx context.Context, userID int64, limit, offset int) ([]*models.UsernameListing, error)

func HandleDeleteMessageJson

func HandleDeleteMessageJson(w http.ResponseWriter, r *http.Request) interface{}

func HandleGC

func HandleGC(evt *eventsystem.EventData)

func HandleLogsCP

func HandleLogsCP(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func HandleLogsCPDelete

func HandleLogsCPDelete(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func HandleLogsCPSaveGeneral

func HandleLogsCPSaveGeneral(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func HandleLogsHTML

func HandleLogsHTML(w http.ResponseWriter, r *http.Request) interface{}

func HandleMsgDelete

func HandleMsgDelete(evt *eventsystem.EventData) (retry bool, err error)

Mark all log messages with this id as deleted

func HandlePresenceUpdate

func HandlePresenceUpdate(evt *eventsystem.EventData)

func HandleQueueEvt

func HandleQueueEvt(evt *eventsystem.EventData)

While presence update is sent when user changes username.... MAKES NO SENSE IMO BUT WHATEVER Also check nickname incase the user came online

func LogFetchMW added in v1.19.13

func LogFetchMW(inner web.CustomHandlerFunc, legacy bool) web.CustomHandlerFunc

func ProcessBatch added in v1.19.6

func ProcessBatch(users []*UserGuildPair, members []*discordgo.Member) error

func RegisterPlugin added in v1.4.1

func RegisterPlugin()

func SetMessageLogsColors added in v1.19.13

func SetMessageLogsColors(guildID int64, views []*MessageView)

Types

type CCNameChange added in v1.20.0

type CCNameChange struct {
	Name string
	Time time.Time
}

type ConfigFormData added in v1.15.1

type ConfigFormData struct {
	UsernameLoggingEnabled       bool
	NicknameLoggingEnabled       bool
	ManageMessagesCanViewDeleted bool
	EveryoneCanViewDeleted       bool
	BlacklistedChannels          []string
	MessageLogsAllowedRoles      []int64
}

type DeleteData

type DeleteData struct {
	ID int64
}

type LightGC added in v1.4.1

type LightGC struct {
	GuildID int64
	Members []*discordgo.Member
}

type MessageView added in v1.19.13

type MessageView struct {
	Model *models.Messages2

	Color     string
	Timestamp string
}

type Plugin

type Plugin struct{}

func (*Plugin) AddCommands added in v1.4.1

func (p *Plugin) AddCommands()

func (*Plugin) BotInit added in v1.4.1

func (p *Plugin) BotInit()

func (*Plugin) InitWeb

func (lp *Plugin) InitWeb()

func (*Plugin) LoadServerHomeWidget added in v1.17.0

func (p *Plugin) LoadServerHomeWidget(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func (*Plugin) PluginInfo added in v1.17.0

func (p *Plugin) PluginInfo() *common.PluginInfo

type SearchMode added in v1.19.13

type SearchMode int
const (
	SearchModeNew SearchMode = iota
	SearchModeLegacy
)

type UserGuildPair added in v1.19.6

type UserGuildPair struct {
	GuildID int64
	User    *discordgo.User
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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