Compare commits

...

2 commits

3 changed files with 77 additions and 63 deletions

View file

@ -5,7 +5,10 @@ BUILD_DATE := $(shell date -u +.%Y%m%d.%H%M%S)
CGO_ENABLED=0 CGO_ENABLED=0
default: default:
CGO_ENABLED=$(CGO_ENABLED) go build -o out/engibot -trimpath -ldflags "-s -w -X main.gitCommit=$(GIT_COMMIT)" main.go CGO_ENABLED=$(CGO_ENABLED) go build -o out/engibot -trimpath -ldflags "-s -w -X main.gitCommit=$(GIT_COMMIT)" .
debug: debug:
go build -o out/ -ldflags "-X main.gitCommit=$(GIT_COMMIT)" main.go go build -o out/ -ldflags "-X main.gitCommit=$(GIT_COMMIT)" main.go
run:
go run . --token $(TOKEN)

62
commands.go Normal file
View file

@ -0,0 +1,62 @@
package main
import (
"log"
"time"
"github.com/bwmarrin/discordgo"
)
func ping(s *discordgo.Session, i *discordgo.InteractionCreate) {
if i.Interaction.Member != nil {
log.Printf("%s#%s invoked ping command", i.Interaction.Member.User.Username, i.Interaction.Member.User.Discriminator)
} else if i.Interaction.User != nil {
log.Printf("%s#%s invoked ping command", i.Interaction.User.Username, i.Interaction.User.Discriminator)
}
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseChannelMessageWithSource,
Data: &discordgo.InteractionResponseData{
//Flags: 1 << 6, // Only lets issuer see initial response
Content: "Pong!",
},
})
}
func sping(s *discordgo.Session, i *discordgo.InteractionCreate) {
if i.Interaction.Member != nil {
log.Printf("%s#%s invoked ping command", i.Interaction.Member.User.Username, i.Interaction.Member.User.Discriminator)
} else if i.Interaction.User != nil {
log.Printf("%s#%s invoked ping command", i.Interaction.User.Username, i.Interaction.User.Discriminator)
}
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseChannelMessageWithSource,
Data: &discordgo.InteractionResponseData{
Flags: 1 << 6, // Only lets issuer see initial response
Content: "Pong!",
},
})
}
func slowping(s *discordgo.Session, i *discordgo.InteractionCreate) {
if i.Interaction.Member != nil {
log.Printf("%s#%s invoked ping command", i.Interaction.Member.User.Username, i.Interaction.Member.User.Discriminator)
} else if i.Interaction.User != nil {
log.Printf("%s#%s invoked ping command", i.Interaction.User.Username, i.Interaction.User.Discriminator)
}
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseChannelMessageWithSource,
Data: &discordgo.InteractionResponseData{
//Flags: 1 << 6, // Only lets issuer see initial response
Content: "...",
},
})
time.Sleep(time.Second * 10)
_, err := s.FollowupMessageCreate(i.Interaction, true, &discordgo.WebhookParams{
Content: "Pong!",
})
if err != nil {
log.Println(err)
}
}

73
main.go
View file

@ -10,7 +10,6 @@ import (
"strings" "strings"
"regexp" "regexp"
"context" "context"
"time"
"github.com/bwmarrin/discordgo" "github.com/bwmarrin/discordgo"
"github.com/wader/goutubedl" "github.com/wader/goutubedl"
@ -18,7 +17,13 @@ import (
) )
func main() { func main() {
// Variables used for command line parameters // Lazyinator 9001
var (
s *discordgo.Session
err error
)
// Variables used for registering slash commands
var ( var (
commands = []*discordgo.ApplicationCommand { commands = []*discordgo.ApplicationCommand {
{ {
@ -35,68 +40,12 @@ func main() {
}, },
} }
commandHandlers = map[string]func(s *discordgo.Session, i *discordgo.InteractionCreate) { commandHandlers = map[string]func(s *discordgo.Session, i *discordgo.InteractionCreate) {
"ping": func(s *discordgo.Session, i *discordgo.InteractionCreate) { "ping": ping,
if i.Interaction.Member != nil { "sping": sping,
log.Printf("%s#%s invoked ping command", i.Interaction.Member.User.Username, i.Interaction.Member.User.Discriminator) "slowping": slowping,
} else if i.Interaction.User != nil {
log.Printf("%s#%s invoked ping command", i.Interaction.User.Username, i.Interaction.User.Discriminator)
}
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseChannelMessageWithSource,
Data: &discordgo.InteractionResponseData{
//Flags: 1 << 6, // Only lets issuer see initial response
Content: "Pong!",
},
})
},
"sping": func(s *discordgo.Session, i *discordgo.InteractionCreate) {
if i.Interaction.Member != nil {
log.Printf("%s#%s invoked ping command", i.Interaction.Member.User.Username, i.Interaction.Member.User.Discriminator)
} else if i.Interaction.User != nil {
log.Printf("%s#%s invoked ping command", i.Interaction.User.Username, i.Interaction.User.Discriminator)
}
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseChannelMessageWithSource,
Data: &discordgo.InteractionResponseData{
Flags: 1 << 6, // Only lets issuer see initial response
Content: "Pong!",
},
})
},
"slowping": func(s *discordgo.Session, i *discordgo.InteractionCreate) {
if i.Interaction.Member != nil {
log.Printf("%s#%s invoked ping command", i.Interaction.Member.User.Username, i.Interaction.Member.User.Discriminator)
} else if i.Interaction.User != nil {
log.Printf("%s#%s invoked ping command", i.Interaction.User.Username, i.Interaction.User.Discriminator)
}
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseChannelMessageWithSource,
Data: &discordgo.InteractionResponseData{
//Flags: 1 << 6, // Only lets issuer see initial response
Content: "No problem.",
},
})
time.Sleep(time.Second * 10)
_, err := s.FollowupMessageCreate(i.Interaction, true, &discordgo.WebhookParams{
Content: "Pong!",
})
if err != nil {
log.Println(err)
}
},
} }
) )
// Lazyinator 9001
var (
s *discordgo.Session
err error
)
// Bot params // Bot params
var ( var (
GuildID = flag.String("guild", "", "Test guild ID. If not passed - bot registers commands globally") GuildID = flag.String("guild", "", "Test guild ID. If not passed - bot registers commands globally")
@ -193,7 +142,7 @@ func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
Files: []*discordgo.File{}, Files: []*discordgo.File{},
} }
log.Println("URLs detected!") log.Printf("Message %s has URLs!", m.ID)
respond := false respond := false