rolecommands

package
v0.29.1 Latest Latest
Warning

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

Go to latest
Published: May 23, 2018 License: MIT Imports: 32 Imported by: 0

README

Plugin that allows users to assign roles to themsleves

  • role options

    • names
    • group
    • require-roles
    • ignore-roles
    • allow-take-off-role
  • group options

    • name
    • require-roles
    • ignore-roles
    • mode
      • single
        • auto-take-away
        • require-one
      • multi
        • max-amount
        • min-amount
      • none

Documentation

Overview

rolecommands is a plugin which allows users to assign roles to themselves

Index

Constants

View Source
const (
	GroupModeNone = iota
	GroupModeSingle
	GroupModeMultiple
)
View Source
const (
	RoleMenuStateSettingUp = 0
	RoleMenuStateDone      = 1
)

Variables

This section is empty.

Functions

func AssignRole

func AssignRole(guildID int64, member *discordgo.Member, cmd *CommandGroupPair) (gaveRole bool, err error)

AssignRole attempts to assign the given role command, returns an error if the role does not exists or is unable to receie said role

func CanAssignRoleCmdTo

func CanAssignRoleCmdTo(r *models.RoleCommand, memberRoles []int64) error

func CheckIgnoredRoles

func CheckIgnoredRoles(ignore []int64, has []int64) error

func CheckRequiredRoles

func CheckRequiredRoles(requireOneOf []int64, has []int64) bool

func CmdFuncListCommands

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

func CmdFuncRole

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

func CmdFuncRoleMenu

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

func ContinueRoleMenuSetup

func ContinueRoleMenuSetup(rm *models.RoleMenu, ra *discordgo.MessageReactionAdd) (resp string, err error)

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 FindAssignRole

func FindAssignRole(guildID int64, member *discordgo.Member, name string) (gaveRole bool, err error)

func GetAllRoleCommandsSorted

func GetAllRoleCommandsSorted(guildID int64) (groups []*models.RoleGroup, grouped map[*models.RoleGroup][]*models.RoleCommand, unGrouped []*models.RoleCommand, err error)

func GroupAssignRoleToMember

func GroupAssignRoleToMember(rg *models.RoleGroup, guildID int64, member *discordgo.Member, targetRole *models.RoleCommand) (gaveRole bool, err error)

AssignRoleToMember attempts to assign the given role command, part of this group to the member

func HandleMoveCommand

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

func HandleNewCommand

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

func HandleNewGroup

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

func HandleRemoveCommand

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

func HandleRemoveGroup

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

func HandleSettings

func HandleSettings(w http.ResponseWriter, r *http.Request) (tmpl web.TemplateData, err error)

func HandleUpdateCommand

func HandleUpdateCommand(w http.ResponseWriter, r *http.Request) (tmpl web.TemplateData, err error)

func HandleUpdateGroup

func HandleUpdateGroup(w http.ResponseWriter, r *http.Request) (tmpl web.TemplateData, err error)

func HumanizeAssignError

func HumanizeAssignError(guild *dstate.GuildState, err error) (string, error)

func IsRoleCommandError

func IsRoleCommandError(err error) bool

func MemberChooseOption

func MemberChooseOption(rm *models.RoleMenu, ra *discordgo.MessageReactionAdd, gs *dstate.GuildState, option *models.RoleMenuOption) (resp string, err error)

func NewGroupError

func NewGroupError(msg string, group *models.RoleGroup) error

func NewLmitError

func NewLmitError(msg string, limit int) error

func NewRoleError

func NewRoleError(msg string, role int64) error

func NewSimpleError

func NewSimpleError(format string, args ...interface{}) error

func NextRoleMenuSetupStep

func NextRoleMenuSetupStep(rm *models.RoleMenu, opts []*models.RoleMenuOption, first bool) (resp string, err error)

func OptionCommandPairLessFunc

func OptionCommandPairLessFunc(slice []*OptionCommandPair) func(int, int) bool

func RegisterPlugin

func RegisterPlugin()

func RoleCommandsLessFunc

func RoleCommandsLessFunc(slice []*models.RoleCommand) func(int, int) bool

func StringCommands

func StringCommands(cmds []*models.RoleCommand) string

StringCommands pretty formats a bunch of commands into a string

func ToggleRole

func ToggleRole(guildID int64, member *discordgo.Member, role int64) (gaveRole bool, err error)

ToggleRole toggles the role of a guildmember, adding it if the member does not have the role and removing it if they do

func UpdateMenu

func UpdateMenu(parsed *dcmd.Data, existing *models.RoleMenu) (interface{}, error)

func UpdateRoleMenuMessage

func UpdateRoleMenuMessage(rm *models.RoleMenu, opts []*models.RoleMenuOption) error

Types

type CommandGroupPair

type CommandGroupPair struct {
	Command *models.RoleCommand
	Group   *models.RoleGroup
}

type FormCommand

type FormCommand struct {
	ID           int64
	Name         string `valid:",1,100,trimspace"`
	Role         int64  `valid:"role,false`
	Group        int64
	RequireRoles []int64 `valid:"role,true"`
	IgnoreRoles  []int64 `valid:"role,true"`
}

type FormGroup

type FormGroup struct {
	ID           int64
	Name         string  `valid:",1,100,trimspace"`
	RequireRoles []int64 `valid:"role,true"`
	IgnoreRoles  []int64 `valid:"role,true"`

	Mode int

	MultipleMax int
	MultipleMin int

	SingleAutoToggleOff bool
	SingleRequireOne    bool
}

type GroupError

type GroupError struct {
	Group   *models.RoleGroup
	Message string
}

func (*GroupError) Error

func (r *GroupError) Error() string

type LmitError

type LmitError struct {
	Limit   int
	Message string
}

func (*LmitError) Error

func (r *LmitError) Error() string

type OptionCommandPair

type OptionCommandPair struct {
	Option  *models.RoleMenuOption
	Command *models.RoleCommand
}

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 RoleError

type RoleError struct {
	Role    int64
	Message string
}

func (*RoleError) Error

func (r *RoleError) Error() string

func (*RoleError) PrettyError

func (r *RoleError) PrettyError(roles []*discordgo.Role) string

Uses the role name from one of the passed roles with matching id instead of the id

type SimpleError

type SimpleError string

Just a simple type but distinguishable from errors.Error

func (SimpleError) Error

func (s SimpleError) Error() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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