reputation

package
v0.28.1 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2018 License: MIT Imports: 30 Imported by: 0

README

Reputation

This YAGPDB plugin adds a reputation system.

Provides the +/giverep, rep and toprep commands.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrMissingRequiredGiveRole    = UserError("Missing the required role to give points")
	ErrMissingRequiredReceiveRole = UserError("Missing the required role to receive points")

	ErrBlacklistedGive    = UserError("Blaclisted from giving points")
	ErrBlacklistedReceive = UserError("Blacklisted from receiving points")
	ErrCooldown           = UserError("You're still on cooldown")
)
View Source
var (
	ErrUserNotFound = errors.New("User not found")
)

Functions

func CanModifyRep

func CanModifyRep(conf *models.ReputationConfig, sender, receiver *discordgo.Member) error

Returns a user error if the sender can not modify the rep of receiver Admins are always able to modify the rep of everyone

func CheckSetCooldown

func CheckSetCooldown(conf *models.ReputationConfig, redisClient *redis.Client, senderID int64) (bool, error)

CheckSetCooldown checks and updates the reputation cooldown of a user, it returns true if the user was not on cooldown

func ClearCooldown

func ClearCooldown(redisClient *redis.Client, guildID, senderID int64) error

func CmdGiveRep

func CmdGiveRep(parsed *dcmd.Data) (interface{}, error)

func DefaultConfig

func DefaultConfig(guildID int64) *models.ReputationConfig

func Dir

func Dir(useLocal bool, name string) http.FileSystem

Dir returns a http.Filesystem for the embedded assets on a given prefix dir. If useLocal is true, the filesystem's contents are instead used.

func FS

func FS(useLocal bool) http.FileSystem

FS returns a http.Filesystem for the embedded assets. If useLocal is true, the filesystem's contents are instead used.

func FSByte

func FSByte(useLocal bool, name string) ([]byte, error)

FSByte returns the named file from the embedded assets. If useLocal is true, the filesystem's contents are instead used.

func FSMustByte

func FSMustByte(useLocal bool, name string) []byte

FSMustByte is the same as FSByte, but panics if name is not present.

func FSMustString

func FSMustString(useLocal bool, name string) string

FSMustString is the string version of FSMustByte.

func FSString

func FSString(useLocal bool, name string) (string, error)

FSString is the string version of FSByte.

func GetConfig

func GetConfig(guildID int64) (*models.ReputationConfig, error)

func GetUserStats

func GetUserStats(guildID, userID int64) (score int64, rank int, err error)

func HandleGetReputation

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

func HandleLeaderboardJson

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

func HandlePostReputation

func HandlePostReputation(w http.ResponseWriter, r *http.Request) (templateData web.TemplateData, err error)

func IsAdmin

func IsAdmin(gs *dstate.GuildState, member *discordgo.Member, config *models.ReputationConfig) bool

func KeyCooldown

func KeyCooldown(guildID, userID int64) string

func ModifyRep

func ModifyRep(conf *models.ReputationConfig, redisClient *redis.Client, guildID int64, sender, receiver *discordgo.Member, amount int64) (err error)

func RegisterPlugin

func RegisterPlugin()

func SetRep

func SetRep(gid int64, senderID, userID int64, points int64) error

Types

type LeaderboardEntry

type LeaderboardEntry struct {
	*RankEntry
	Username string `json:"username"`
	Bot      bool   `json:"bot"`
	Avatar   string `json:"avatar"`
}

func DetailedLeaderboardEntries

func DetailedLeaderboardEntries(guildID int64, ranks []*RankEntry) ([]*LeaderboardEntry, error)

type Plugin

type Plugin struct{}

func (*Plugin) InitBot

func (p *Plugin) InitBot()

func (*Plugin) InitWeb

func (p *Plugin) InitWeb()

func (*Plugin) Name

func (p *Plugin) Name() string

type PostConfigForm

type PostConfigForm struct {
	Enabled                bool
	PointsName             string `valid:",50"`
	Cooldown               int    `valid:"0,86401"` // One day
	MaxGiveAmount          int64
	RequiredGiveRole       string `valid:"role,true"`
	RequiredReceiveRole    string `valid:"role,true"`
	BlacklistedGiveRole    string `valid:"role,true"`
	BlacklistedReceiveRole string `valid:"role,true"`
	AdminRole              string `valid:"role,true"`
}

func (PostConfigForm) RepConfig

func (p PostConfigForm) RepConfig() *models.ReputationConfig

type RankEntry

type RankEntry struct {
	Rank   int   `json:"rank"`
	UserID int64 `json:"user_id"`
	Points int64 `json:"points"`
}

func TopUsers

func TopUsers(guildID int64, offset, limit int) ([]*RankEntry, error)

type UserError

type UserError string

func (UserError) Error

func (b UserError) Error() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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