Module: Discorb::Interaction::UpdateResponder

Included in:
MessageComponentInteraction
Defined in:
lib/discorb/interaction/response.rb

Overview

A module for response with update.

Instance Method Summary collapse

Instance Method Details

#defer_update(ephemeral: false) -> Async::Task<void>

Response with DEFERRED_UPDATE_MESSAGE(6).

Parameters:

  • ephemeral (Boolean) (defaults to: false)

    Whether to make the response ephemeral.

Returns:

  • (Async::Task<void>)

    The task.



225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
# File 'lib/discorb/interaction/response.rb', line 225

def defer_update(ephemeral: false)
  Async do
    @client.http.request(
      Route.new(
        "/interactions/#{@id}/#{@token}/callback",
        "//interactions/:interaction_id/:token/callback",
        :post
      ), {
        type: 6,
        data: {
          flags: (ephemeral ? 1 << 6 : 0),
        },
      }
    ).wait
  end
end

#edit(content, tts: false, embed: nil, embeds: nil, allowed_mentions: nil, attachment: nil, attachments: nil, components: nil, ephemeral: false) -> Async::Task<void>

Response with UPDATE_MESSAGE(7).

Parameters:

  • content (String)

    The content of the response.

  • tts (Boolean) (defaults to: false)

    Whether to send the message 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. (max: 10)

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

    The allowed mentions to send.

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

    The attachment to send.

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

    The attachments to send. (max: 10)

  • components (Array<Discorb::Component>, Array<Array<Discorb::Component>>) (defaults to: nil)

    The components to send.

  • ephemeral (Boolean) (defaults to: false)

    Whether to make the response ephemeral.

Returns:

  • (Async::Task<void>)

    The task.



259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
# File 'lib/discorb/interaction/response.rb', line 259

def edit(
  content,
  tts: false,
  embed: nil,
  embeds: nil,
  allowed_mentions: nil,
  attachment: nil,
  attachments: nil,
  components: nil,
  ephemeral: false
)
  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 ? allowed_mentions.to_hash(@client.allowed_mentions) : @client.allowed_mentions.to_hash
    payload[:components] = Component.to_payload(components) if components
    payload[:flags] = (ephemeral ? 1 << 6 : 0)
    attachments ||= [attachment] if attachment
    payload[:attachments] = attachments.map.with_index do |a, i|
      {
        id: i,
        filename: a.filename,
        description: a.description,
      }
    end
    @client.http.multipart_request(
      Route.new("/interactions/#{@id}/#{@token}/callback", "//interactions/:interaction_id/:token/callback",
                :post), { type: 7, data: payload }, attachments
    ).wait
  end
end