Module: Discorb::Interaction::SourceResponse
- Included in:
- CommandInteraction, MessageComponentInteraction
- Defined in:
- lib/discorb/interaction.rb
Overview
A module for response with source.
Instance Method Summary collapse
-
#defer_source(ephemeral: false) -> Object
Response with
DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE
(5
). -
#post(content = nil, tts: false, embed: nil, embeds: nil, allowed_mentions: nil, components: nil, ephemeral: false) -> Object
Response with
CHANNEL_MESSAGE_WITH_SOURCE
(4
).
Instance Method Details
#defer_source(ephemeral: false) -> Object
Response with DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE
(5
).
104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/discorb/interaction.rb', line 104 def defer_source(ephemeral: false) Async do @client.http.post("/interactions/#{@id}/#{@token}/callback", { type: 5, data: { flags: (ephemeral ? 1 << 6 : 0), }, }).wait @defered = true end end |
#post(content = nil, tts: false, embed: nil, embeds: nil, allowed_mentions: nil, components: nil, ephemeral: false) -> Object
Response with CHANNEL_MESSAGE_WITH_SOURCE
(4
).
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/discorb/interaction.rb', line 127 def post(content = nil, tts: false, embed: nil, embeds: nil, allowed_mentions: nil, components: nil, ephemeral: false) payload = {} payload[:content] = content if content payload[:tts] = tts = if [] elsif end payload[:embeds] = .map(&:to_hash) if payload[:allowed_mentions] = allowed_mentions ? allowed_mentions.to_hash(@client.allowed_mentions) : @client.allowed_mentions.to_hash if components tmp_components = [] tmp_row = [] components.each do |c| case c when Array tmp_components << tmp_row tmp_row = [] tmp_components << c when SelectMenu tmp_components << tmp_row tmp_row = [] tmp_components << [c] else tmp_row << c end end tmp_components << tmp_row payload[:components] = tmp_components.filter { |c| c.length.positive? }.map { |c| { type: 1, components: c.map(&:to_hash) } } end payload[:flags] = (ephemeral ? 1 << 6 : 0) if @responded @client.http.post("/webhooks/#{@id}/#{@token}", { type: 4, data: payload }).wait elsif @defered @client.http.post("/interactions/#{@id}/#{@token}/@original/edit", { type: 4, data: payload }).wait else @client.http.post("/interactions/#{@id}/#{@token}/callback", { type: 4, data: payload }).wait end @responded = true end |