discord-flauschbot/main.go

80 lines
2.9 KiB
Go
Raw Normal View History

2018-05-17 16:30:29 +02:00
package main
import (
"fmt"
"os/signal"
2018-06-03 10:40:28 +02:00
"os"
2018-05-17 16:30:29 +02:00
"syscall"
2018-05-26 12:51:05 +02:00
"log"
2018-05-17 16:30:29 +02:00
"github.com/bwmarrin/discordgo"
)
var config = readConfig()
2018-06-03 10:40:28 +02:00
var commands []Command
2018-05-17 16:30:29 +02:00
func main() {
dg, err := discordgo.New("Bot " + config.Token)
if err != nil {
fmt.Println("error: ", err)
return
}
/*
dg.AddHandler(evaluateMessage)
2018-05-17 16:30:29 +02:00
dg.AddHandler(onJoin)
err = dg.Open()
if err != nil {
fmt.Println("No connection:\n", err)
2018-05-17 16:30:29 +02:00
return
}
*/
2018-05-26 12:51:05 +02:00
f, err := os.OpenFile("selphybot.log", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666)
if err != nil {
fmt.Println("Error opening log file:\n", err)
2018-05-26 12:51:05 +02:00
}
defer f.Close()
log.SetOutput(f)
addCommands()
2018-06-04 02:32:40 +02:00
fmt.Println("Bot running. selphyWoo")
log.Println("Bot running. selphyWoo")
sc := make(chan os.Signal, 1)
signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill)
<-sc
2018-06-05 14:05:09 +02:00
fmt.Println("Exiting...")
log.Println("Exiting...")
dg.Close()
}
2018-06-05 14:05:09 +02:00
// I’ll just put all of the commands here for now.
func addCommands() {
// Moderation
registerCommand(Command{Trigger: "^[^`]*([()|DoO];|;[()|DoOpP]|:wink:|😉)[^`]*$", Output: "<@%s> Oboe!", DeleteInput: true, OutputIsReply: true, Type: CommandTypeRegex})
registerCommand(Command{Trigger: "!complain", Type: CommandTypePrefix, DMOnly: true, Function: redirectComplaint})
registerCommand(Command{Trigger: "!beschwerde", Type: CommandTypePrefix, DMOnly: true, Function: redirectComplaint})
2018-06-05 14:05:09 +02:00
for comm, _ := range config.RoleCommands {
registerCommand(Command{Trigger: comm, Type: CommandTypeFullMatch, DMOnly: true, Function: giveAgeRole})
}
2018-06-04 02:32:40 +02:00
// Misc commands
registerCommand(Command{Trigger: "o/", Output: "\\o", Type: CommandTypeFullMatch, Cooldown: 10})
registerCommand(Command{Trigger: "\\o", Output: "o/", Type: CommandTypeFullMatch, Cooldown: 10})
registerCommand(Command{Trigger: "\\o/", Output: "/o\\", Type: CommandTypeFullMatch, Cooldown: 10})
registerCommand(Command{Trigger: "<:selphyDango:441001954542616576>", Output: ":notes: Dango, Dango, Dango, Dango, Dango Daikazoku :notes:", Type: CommandTypeFullMatch, Cooldown: 85600})
registerCommand(Command{Trigger: "praise the sun", Output: "If only I could be so grossly incandescent \\\\[T]/", Type: CommandTypeContains, IgnoreCase: true, Cooldown: 85600})
2018-06-04 02:32:40 +02:00
// Information
2018-06-04 02:32:40 +02:00
registerCommand(Command{Trigger: "!welcome", OutputEmbed: getWelcomeEmbed(), Type: CommandTypeFullMatch, DMOnly: true})
// Admin and/or debug
registerCommand(Command{Trigger: "<@%s> <3", Output: "<@%s> <3", Type: CommandTypeFullMatch, AdminOnly: true, OutputIsReply: true, RequiresMention: true})
registerCommand(Command{Trigger: "echo", Type: CommandTypePrefix, Function: echoMessage, AdminOnly: true})
fmt.Printf("Successfully initialized %d commands\n", len(commands))
log.Printf("Successfully initialized %d commands", len(commands))
2018-05-17 16:30:29 +02:00
}