72 lines
1.5 KiB
Go
72 lines
1.5 KiB
Go
package router
|
|
|
|
import (
|
|
"fmt"
|
|
"ticket-pimp/internal/controller"
|
|
"ticket-pimp/internal/domain"
|
|
|
|
"github.com/bwmarrin/discordgo"
|
|
)
|
|
|
|
type client struct {
|
|
Commands []Command
|
|
Components []Component
|
|
|
|
// Tags []discordgo.ForumTag
|
|
|
|
controller controller.WorkflowController
|
|
conf *domain.DiscordConfig
|
|
tgConf *domain.TelegramConfig
|
|
}
|
|
|
|
// Подключение роутов к Discord боту
|
|
func InitRouter(wc controller.WorkflowController, conf *domain.DiscordConfig, tgConf *domain.TelegramConfig) *client {
|
|
|
|
var r client
|
|
r.controller = wc
|
|
r.conf = conf
|
|
|
|
r.Commands = append(r.Commands,
|
|
r.CreateRepoHandler(3),
|
|
r.CreateFolderHandler(3),
|
|
r.Ping(),
|
|
r.CreateTicketHandler(3),
|
|
r.InitProjectFromChannel(3),
|
|
r.GetInfo(),
|
|
)
|
|
r.Components = append(r.Components,
|
|
r.HandleTaskButtons(),
|
|
)
|
|
r.tgConf = tgConf
|
|
|
|
return &r
|
|
}
|
|
|
|
//
|
|
// Подключение роутов к Discord боту
|
|
|
|
type Command struct {
|
|
Command discordgo.ApplicationCommand
|
|
Handler func(s *discordgo.Session, i *discordgo.InteractionCreate)
|
|
}
|
|
|
|
type Component struct {
|
|
Component discordgo.MessageComponent
|
|
Handler func(s *discordgo.Session, i *discordgo.InteractionCreate)
|
|
}
|
|
|
|
func (h *client) 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
|
|
}
|
|
}
|