Class: Discorb::Webhook Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/discorb/webhook.rb

Overview

This class is abstract.

Represents a webhook.

Defined Under Namespace

Classes: ApplicationWebhook, FollowerWebhook, IncomingWebhook, Message, URLWebhook

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#application_id -> Discorb::Snowflake? (readonly)

Returns:

  • (Discorb::Snowflake)

    The application ID of the webhook.

  • (nil)

    If the webhook is not an application webhook.



21
22
23
# File 'lib/discorb/webhook.rb', line 21

def application_id
  @application_id
end

#avatar -> Discorb::Asset (readonly)

Returns The avatar of the webhook.

Returns:



18
19
20
# File 'lib/discorb/webhook.rb', line 18

def avatar
  @avatar
end

#channel_id -> Discorb::Snowflake (readonly)

Returns The ID of the channel this webhook belongs to.

Returns:



14
15
16
# File 'lib/discorb/webhook.rb', line 14

def channel_id
  @channel_id
end

#guild_id -> Discorb::Snowflake (readonly)

Returns The ID of the guild this webhook belongs to.

Returns:



12
13
14
# File 'lib/discorb/webhook.rb', line 12

def guild_id
  @guild_id
end

#name -> String (readonly)

Returns The name of the webhook.

Returns:

  • (String)

    The name of the webhook.



10
11
12
# File 'lib/discorb/webhook.rb', line 10

def name
  @name
end

#token -> String (readonly)

Returns The URL of the webhook.

Returns:

  • (String)

    The URL of the webhook.



23
24
25
# File 'lib/discorb/webhook.rb', line 23

def token
  @token
end

#user -> Discorb::User (readonly)

Returns The user that created this webhook.

Returns:



16
17
18
# File 'lib/discorb/webhook.rb', line 16

def user
  @user
end

Class Method Details

.from_url(url) -> Object



532
533
534
# File 'lib/discorb/webhook.rb', line 532

def from_url(url)
  URLWebhook.new(url)
end

.new(url, client: nil) -> Discorb::Webhook::URLWebhook

Creates URLWebhook.

Parameters:

  • url (String)

    The URL of the webhook.

  • client (Discorb::Client) (defaults to: nil)

    The client to associate with the webhook.

Returns:



504
505
506
507
508
509
510
# File 'lib/discorb/webhook.rb', line 504

def new(url, client: nil)
  if self == Webhook
    URLWebhook.new(url, client: client)
  else
    super
  end
end

Instance Method Details

#delete -> Async::Task<void> Also known as: destroy

Deletes the webhook.

Returns:

  • (Async::Task<void>)

    The task.



148
149
150
151
152
153
154
155
# File 'lib/discorb/webhook.rb', line 148

def delete
  Async do
    @http.request(
      Route.new(url, "//webhooks/:webhook_id/:token", :delete)
    ).wait
    self
  end
end

#delete_message(message) -> Async::Task<void>

Deletes the webhook's message.

Parameters:

Returns:

  • (Async::Task<void>)

    The task.



218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/discorb/webhook.rb', line 218

def delete_message(message)
  Async do
    @http.request(
      Route.new(
        "#{url}/messages/#{Utils.try(message, :id)}",
        "//webhooks/:webhook_id/:token/messages/:message_id",
        :delete
      )
    ).wait
    message
  end
end

#edit(name: Discorb::Unset, avatar: Discorb::Unset, channel: Discorb::Unset) -> Async::Task<void> Also known as: modify

Note:

The arguments of this method are defaultly set to Discorb::Unset. Specify value to set the value, if not don't specify or specify Discorb::Unset.

Edits the webhook.

Parameters:

  • name (String) (defaults to: Discorb::Unset)

    The new name of the webhook.

  • avatar (Discorb::Image) (defaults to: Discorb::Unset)

    The new avatar of the webhook.

  • channel (Discorb::GuildChannel) (defaults to: Discorb::Unset)

    The new channel of the webhook.

Returns:

  • (Async::Task<void>)

    The task.



122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/discorb/webhook.rb', line 122

def edit(
  name: Discorb::Unset,
  avatar: Discorb::Unset,
  channel: Discorb::Unset
)
  Async do
    payload = {}
    payload[:name] = name if name != Discorb::Unset
    payload[:avatar] = avatar if avatar != Discorb::Unset
    payload[:channel_id] = Utils.try(channel, :id) if channel !=
      Discorb::Unset
    @http.request(
      Route.new(url, "//webhooks/:webhook_id/:token", :patch),
      payload
    ).wait
  end
end

#edit_message(message, content = Discorb::Unset, embed: Discorb::Unset, embeds: Discorb::Unset, file: Discorb::Unset, files: Discorb::Unset, attachments: Discorb::Unset, allowed_mentions: Discorb::Unset) -> Async::Task<void>

