diff options
| author | Xe Iaso <me@xeiaso.net> | 2024-09-02 09:33:04 -0400 |
|---|---|---|
| committer | Xe Iaso <me@xeiaso.net> | 2024-09-02 09:33:04 -0400 |
| commit | 4628a6e4ba4920925bef6b5dbb6dfd15c7b08a73 (patch) | |
| tree | 34aefa02776bec947c3cb6f38b7c1fd69f7a9d2f /cmd/aerial/main.go | |
| parent | a2cf1050866bc902ad014ab21767531ff64a337a (diff) | |
| download | x-4628a6e4ba4920925bef6b5dbb6dfd15c7b08a73.tar.xz x-4628a6e4ba4920925bef6b5dbb6dfd15c7b08a73.zip | |
import cmd/aerial
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd/aerial/main.go')
| -rw-r--r-- | cmd/aerial/main.go | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/cmd/aerial/main.go b/cmd/aerial/main.go new file mode 100644 index 0000000..e62e977 --- /dev/null +++ b/cmd/aerial/main.go @@ -0,0 +1,88 @@ +package main + +import ( + "flag" + "fmt" + "log" + "os" + "regexp" + "time" + + "github.com/bwmarrin/discordgo" + _ "github.com/joho/godotenv/autoload" + "within.website/x/internal/pvfm/bot" + "within.website/x/internal/pvfm/commands/source" +) + +type aerial struct { + cs *bot.CommandSet + s *discordgo.Session +} + +const ( + djonHelp = `` + djoffHelp = `` + setupHelp = `` +) + +func (a *aerial) Handle(s *discordgo.Session, m *discordgo.MessageCreate) { + err := a.cs.Run(s, m.Message) + if err != nil { + log.Println(err) + } +} + +var ( + token = os.Getenv("TOKEN") + youtubeSpamRoomID = os.Getenv("DISCORD_YOUTUBESPAM_ROOMID") + gClientID = os.Getenv("GOOGLE_CLIENT_ID") + gClientSecret = os.Getenv("GOOGLE_CLIENT_SECRET") + + musicLinkRegex = regexp.MustCompile(`(.*)((http(s?):\/\/(www\.)?soundcloud.com\/.*)|(http(s?):\/\/(www\.)?youtube.com\/.*)|(http(s?):\/\/(www\.)?youtu.be\/.*))(.*)|(.*)http(s?):\/\/(www\.)?mixcloud.com\/.*`) +) + +func main() { + flag.Parse() + dg, err := discordgo.New("Bot " + token) + if err != nil { + log.Fatal(err) + } + + a := &aerial{ + cs: bot.NewCommandSet(), + s: dg, + } + + a.cs.Prefix = ";" + a.cs.AddCmd("np", "shows radio station statistics for Ponyville FM", bot.NoPermissions, stats) + a.cs.AddCmd("stats", "shows radio station statistics for Ponyville FM", bot.NoPermissions, stats) + a.cs.AddCmd("dj", "shows which DJ is up next on Ponyville FM", bot.NoPermissions, stats) + a.cs.AddCmd("schedule", "shows the future radio schedule for Ponyville FM", bot.NoPermissions, schedule) + a.cs.AddCmd("hipster", "hip me up fam", bot.NoPermissions, hipster) + a.cs.AddCmd("source", "source code information", bot.NoPermissions, source.Source) + a.cs.AddCmd("time", "shows the current bot time", bot.NoPermissions, curTime) + a.cs.AddCmd("streams", "shows the different Ponyville FM stream links", bot.NoPermissions, streams) + a.cs.AddCmd("servers", "shows the different Ponyville FM stream links", bot.NoPermissions, streams) + a.cs.AddCmd("derpi", "grabs a random **__safe__** image from Derpibooru with the given search results", bot.NoPermissions, derpi) + a.cs.AddCmd("weather", "how's the weather right now?", bot.NoPermissions, weather) + + dg.AddHandler(a.Handle) + dg.AddHandler(pesterLink) + dg.AddHandler(messageCreate) + + err = dg.Open() + if err != nil { + log.Fatal(err) + } + + log.Println("ready") + + <-make(chan struct{}) +} + +// This function will be called (due to AddHandler above) every time a new +// message is created on any channel that the autenticated bot has access to. +func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) { + // Print message to stdout. + fmt.Printf("%20s %20s %20s %20s > %s\n", m.Author.ID, m.ChannelID, time.Now().Format(time.Stamp), m.Author.Username, m.Content) +} |
