1
0
Fork 0
mirror of https://github.com/diamondburned/arikawa.git synced 2024-11-04 22:14:30 +00:00
arikawa/_example/advanced_bot/debug.go
diamondburned aadcbd0767
Added middleware features into package bot. (#3)
* Middleware nameflag
* Completed M-Middleware feature
* Changed Namer/Descriptor API to CanSetup API
2020-01-23 19:17:03 -08:00

68 lines
1.5 KiB
Go

package main
import (
"fmt"
"log"
"runtime"
"strings"
"github.com/diamondburned/arikawa/bot"
"github.com/diamondburned/arikawa/gateway"
)
// Flag for administrators only.
type Debug struct {
Context *bot.Context
}
// Setup demonstrates the CanSetup interface. This function will never be parsed
// as a callback of any event.
func (d *Debug) Setup(sub *bot.Subcommand) {
// Set a custom command (e.g. "!go ..."):
sub.Command = "go"
// Set a custom description:
sub.Description = "Print Go debugging variables"
// Manually set the usage for each function.
sub.ChangeCommandInfo("GOOS", "",
"Prints the current operating system")
sub.ChangeCommandInfo("GC", "",
"Triggers the garbage collecto")
sub.ChangeCommandInfo("Goroutines", "",
"Prints the current number of Goroutines")
}
// ~go goroutines
func (d *Debug) Goroutines(m *gateway.MessageCreateEvent) error {
_, err := d.Context.SendMessage(m.ChannelID, fmt.Sprintf(
"goroutines: %d",
runtime.NumGoroutine(),
), nil)
return err
}
// ~go GOOS
func (d *Debug) RーGOOS(m *gateway.MessageCreateEvent) error {
_, err := d.Context.SendMessage(
m.ChannelID, strings.Title(runtime.GOOS), nil)
return err
}
// ~go GC
func (d *Debug) RーGC(m *gateway.MessageCreateEvent) error {
runtime.GC()
_, err := d.Context.SendMessage(m.ChannelID, "Done.", nil)
return err
}
// ~go die
// This command will be hidden from ~help by default.
func (d *Debug) AーDie(m *gateway.MessageCreateEvent) error {
log.Fatalln("User", m.Author.Username, "killed the bot x_x")
return nil
}