aboutsummaryrefslogtreecommitdiff
path: root/cmd/aerial/main.go
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2024-09-02 09:33:04 -0400
committerXe Iaso <me@xeiaso.net>2024-09-02 09:33:04 -0400
commit4628a6e4ba4920925bef6b5dbb6dfd15c7b08a73 (patch)
tree34aefa02776bec947c3cb6f38b7c1fd69f7a9d2f /cmd/aerial/main.go
parenta2cf1050866bc902ad014ab21767531ff64a337a (diff)
downloadx-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.go88
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)
+}