Documentation ¶
Overview ¶
Package webhook provides means to interact with webhooks directly and not through the bot API.
Index ¶
- type Client
- func (c *Client) Delete() error
- func (c *Client) DeleteMessage(messageID discord.MessageID) error
- func (c *Client) EditMessage(messageID discord.MessageID, data EditMessageData) (*discord.Message, error)
- func (c *Client) Execute(data ExecuteData) (err error)
- func (c *Client) ExecuteAndWait(data ExecuteData) (*discord.Message, error)
- func (c *Client) Get() (*discord.Webhook, error)
- func (c *Client) Message(messageID discord.MessageID) (*discord.Message, error)
- func (c *Client) Modify(data api.ModifyWebhookData) (*discord.Webhook, error)
- func (c *Client) WithContext(ctx context.Context) *Client
- type EditMessageData
- type ExecuteData
- type Session
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct { // Client is the httputil.Client used to call Discord's API. *httputil.Client *Session }
Client is the client used to interact with a webhook.
func FromAPI ¶
FromAPI creates a new client that shares the same internal HTTP client with the one in the API's. This is often useful for bots that need webhook interaction, since the rate limiter is shared.
func New ¶
New creates a new Client using the passed webhook token and ID. It uses its own rate limiter.
func NewCustom ¶
NewCustom creates a new webhook client using the passed webhook token, ID and a copy of the given httputil.Client. The copy will have a new rate limiter added in.
func (*Client) DeleteMessage ¶
DeleteMessage deletes a message that was previously created by the same webhook.
func (*Client) EditMessage ¶
func (c *Client) EditMessage(messageID discord.MessageID, data EditMessageData) (*discord.Message, error)
EditMessage edits a previously-sent webhook message from the same webhook.
func (*Client) Execute ¶
func (c *Client) Execute(data ExecuteData) (err error)
Execute sends a message to the webhook, but doesn't wait for the message to get created. This is generally faster, but only applicable if no further interaction is required.
func (*Client) ExecuteAndWait ¶
func (c *Client) ExecuteAndWait(data ExecuteData) (*discord.Message, error)
ExecuteAndWait executes the webhook, and waits for the generated discord.Message to be returned.
type EditMessageData ¶
type EditMessageData struct { // Content is the new message contents (up to 2000 characters). Content option.NullableString `json:"content,omitempty"` // Embeds contains embedded rich content. Embeds *[]discord.Embed `json:"embeds,omitempty"` // Components contains the new components to attach. Components *discord.ContainerComponents `json:"components,omitempty"` // AllowedMentions are the allowed mentions for a message. AllowedMentions *api.AllowedMentions `json:"allowed_mentions,omitempty"` // Attachments are the attached files to keep Attachments *[]discord.Attachment `json:"attachments,omitempty"` Files []sendpart.File `json:"-"` }
https://discord.com/developers/docs/resources/webhook#edit-webhook-message-jsonform-params
func (EditMessageData) NeedsMultipart ¶
func (data EditMessageData) NeedsMultipart() bool
NeedsMultipart returns true if the SendMessageData has files.
func (EditMessageData) WriteMultipart ¶
func (data EditMessageData) WriteMultipart(body *multipart.Writer) error
type ExecuteData ¶
type ExecuteData struct { // Content are the message contents (up to 2000 characters). // // Required: one of content, file, embeds Content string `json:"content,omitempty"` // ThreadID causes the message to be sent to the specified thread within // the webhook's channel. The thread will automatically be unarchived. ThreadID discord.CommandID `json:"-"` // Username overrides the default username of the webhook Username string `json:"username,omitempty"` // AvatarURL overrides the default avatar of the webhook. AvatarURL discord.URL `json:"avatar_url,omitempty"` // TTS is true if this is a TTS message. TTS bool `json:"tts,omitempty"` // Embeds contains embedded rich content. // // Required: one of content, file, embeds Embeds []discord.Embed `json:"embeds,omitempty"` // Components is the list of components (such as buttons) to be attached to // the message. Components discord.ContainerComponents `json:"components,omitempty"` // Files represents a list of files to upload. This will not be // JSON-encoded and will only be available through WriteMultipart. Files []sendpart.File `json:"-"` // AllowedMentions are the allowed mentions for the message. AllowedMentions *api.AllowedMentions `json:"allowed_mentions,omitempty"` }
https://discord.com/developers/docs/resources/webhook#execute-webhook-jsonform-params
func (ExecuteData) NeedsMultipart ¶
func (data ExecuteData) NeedsMultipart() bool
NeedsMultipart returns true if the ExecuteWebhookData has files.
func (ExecuteData) WriteMultipart ¶
func (data ExecuteData) WriteMultipart(body *multipart.Writer) error
WriteMultipart writes the webhook data into the given multipart body. It does not close body.
type Session ¶
type Session struct { // Limiter is the rate limiter used for the client. This field should not be // changed, as doing so is potentially racy. Limiter *rate.Limiter // ID is the ID of the webhook. ID discord.WebhookID // Token is the token of the webhook. Token string }
Session keeps a single webhook session. It is referenced by other webhook clients using the same session.
func (*Session) OnRequest ¶
func (s *Session) OnRequest(r httpdriver.Request) error
OnRequest should be called on each client request to inject itself.
func (*Session) OnResponse ¶
func (s *Session) OnResponse(r httpdriver.Request, resp httpdriver.Response) error
OnResponse should be called after each client request to clean itself up.