85 lines
1.8 KiB
Go
85 lines
1.8 KiB
Go
package handler
|
||
|
||
import (
|
||
"fmt"
|
||
"ticket-pimp/internal/controller"
|
||
"ticket-pimp/internal/domain"
|
||
|
||
"github.com/bwmarrin/discordgo"
|
||
)
|
||
|
||
type client struct {
|
||
Commands []Command
|
||
Components []Component
|
||
ListenPostsHandler func(s *discordgo.Session, th *discordgo.ThreadCreate)
|
||
Tags []discordgo.ForumTag
|
||
|
||
controller controller.WorkflowController
|
||
conf *domain.DiscordConfig
|
||
}
|
||
|
||
// Подключение роутов к Discord боту
|
||
func InitRouter(wc controller.WorkflowController, conf *domain.DiscordConfig) *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.Tags = append(
|
||
r.Tags,
|
||
discordgo.ForumTag{
|
||
Name: "В работе",
|
||
Moderated: true,
|
||
EmojiName: "👩🍳",
|
||
},
|
||
|
||
discordgo.ForumTag{
|
||
Name: "Готово",
|
||
Moderated: true,
|
||
EmojiName: "✅",
|
||
})
|
||
r.ListenPostsHandler = r.ListenPosts
|
||
|
||
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
|
||
}
|
||
}
|