common

package
v0.0.0-...-0abf00b Latest Latest
Warning

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

Go to latest
Published: Aug 11, 2023 License: AGPL-3.0 Imports: 6 Imported by: 0

Documentation

Overview

SPDX-License-Identifier: AGPL-3.0-only

SPDX-License-Identifier: AGPL-3.0-only

SPDX-License-Identifier: AGPL-3.0-only

SPDX-License-Identifier: AGPL-3.0-only

Index

Constants

This section is empty.

Variables

View Source
var DefaultPermissions = Nodes{

	{"level.*", EveryoneLevel},
	{"level.setxp", ManagerLevel},
	{"level.setlvl", ManagerLevel},
	{"level.config.*", ManagerLevel},
	{"level.config.import", AdminLevel},
	{"level.config.export", AdminLevel},
	{"level.background.server", ManagerLevel},
	{"nolevels.*", ModeratorLevel},
	{"leaderboard", EveryoneLevel},

	{"tickets.*", EveryoneLevel},
	{"tickets.config.*", ManagerLevel},
	{"tickets.list", ManagerLevel},

	{"roles", EveryoneLevel},
	{"roles.config.*", ManagerLevel},
	{"role", EveryoneLevel},
	{"role.info", EveryoneLevel},
	{"role.dump", ModeratorLevel},
	{"role.create", ManagerLevel},
	{"derole", EveryoneLevel},

	{"quote.*", EveryoneLevel},
	{"quote.delete", ModeratorLevel},
	{"quotes", EveryoneLevel},
	{"quotes.leaderboard", EveryoneLevel},
	{"quotes.toggle", ManagerLevel},
	{"quotes.messages", ManagerLevel},

	{"muteme", EveryoneLevel},
	{"pauseme", EveryoneLevel},
	{"muteme.message", ManagerLevel},

	{"warn", ModeratorLevel},
	{"unban", ManagerLevel},
	{"setnote", ModeratorLevel},
	{"reason", ModeratorLevel},
	{"purge", ModeratorLevel},
	{"notes", ModeratorLevel},
	{"notes.import", AdminLevel},
	{"notes.export", AdminLevel},
	{"modlog", ModeratorLevel},
	{"members", ModeratorLevel},
	{"massban", ManagerLevel},
	{"makeinvite", ManagerLevel},
	{"lockdown", ManagerLevel},
	{"exportemotes", ManagerLevel},
	{"embed.*", ManagerLevel},
	{"echo.*", ManagerLevel},
	{"delnote", ModeratorLevel},
	{"bgc", ModeratorLevel},
	{"ban", ManagerLevel},
	{"approve", ManagerLevel},
	{"addemoji", ManagerLevel},
	{"channelban", ManagerLevel},
	{"unchannelban", ManagerLevel},

	{"muterole", ManagerLevel},
	{"pauserole", ManagerLevel},
	{"reactroles.*", ManagerLevel},
	{"prefix.*", ManagerLevel},
	{"permissions.*", AdminLevel},
	{"watchlist.*", ManagerLevel},
	{"triggers.*", ManagerLevel},
	{"starboard.*", ManagerLevel},
	{"slowmode.*", ManagerLevel},
	{"modlog.import", ManagerLevel},
	{"modlog.export", ManagerLevel},
	{"modlog.channel", ManagerLevel},
	{"keyrole.*", ManagerLevel},
	{"cc.*", ManagerLevel},
	{"approval.*", ManagerLevel},

	{"captcha.*", ManagerLevel},
	{"agree", EveryoneLevel},

	{"8ball", EveryoneLevel},
	{"todo.*", EveryoneLevel},
	{"remindme.*", EveryoneLevel},
	{"userinfo", EveryoneLevel},
	{"user-cfg", EveryoneLevel},
	{"transcript", ManagerLevel},
	{"serverinfo", EveryoneLevel},
	{"sampa", EveryoneLevel},
	{"roll", EveryoneLevel},
	{"roleinfo", EveryoneLevel},
	{"reminders", EveryoneLevel},
	{"quickpoll", EveryoneLevel},
	{"pride", EveryoneLevel},
	{"poll", EveryoneLevel},
	{"ping", EveryoneLevel},
	{"message", EveryoneLevel},
	{"meow", EveryoneLevel},
	{"linkto", EveryoneLevel},
	{"invite", EveryoneLevel},
	{"idtime", EveryoneLevel},
	{"help", EveryoneLevel},
	{"getinvite", EveryoneLevel},
	{"enlarge", EveryoneLevel},
	{"embedsource", EveryoneLevel},
	{"delreminder", EveryoneLevel},
	{"complete", EveryoneLevel},
	{"colour", EveryoneLevel},
	{"bubble", EveryoneLevel},
	{"avatar", EveryoneLevel},
	{"about", EveryoneLevel},
}

