65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
package handler
|
|
|
|
import (
|
|
"fmt"
|
|
"ticket-pimp/internal/controller"
|
|
"ticket-pimp/internal/domain"
|
|
|
|
"github.com/bwmarrin/discordgo"
|
|
)
|
|
|
|
type router struct {
|
|
Commands []CommandRoute
|
|
Components []ComponentRoute
|
|
controller controller.WorkflowController
|
|
conf *domain.DiscordConfig
|
|
}
|
|
|
|
// Подключение роутов к Discord боту
|
|
func InitRouter(wc controller.WorkflowController, conf *domain.DiscordConfig) *router {
|
|
|
|
var r router
|
|
r.Commands = append(r.Commands,
|
|
// r.CreateRepoHandler(3),
|
|
// r.CreateFolderHandler(3),
|
|
// r.Ping(),
|
|
// r.CreateTicketHandler(3),
|
|
// r.InitProjectFromChannel(3),
|
|
// r.GetInfo(),
|
|
r.CreateExternalTask(),
|
|
)
|
|
r.Components = append(r.Components,
|
|
r.StartTask(),
|
|
r.CloseTask(),
|
|
)
|
|
r.controller = wc
|
|
r.conf = conf
|
|
|
|
return &r
|
|
}
|
|
|
|
type CommandRoute struct {
|
|
Command discordgo.ApplicationCommand
|
|
Handler func(s *discordgo.Session, i *discordgo.InteractionCreate)
|
|
}
|
|
|
|
type ComponentRoute struct {
|
|
Component discordgo.MessageComponent
|
|
Handler func(s *discordgo.Session, i *discordgo.InteractionCreate)
|
|
}
|
|
|
|
func (h *router) defaultFollowUp(answer string, s *discordgo.Session, i *discordgo.InteractionCreate) {
|
|
|
|
// Sending result:
|
|
_, err := s.FollowupMessageCreate(i.Interaction, true, &discordgo.WebhookParams{
|
|
Content: answer,
|
|
})
|
|
|
|
if err != nil {
|
|
s.FollowupMessageCreate(i.Interaction, true, &discordgo.WebhookParams{
|
|
Content: fmt.Sprintf("Something went wrong: %v", err),
|
|
})
|
|
return
|
|
}
|
|
}
|