mirror of
https://github.com/diamondburned/arikawa.git
synced 2024-11-04 22:14:30 +00:00
diamondburned
aadcbd0767
* Middleware nameflag * Completed M-Middleware feature * Changed Namer/Descriptor API to CanSetup API
68 lines
1.5 KiB
Go
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
|
|
}
|