mirror of
https://github.com/diamondburned/arikawa.git
synced 2024-11-16 03:44:26 +00:00
64 lines
1.6 KiB
Go
64 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"runtime"
|
|
"strings"
|
|
|
|
"github.com/diamondburned/arikawa/v3/utils/bot"
|
|
"github.com/diamondburned/arikawa/v3/utils/bot/extras/middlewares"
|
|
"github.com/diamondburned/arikawa/v3/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.
|
|
|
|
// Those methods can take in a regular Go method reference.
|
|
sub.ChangeCommandInfo(d.GOOS, "GOOS", "Prints the current operating system")
|
|
sub.ChangeCommandInfo(d.GC, "GC", "Triggers the garbage collector")
|
|
// They could also take in the raw name.
|
|
sub.ChangeCommandInfo("Goroutines", "", "Prints the current number of Goroutines")
|
|
|
|
sub.Hide(d.Die)
|
|
sub.AddMiddleware(d.Die, middlewares.AdminOnly(d.Context))
|
|
}
|
|
|
|
// ~go goroutines
|
|
func (d *Debug) Goroutines(*gateway.MessageCreateEvent) (string, error) {
|
|
return fmt.Sprintf(
|
|
"goroutines: %d",
|
|
runtime.NumGoroutine(),
|
|
), nil
|
|
}
|
|
|
|
// ~go GOOS
|
|
func (d *Debug) GOOS(*gateway.MessageCreateEvent) (string, error) {
|
|
return strings.Title(runtime.GOOS), nil
|
|
}
|
|
|
|
// ~go GC
|
|
func (d *Debug) GC(*gateway.MessageCreateEvent) (string, error) {
|
|
runtime.GC()
|
|
return "Done.", nil
|
|
}
|
|
|
|
// ~go die
|
|
// This command will be hidden from ~help by default.
|
|
func (d *Debug) Die(m *gateway.MessageCreateEvent) error {
|
|
log.Fatalln("User", m.Author.Username, "killed the bot x_x")
|
|
return nil
|
|
}
|