Note:

The arguments of this method are defaultly set to Discorb::Unset. Specify value to set the value, if not don't specify or specify Discorb::Unset.

Edits the webhook's message.

Parameters:

  • message (Discorb::Webhook::Message)

    The message to edit.

  • content (String) (defaults to: Discorb::Unset)

    The new content of the message.

  • embed (Discorb::Embed) (defaults to: Discorb::Unset)

    The new embed of the message.

  • embeds (Array<Discorb::Embed>) (defaults to: Discorb::Unset)

    The new embeds of the message.

  • attachments (Array<Discorb::Attachment>) (defaults to: Discorb::Unset)

    The attachments to remain.

  • file (Discorb::Attachment) (defaults to: Discorb::Unset)

    The file to send.

  • files (Array<Discorb::Attachment>) (defaults to: Discorb::Unset)

    The files to send.

  • allowed_mentions (Discorb::AllowedMentions) (defaults to: Discorb::Unset)

    The allowed mentions to send.

Returns:

  • (Async::Task<void>)

    The task.



175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# File 'lib/discorb/webhook.rb', line 175

def edit_message(
  message,
  content = Discorb::Unset,
  embed: Discorb::Unset,
  embeds: Discorb::Unset,
  file: Discorb::Unset,
  files: Discorb::Unset,
  attachments: Discorb::Unset,
  allowed_mentions: Discorb::Unset
)
  Async do
    payload = {}
    payload[:content] = content if content != Discorb::Unset
    payload[:embeds] = embed ? [embed.to_hash] : [] if embed !=
      Discorb::Unset
    payload[:embeds] = embeds.map(&:to_hash) if embeds != Discorb::Unset
    payload[:attachments] = attachments.map(&:to_hash) if attachments !=
      Discorb::Unset
    payload[:allowed_mentions] = allowed_mentions if allowed_mentions !=
      Discorb::Unset
    files = [file] if file != Discorb::Unset
    _resp, data =
      @http.multipart_request(
        Route.new(
          "#{url}/messages/#{Utils.try(message, :id)}",
          "//webhooks/:webhook_id/:token/messages/:message_id",
          :patch
        ),
        payload,
        files
      ).wait
    message.send(:_set_data, data)
    message
  end
end

#inspect -> Object



46
47
48
# File 'lib/discorb/webhook.rb', line 46

def inspect
  "#<#{self.class} #{@name.inspect} id=#{@id}>"
end

#post(content = nil, tts: false, embed: nil, embeds: nil, allowed_mentions: nil, attachment: nil, attachments: nil, username: nil, avatar_url: Discorb::Unset, wait: true) -> Discorb::Webhook::Message, Async::Task<nil> Also known as: execute

Posts a message to the webhook.

Parameters:

  • content (String) (defaults to: nil)

    The content of the message.

  • tts (Boolean) (defaults to: false)

    Whether the message should be sent as text-to-speech.

  • embed (Discorb::Embed) (defaults to: nil)

    The embed to send.

  • embeds (Array<Discorb::Embed>) (defaults to: nil)

    The embeds to send.

  • allowed_mentions (Discorb::AllowedMentions) (defaults to: nil)

    The allowed mentions to send.

  • attachment (Discorb::Attachment) (defaults to: nil)

    The attachment to send.

  • attachment (Array<Discorb::Attachment>) (defaults to: nil)

    The attachments to send.

  • username (String) (defaults to: nil)

    The username of the message.

  • avatar_url (String) (defaults to: Discorb::Unset)

    The avatar URL of the message.

  • wait (Boolean) (defaults to: true)

    Whether to wait for the message to be sent.

Returns:



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/discorb/webhook.rb', line 68

def post(
  content = nil,
  tts: false,
  embed: nil,
  embeds: nil,
  allowed_mentions: nil,
  attachment: nil,
  attachments: nil,
  username: nil,
  avatar_url: Discorb::Unset,
  wait: true
)
  Async do
    payload = {}
    payload[:content] = content if content
    payload[:tts] = tts
    tmp_embed =
      if embed
        [embed]
      elsif embeds
        embeds
      end
    payload[:embeds] = tmp_embed.map(&:to_hash) if tmp_embed
    payload[:allowed_mentions] = allowed_mentions&.to_hash
    payload[:username] = username if username
    payload[:avatar_url] = avatar_url if avatar_url != Discorb::Unset
    attachments = [attachment] if attachment
    _resp, data =
      @http.multipart_request(
        Route.new(
          "#{url}?wait=#{wait}",
          "//webhooks/:webhook_id/:token",
          :post
        ),
        attachments,
        payload
      ).wait
    data && Webhook::Message.new(self, data)
  end
end