diff --git a/app/http/endpoints/api/panel/multipanelcreate.go b/app/http/endpoints/api/panel/multipanelcreate.go
index 45ad8c4..2d4e028 100644
--- a/app/http/endpoints/api/panel/multipanelcreate.go
+++ b/app/http/endpoints/api/panel/multipanelcreate.go
@@ -17,22 +17,26 @@ import (
)
type multiPanelCreateData struct {
- Title string `json:"title"`
- Content string `json:"content"`
- Colour int32 `json:"colour"`
- ChannelId uint64 `json:"channel_id,string"`
- SelectMenu bool `json:"select_menu"`
- Panels []int `json:"panels"`
+ Title string `json:"title"`
+ Content string `json:"content"`
+ Colour int32 `json:"colour"`
+ ChannelId uint64 `json:"channel_id,string"`
+ SelectMenu bool `json:"select_menu"`
+ Panels []int `json:"panels"`
+ ImageUrl *string `json:"image_url,omitempty"`
+ ThumbnailUrl *string `json:"thumbnail_url,omitempty"`
}
func (d *multiPanelCreateData) IntoMessageData(isPremium bool) multiPanelMessageData {
return multiPanelMessageData{
- ChannelId: d.ChannelId,
- Title: d.Title,
- Content: d.Content,
- Colour: int(d.Colour),
- SelectMenu: d.SelectMenu,
- IsPremium: isPremium,
+ ChannelId: d.ChannelId,
+ Title: d.Title,
+ Content: d.Content,
+ Colour: int(d.Colour),
+ SelectMenu: d.SelectMenu,
+ IsPremium: isPremium,
+ ImageUrl: d.ImageUrl,
+ ThumbnailUrl: d.ThumbnailUrl,
}
}
diff --git a/app/http/endpoints/api/panel/multipanelmessagedata.go b/app/http/endpoints/api/panel/multipanelmessagedata.go
index d7e3f74..273f747 100644
--- a/app/http/endpoints/api/panel/multipanelmessagedata.go
+++ b/app/http/endpoints/api/panel/multipanelmessagedata.go
@@ -14,21 +14,24 @@ import (
type multiPanelMessageData struct {
ChannelId uint64
- Title string
- Content string
- Colour int
- SelectMenu bool
- IsPremium bool
+ Title string
+ Content string
+ Colour int
+ SelectMenu bool
+ IsPremium bool
+ ImageUrl, ThumbnailUrl *string
}
func multiPanelIntoMessageData(panel database.MultiPanel, isPremium bool) multiPanelMessageData {
return multiPanelMessageData{
- ChannelId: panel.ChannelId,
- Title: panel.Title,
- Content: panel.Content,
- Colour: panel.Colour,
- SelectMenu: panel.SelectMenu,
- IsPremium: isPremium,
+ ChannelId: panel.ChannelId,
+ Title: panel.Title,
+ Content: panel.Content,
+ Colour: panel.Colour,
+ SelectMenu: panel.SelectMenu,
+ IsPremium: isPremium,
+ ImageUrl: panel.ImageUrl,
+ ThumbnailUrl: panel.ThumbnailUrl,
}
}
@@ -38,6 +41,14 @@ func (d *multiPanelMessageData) send(ctx *botcontext.BotContext, panels []databa
SetDescription(d.Content).
SetColor(d.Colour)
+ if d.ImageUrl != nil {
+ e.SetImage(*d.ImageUrl)
+ }
+
+ if d.ThumbnailUrl != nil {
+ e.SetThumbnail(*d.ThumbnailUrl)
+ }
+
if !d.IsPremium {
// TODO: Don't harcode
e.SetFooter("Powered by ticketsbot.net", "https://ticketsbot.net/assets/img/logo.png")
diff --git a/app/http/endpoints/api/panel/multipanelupdate.go b/app/http/endpoints/api/panel/multipanelupdate.go
index bad154b..88a8a12 100644
--- a/app/http/endpoints/api/panel/multipanelupdate.go
+++ b/app/http/endpoints/api/panel/multipanelupdate.go
@@ -78,7 +78,7 @@ func MultiPanelUpdate(ctx *gin.Context) {
// delete old message
var unwrapped request.RestError
- if err := rest.DeleteMessage(botContext.Token, botContext.RateLimiter, multiPanel.ChannelId, multiPanel.MessageId); err != nil && !(errors.As(err, &unwrapped) && unwrapped.IsClientError()) {
+ if err := rest.DeleteMessage(botContext.Token, botContext.RateLimiter, multiPanel.ChannelId, multiPanel.MessageId); err != nil && !(errors.As(err, &unwrapped) && unwrapped.IsClientError()) {
ctx.JSON(500, utils.ErrorJson(err))
return
}
@@ -106,13 +106,16 @@ func MultiPanelUpdate(ctx *gin.Context) {
// update DB
updated := database.MultiPanel{
- Id: multiPanel.Id,
- MessageId: messageId,
- ChannelId: data.ChannelId,
- GuildId: guildId,
- Title: data.Title,
- Content: data.Content,
- Colour: int(data.Colour),
+ Id: multiPanel.Id,
+ MessageId: messageId,
+ ChannelId: data.ChannelId,
+ GuildId: guildId,
+ Title: data.Title,
+ Content: data.Content,
+ Colour: int(data.Colour),
+ SelectMenu: data.SelectMenu,
+ ImageUrl: data.ImageUrl,
+ ThumbnailUrl: data.ThumbnailUrl,
}
if err = dbclient.Client.MultiPanels.Update(multiPanel.Id, updated); err != nil {
diff --git a/frontend/src/components/manage/MultiPanelCreationForm.svelte b/frontend/src/components/manage/MultiPanelCreationForm.svelte
index ea0ec13..5f559a7 100644
--- a/frontend/src/components/manage/MultiPanelCreationForm.svelte
+++ b/frontend/src/components/manage/MultiPanelCreationForm.svelte
@@ -23,6 +23,25 @@