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



502
503
504
# File 'lib/discorb/webhook.rb', line 502

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:



474
475
476
477
478
479
480
# File 'lib/discorb/webhook.rb', line 474

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.



138
139
140
141
142
143
# File 'lib/discorb/webhook.rb', line 138

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.



194
195
196
197
198
199
200
201
202
203
204
# File 'lib/discorb/webhook.rb', line 194

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.



120
121
122
123
124
125
126
127
128
# File 'lib/discorb/webhook.rb', line 120

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.



163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# File 'lib/discorb/webhook.rb', line 163

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
# 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