From 10195fcfbb5fc030dc24edd5f5202a52f57adc54 Mon Sep 17 00:00:00 2001 From: Aditya Diwakar Date: Wed, 5 Aug 2020 18:31:38 -0400 Subject: [PATCH] :sparkles: Add support for news channels Endpoint support added: - @/channels/:id/messages/:id/crosspost - publishes a message in a news channel to followers - @/channels/:id/followers - follows a news channel --- endpoints.go | 2 ++ restapi.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/endpoints.go b/endpoints.go index 0b337a1..88663fe 100644 --- a/endpoints.go +++ b/endpoints.go @@ -112,6 +112,8 @@ var ( EndpointChannelMessagesBulkDelete = func(cID string) string { return EndpointChannel(cID) + "/messages/bulk-delete" } EndpointChannelMessagesPins = func(cID string) string { return EndpointChannel(cID) + "/pins" } EndpointChannelMessagePin = func(cID, mID string) string { return EndpointChannel(cID) + "/pins/" + mID } + EndpointChannelMessageCrosspost = func(cID, mID string) string { return EndpointChannel(cID) + "/messages/" + mID + "/crosspost" } + EndpointChannelFollow = func(cID string) string { return EndpointChannel(cID) + "/followers" } EndpointGroupIcon = func(cID, hash string) string { return EndpointCDNChannelIcons + cID + "/" + hash + ".png" } diff --git a/restapi.go b/restapi.go index 69b7ceb..7eaee29 100644 --- a/restapi.go +++ b/restapi.go @@ -1790,6 +1790,38 @@ func (s *Session) ChannelPermissionDelete(channelID, targetID string) (err error return } +// ChannelMessageCrosspost cross posts a message in a news channel to followers +// of the channel +// channelID : The ID of a Channel +// messageID : The ID of a Message +func (s *Session) ChannelMessageCrosspost(channelID, messageID string) (st *Message, err error) { + + endpoint := EndpointChannelMessageCrosspost(channelID, messageID) + + body, err := s.RequestWithBucketID("POST", endpoint, nil, endpoint) + if err != nil { + return + } + + err = unmarshal(body, &st) + return +} + +// ChannelNewsFollow follows a news channel in the targetID +// channelID : The ID of a News Channel +// targetID : The ID of a Channel where the News Channel should post to +func (s *Session) ChannelNewsFollow(channelID, targetID string) (err error) { + + endpoint := EndpointChannelFollow(channelID) + + data := struct { + WebhookChannelID string `json:"webhook_channel_id"` + }{targetID} + + _, err = s.RequestWithBucketID("POST", endpoint, data, endpoint) + return +} + // ------------------------------------------------------------------------------------------------ // Functions specific to Discord Invites // ------------------------------------------------------------------------------------------------