defaults

package
v0.4.2 Latest Latest
Warning

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

Go to latest
Published: Aug 24, 2020 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Help = dbot.NewCommand("help").
			SetDescription("Show list of command or specific command usage.").
			AddTags("category:core").
			SetCooldown(time.Second * 5).
			SetFunc(func(ctx *dbot.MessageContext) error {
			categoryMap := make(map[string][]*dbot.Command)

			for _, command := range ctx.Bot.Commands {
				var cats []string

				for _, tag := range command.Tags {
					if strings.HasPrefix(tag, "category:") {
						cat := strings.Fields(strings.TrimPrefix(tag, "category:"))
						if len(cat) > 0 {
							cats = append(cats, cat...)
						}
					}
				}

				if cats == nil {
					cats = []string{"uncategorised"}
				}

				for _, c := range cats {
					categoryMap[c] = append(categoryMap[c], command)
				}
			}

			for _, commands := range categoryMap {
				sort.Slice(commands, func(i, j int) bool {
					return strings.Compare(commands[i].Name, commands[j].Name) > 0
				})
			}

			if len(ctx.Arguments) > 1 {
				cat := ctx.Arguments[1].String()

				commands, ok := categoryMap[cat]
				if !ok {
					return fmt.Errorf("category '%s' does not exist", cat)
				}

				var s []string

				for _, command := range commands {
					s = append(s, fmt.Sprintf("`%s`: %s", command.Name, command.Description))
				}

				err := ctx.SetField(cat, strings.Join(s, "\n"))
				if err != nil {
					return err
				}
			} else {
				var categories []string

				for cat := range categoryMap {
					categories = append(categories, cat)
				}

				sort.Strings(categories)

				for _, cat := range categories {
					var s []string

					for _, command := range categoryMap[cat] {
						s = append(s, fmt.Sprintf("`%s`: %s", command.Name, command.Description))
					}

					err := ctx.SetField(cat, strings.Join(s, "\n"))
					if err != nil {
						return err
					}
				}
			}

			return nil
		})

	Ping = dbot.NewCommand("ping").
			SetDescription("Check bot responsiveness.").
			AddTags("category:core").
			SetCooldown(time.Second * 5).
			SetFunc(func(ctx *dbot.MessageContext) error {
			then := time.Now()

			err := ctx.SetField("Latency", "...")
			if err != nil {
				return err
			}

			now, err := ctx.Response.Timestamp.Parse()
			if err != nil {
				return err
			}

			return ctx.SetField("Latency", fmt.Sprintf("%dms", now.Sub(then).Milliseconds()))
		})
)
View Source
var CoreDefaults = []*dbot.Command{
	Help, Ping,
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

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