ticket-pimp/internal/controller/control_task.go

80 lines
1.9 KiB
Go

package controller
import (
"context"
"log"
"os"
"ticket-pimp/internal/storage/db"
"time"
"github.com/bwmarrin/discordgo"
"github.com/jackc/pgx/v5/pgtype"
)
func (wc *WorkflowController) InitTask(description string) {
var (
token = os.Getenv("DISCORD_TOKEN")
channel = os.Getenv("TASKS_CHANNEL")
)
discord, err := discordgo.New("Bot " + token)
if err != nil {
log.Fatalf("unable to create discord session: %v", err)
// [ ] Что делать, если не получилось создать задачу?
}
if err := discord.Open(); err != nil {
// [ ] Что делать, если не получилось создать задачу?
log.Printf("cannot open the session: %v", err)
}
msg := discordgo.MessageSend{
Content: description,
Components: []discordgo.MessageComponent{
discordgo.ActionsRow{
Components: []discordgo.MessageComponent{
discordgo.Button{
Label: "Start",
Style: discordgo.SuccessButton,
Disabled: false,
CustomID: "task_start",
},
discordgo.Button{
Label: "Close",
Style: discordgo.DangerButton,
Disabled: true,
CustomID: "task_close",
},
},
},
},
}
st, err := discord.ChannelMessageSendComplex(channel, &msg)
if err != nil {
log.Println("unable to send task message")
}
t, err := wc.q.InsertTask(context.TODO(), pgtype.Text{String: st.ID, Valid: true})
if err != nil {
log.Println("unable to insert task")
}
_ = t
}
func (wc *WorkflowController) UpdateTask(id string, opt int) {
switch opt {
case 0:
wc.q.StartTask(context.TODO(), db.StartTaskParams{
StartedAt: pgtype.Timestamptz{Time: time.Now(), InfinityModifier: 0, Valid: true},
Messageid: pgtype.Text{String: id, Valid: true},
})
case 1:
wc.q.CloseTask(context.TODO(), db.CloseTaskParams{
ClosedAt: pgtype.Timestamptz{Time: time.Now(), InfinityModifier: 0, Valid: true},
Messageid: pgtype.Text{String: id, Valid: true},
})
}
}