Functions

func FormatTime

func FormatTime(t time.Time) string

Types

type BotConfig

type BotConfig struct {
	Token       string
	DatabaseURL string `yaml:"database_url"`
	SentryURL   string `yaml:"sentry_url"`

	AESKey string `yaml:"aes_key"`

	Prefixes []string
	Owners   []discord.UserID

	GlobalQuotes bool `yaml:"global_quotes"`

	NoSyncCommands bool              `yaml:"no_sync_commands"`
	SyncCommandsIn []discord.GuildID `yaml:"sync_commands_in"`
	AllowCCs       []discord.GuildID `yaml:"allow_ccs"` // Guilds to allow custom commands in

	GuildLogWebhook Webhook `yaml:"guild_log"`

	HTTPListen      string `yaml:"http_listen"`
	HTTPBaseURL     string `yaml:"http_base_url"`
	HCaptchaSitekey string `yaml:"hcaptcha_sitekey"`
	HCaptchaSecret  string `yaml:"hcaptcha_secret"`

	Branding struct {
		Name string

		Private  bool
		PublicID discord.UserID `yaml:"public_id"`

		SupportServer string `yaml:"support_server"`
	}

	DMs struct {
		Open    bool
		Webhook Webhook

		BlockedUsers []discord.UserID `yaml:"blocked_users"`
	} `yaml:"dms"`

	Termora struct {
		Guild       discord.GuildID   `yaml:"guild"`
		TermChannel discord.ChannelID `yaml:"term_channel"`
	} `yaml:"termora"`
}

BotConfig ...

type Node

type Node struct {
	Name  string
	Level PermissionLevel
}

Node is a permission node.

func (Node) IsWildcard

func (n Node) IsWildcard() bool

IsWildcard returns true if this node is a wildcard node.

func (Node) Matches

func (n Node) Matches(s string) bool

Matches returns if s matches this node. s matches if n.Name is identical to s, or if n is a wildcard node and s starts with n.Name.

type Nodes

type Nodes []Node

func (Nodes) Len

func (ns Nodes) Len() int

func (Nodes) Less

func (ns Nodes) Less(i, j int) bool

func (Nodes) NodeFor

func (ns Nodes) NodeFor(s string) Node

NodeFor returns the most specific permission node for the given command. It assumes ns has already been sorted with sort.Sort. If no valid nodes are found, returns InvalidLevel.

func (Nodes) Swap

func (ns Nodes) Swap(i, j int)

type PermissionLevel

type PermissionLevel int
const (
	DisabledLevel  PermissionLevel = 0
	EveryoneLevel  PermissionLevel = 1
	ModeratorLevel PermissionLevel = 2
	ManagerLevel   PermissionLevel = 3
	AdminLevel     PermissionLevel = 4
)

func (PermissionLevel) String

func (p PermissionLevel) String() string

type Webhook

type Webhook struct {
	ID    discord.WebhookID
	Token string
}

Webhook is a single webhook config

Jump to

Keyboard shortcuts

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