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



493
494
495
# File 'lib/discorb/webhook.rb', line 493

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

.new(url) -> Discorb::Webhook::URLWebhook

Creates URLWebhook.

Parameters:

  • url (String)

    The URL of the webhook.

Returns:



465
466
467
468
469
470
471
# File 'lib/discorb/webhook.rb', line 465

def new(url)
  if self == Webhook
    URLWebhook.new(url)
  else
    super
  end
end

Instance Method Details

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

Deletes the webhook.

Returns:

  • (Async::Task<void>)

    The task.



131
132
133
134
135
136
# File 'lib/discorb/webhook.rb', line 131

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.



187
188
189
190
191
192
193
194
195
196
197
# File 'lib/discorb/webhook.rb', line 187

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.



113
114
115
116
117
118
119
120
121
# File 'lib/discorb/webhook.rb', line 113

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.



156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# File 'lib/discorb/webhook.rb', line 156

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
# 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, headers: headers).wait
    data && Webhook::Message.new(self, data)
  end
end