бэк несколько медиа

This commit is contained in:
Artem Tsyrulnikov
2026-01-22 20:31:10 +03:00
parent cf38b2b661
commit 912b543f75
17 changed files with 483 additions and 131 deletions

View File

@@ -28,7 +28,7 @@ type Client struct {
func New(cfg Config) *Client {
return &Client{
http: &http.Client{
Timeout: 5 * time.Second,
Timeout: 60 * time.Second,
},
baseURL: cfg.BaseURL,
loginURL: cfg.LoginURL,
@@ -369,17 +369,16 @@ func (c *Client) AcceptWorkspaceInvite(
// ============================================================================
type Creative struct {
ID string `json:"id"`
Name string `json:"name"`
Text string `json:"text"`
MediaType string `json:"media_type"`
MediaFileID string `json:"media_file_id"`
Buttons []CreativeButton `json:"buttons"`
ProjectID string `json:"project_id"`
ProjectChannelTitle string `json:"project_channel_title"`
CreatedAt string `json:"created_at"`
Status string `json:"status"`
PlacementsCount int `json:"placements_count"`
ID string `json:"id"`
Name string `json:"name"`
Text string `json:"text"`
MediaItems []CreativeMediaItem `json:"media_items"`
Buttons []CreativeButton `json:"buttons"`
ProjectID string `json:"project_id"`
ProjectChannelTitle string `json:"project_channel_title"`
CreatedAt string `json:"created_at"`
Status string `json:"status"`
PlacementsCount int `json:"placements_count"`
}
type CreativeButton struct {
@@ -387,6 +386,18 @@ type CreativeButton struct {
URL string `json:"url"`
}
type CreativeMediaItem struct {
MediaType string `json:"media_type"`
MediaFileID string `json:"media_file_id"`
Position int `json:"position"`
}
type CreativeMediaInput struct {
MediaType string `json:"media_type"`
MediaFileID string `json:"media_file_id"`
MediaData []byte `json:"media_data,omitempty"`
}
type CreativesPage struct {
Items []Creative `json:"items"`
Total int `json:"total"`
@@ -448,12 +459,10 @@ func (c *Client) GetCreative(
}
type CreateCreativeInput struct {
Name string `json:"name"`
Text string `json:"text"`
MediaType string `json:"media_type,omitempty"`
MediaFileID string `json:"media_file_id,omitempty"`
MediaData []byte `json:"media_data,omitempty"`
Buttons []CreativeButton `json:"buttons,omitempty"`
Name string `json:"name"`
Text string `json:"text"`
MediaItems []CreativeMediaInput `json:"media_items,omitempty"`
Buttons []CreativeButton `json:"buttons,omitempty"`
}
func (c *Client) CreateCreative(
@@ -482,13 +491,11 @@ func (c *Client) CreateCreative(
}
type UpdateCreativeInput struct {
Name *string `json:"name,omitempty"`
Text *string `json:"text,omitempty"`
MediaType *string `json:"media_type,omitempty"`
MediaFileID *string `json:"media_file_id,omitempty"`
MediaData *[]byte `json:"media_data,omitempty"`
Buttons *[]CreativeButton `json:"buttons,omitempty"`
Status *string `json:"status,omitempty"`
Name *string `json:"name,omitempty"`
Text *string `json:"text,omitempty"`
MediaItems *[]CreativeMediaInput `json:"media_items,omitempty"`
Buttons *[]CreativeButton `json:"buttons,omitempty"`
Status *string `json:"status,omitempty"`
}
func (c *Client) UpdateCreative(
@@ -625,12 +632,11 @@ type GetPlacementsOutput struct {
}
type CreativePreviewOutput struct {
ID string `json:"id"`
Name string `json:"name"`
Text string `json:"text"`
MediaType string `json:"media_type"`
MediaFileID string `json:"media_file_id"`
Buttons []CreativeButton `json:"buttons"`
ID string `json:"id"`
Name string `json:"name"`
Text string `json:"text"`
MediaItems []CreativeMediaItem `json:"media_items"`
Buttons []CreativeButton `json:"buttons"`
}
func (c *Client) CreatePlacements(

View File

@@ -143,6 +143,12 @@ func (b *Bot) SetState(s State, mode RenderMode) {
s.Enter(b, mode)
}
func (b *Bot) MarkHandled() {
if b.exec != nil {
b.exec.handled = true
}
}
func isChannelChat(chatType string) bool {
return chatType == "channel" || chatType == "supergroup"
}