Class: Discordrb::Webhooks::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/discordrb/webhooks/client.rb

Overview

A client for a particular webhook added to a Discord channel.

Instance Method Summary collapse

Constructor Details

#initialize(url: nil, id: nil, token: nil) ⇒ Client

Create a new webhook

Parameters:

  • url (String) (defaults to: nil)

    The URL to post messages to.

  • id (Integer) (defaults to: nil)

    The webhook's ID. Will only be used if url is not set.

  • token (String) (defaults to: nil)

    The webhook's authorisation token. Will only be used if url is not set.


15
16
17
18
19
20
21
# File 'lib/discordrb/webhooks/client.rb', line 15

def initialize(url: nil, id: nil, token: nil)
  @url = if url
           url
         else
           generate_url(id, token)
         end
end

Instance Method Details

#execute(builder = nil, wait = false) {|builder| ... } ⇒ RestClient::Response

Executes the webhook this client points to with the given data.

Examples:

Execute the webhook with an already existing builder

builder = Discordrb::Webhooks::Builder.new # ...
client.execute(builder)

Execute the webhook by building a new message

client.execute do |builder|
  builder.content = 'Testing'
  builder.username = 'discordrb'
  builder.add_embed do |embed|
    embed.timestamp = Time.now
    embed.title = 'Testing'
    embed.image = Discordrb::Webhooks::EmbedImage.new(url: 'https://i.imgur.com/PcMltU7.jpg')
  end
end

Parameters:

  • builder (Builder, nil) (defaults to: nil)

    The builder to start out with, or nil if one should be created anew.

  • wait (true, false) (defaults to: false)

    Whether Discord should wait for the message to be successfully received by clients, or whether it should return immediately after sending the message.

Yields:

  • (builder)

    Gives the builder to the block to add additional steps, or to do the entire building process.

Yield Parameters:

  • builder (Builder)

    The builder given as a parameter which is used as the initial step to start from.

Returns:

  • (RestClient::Response)

    the response returned by Discord.

Raises:

  • (TypeError)

43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/discordrb/webhooks/client.rb', line 43

def execute(builder = nil, wait = false)
  raise TypeError, 'builder needs to be nil or like a Discordrb::Webhooks::Builder!' unless
    builder.respond_to?(:file) && builder.respond_to?(:to_multipart_hash) || builder.respond_to?(:to_json_hash) || builder.nil?

  builder ||= Builder.new

  yield builder if block_given?

  if builder.file
    post_multipart(builder, wait)
  else
    post_json(builder, wait)
  end
end