89 lines
2.4 KiB
Go
89 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"strings"
|
|
"syscall"
|
|
"time"
|
|
|
|
"git.wh64.net/muffin/goMuffin/commands"
|
|
"git.wh64.net/muffin/goMuffin/components"
|
|
"git.wh64.net/muffin/goMuffin/configs"
|
|
"git.wh64.net/muffin/goMuffin/databases"
|
|
"git.wh64.net/muffin/goMuffin/handler"
|
|
dbmigrate "git.wh64.net/muffin/goMuffin/scripts/dbMigrate"
|
|
deleteallcommands "git.wh64.net/muffin/goMuffin/scripts/deleteAllCommands"
|
|
"github.com/bwmarrin/discordgo"
|
|
)
|
|
|
|
func main() {
|
|
config := configs.Config
|
|
|
|
if len(os.Args) > 1 {
|
|
switch strings.ToLower(os.Args[1]) {
|
|
case "dbmigrate":
|
|
dbmigrate.DBMigrate()
|
|
case "deleteallcommands":
|
|
deleteallcommands.DeleteAllCommands()
|
|
default:
|
|
panic(fmt.Errorf("[goMuffin] 명령어 인자에는 dbmigrate나 deleteallcommands만 올 수 있어요."))
|
|
}
|
|
return
|
|
}
|
|
|
|
dg, err := discordgo.New("Bot " + config.Bot.Token)
|
|
if err != nil {
|
|
log.Println("[goMuffin] 봇의 세션을 만들수가 없어요.")
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
go commands.Discommand.LoadCommand(commands.HelpCommand)
|
|
go commands.Discommand.LoadCommand(commands.DataLengthCommand)
|
|
go commands.Discommand.LoadCommand(commands.LearnCommand)
|
|
go commands.Discommand.LoadCommand(commands.LearnedDataListCommand)
|
|
go commands.Discommand.LoadCommand(commands.InformationCommand)
|
|
go commands.Discommand.LoadCommand(commands.DeleteLearnedDataCommand)
|
|
|
|
go commands.Discommand.LoadComponent(components.DeleteLearnedDataComponent)
|
|
|
|
go dg.AddHandler(handler.MessageCreate)
|
|
go dg.AddHandler(handler.InteractionCreate)
|
|
|
|
dg.Open()
|
|
|
|
go func() {
|
|
for {
|
|
dg.UpdateCustomStatus("ㅅ살려주세요..!")
|
|
time.Sleep(time.Minute * 10)
|
|
}
|
|
}()
|
|
|
|
for _, cmd := range commands.Discommand.Commands {
|
|
if cmd.Name == "도움말" {
|
|
// 극한의 성능 똥망 코드 탄생!
|
|
// 무려 똑같은 걸 반복해서 돌리는!
|
|
for _, a := range commands.Discommand.Commands {
|
|
cmd.Options[0].Choices = append(cmd.Options[0].Choices, &discordgo.ApplicationCommandOptionChoice{
|
|
Name: a.Name,
|
|
Value: a.Name,
|
|
})
|
|
}
|
|
}
|
|
|
|
go dg.ApplicationCommandCreate(dg.State.User.ID, "", cmd.ApplicationCommand)
|
|
}
|
|
|
|
defer func() {
|
|
dg.Close()
|
|
databases.Client.Disconnect(context.TODO())
|
|
}()
|
|
|
|
log.Println("[goMuffin] 봇이 실행되고 있어요. 버전:", configs.MUFFIN_VERSION)
|
|
sc := make(chan os.Signal, 1)
|
|
signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt)
|
|
<-sc
|
|
}
|