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
}
2018-06-11 18:05:47 +02:00
2018-06-04 00:24:34 +02:00
dg . AddHandler ( evaluateMessage )
2018-05-17 16:30:29 +02:00
dg . AddHandler ( onJoin )
err = dg . Open ( )
if err != nil {
2018-06-10 21:32:06 +02:00
fmt . Println ( "No connection:\n" , err )
2018-05-17 16:30:29 +02:00
return
}
2018-06-11 18:05:47 +02:00
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 {
2018-06-10 21:32:06 +02:00
fmt . Println ( "Error opening log file:\n" , err )
2018-05-26 12:51:05 +02:00
}
defer f . Close ( )
log . SetOutput ( f )
2018-06-06 17:28:43 +02:00
addCommands ( )
2018-06-04 02:32:40 +02:00
2018-06-10 21:32:06 +02:00
fmt . Println ( "Bot running. selphyWoo" )
log . Println ( "Bot running. selphyWoo" )
2018-06-06 17:28:43 +02:00
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
2018-06-10 21:32:06 +02:00
fmt . Println ( "Exiting..." )
log . Println ( "Exiting..." )
2018-06-06 17:28:43 +02:00
dg . Close ( )
}
2018-06-05 14:05:09 +02:00
2018-06-06 17:28:43 +02:00
// I’ll just put all of the commands here for now.
func addCommands ( ) {
// Moderation
2018-06-12 10:01:23 +02:00
registerCommand ( Command { Trigger : "^[^`]*([()|DoOvVcC][-=^']?;|;[-=^']?[()|DoOpPvVcC]|:wink:|😉)[^`]*$" , Output : "<@%s> Oboe!" , DeleteInput : true , OutputIsReply : true , Type : CommandTypeRegex } )
2018-06-06 17:28:43 +02:00
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
2018-06-06 17:28:43 +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
2018-06-06 17:28:43 +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 } )
2018-06-11 18:05:47 +02:00
registerCommand ( Command { Trigger : "/o\\" , Output : "\\o/" , Type : CommandTypeFullMatch , Cooldown : 10 } )
2018-06-12 10:01:23 +02:00
registerCommand ( Command { Trigger : "<:selphyDango:441001954542616576>" , Output : "<:dango:430669469799677953> :notes: Dango Daikazoku :notes: <:dango:430669469799677953>" , Type : CommandTypeFullMatch , Cooldown : 85600 } )
2018-06-10 21:32:06 +02:00
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
2018-06-06 17:28:43 +02:00
// Information
2018-06-04 02:32:40 +02:00
registerCommand ( Command { Trigger : "!welcome" , OutputEmbed : getWelcomeEmbed ( ) , Type : CommandTypeFullMatch , DMOnly : true } )
2018-06-10 21:32:06 +02:00
// Admin and/or debug
2018-06-06 17:28:43 +02:00
registerCommand ( Command { Trigger : "<@%s> <3" , Output : "<@%s> <3" , Type : CommandTypeFullMatch , AdminOnly : true , OutputIsReply : true , RequiresMention : true } )
2018-06-10 21:32:06 +02:00
registerCommand ( Command { Trigger : "echo" , Type : CommandTypePrefix , Function : echoMessage , AdminOnly : true } )
2018-06-04 00:24:34 +02:00
2018-06-10 21:32:06 +02:00
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
}