Module: Utils::Discord::Request

Defined in:
lib/bas/utils/discord/request.rb

Overview

This module is a Discord utility for obtain all images of any threads of a Discord channel.

Constant Summary collapse

DISCORD_BASE_URL =
"https://discord.com/api/v10"

Class Method Summary collapse

Class Method Details

.get_discord_images(message) ⇒ Object

Implements the request process logic to Discord.


Params:

  • method HTTP request method: post, get, put, etc.

  • body Request body (Hash).

  • endpoint Notion resource endpoint.

  • secret_token Discord Bot Token.




29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/bas/utils/discord/request.rb', line 29

def self.get_discord_images(message)
  images_urls = message.attachments.map(&:url)

  {
    "media" => images_urls,
    "message_id" => message.id,
    "channel_id" => message.channel.id,
    "author" => message.author.username,
    "timestamp" => message.timestamp.to_s,
    "property" => "images"
  }
end

.headers(secret_token) ⇒ Object



61
62
63
64
65
66
# File 'lib/bas/utils/discord/request.rb', line 61

def self.headers(secret_token)
  {
    "Authorization" => secret_token.to_s,
    "Content-Type" => "application/json"
  }
end

.split_paragraphs(params) ⇒ Object



50
51
52
53
54
55
56
57
58
59
# File 'lib/bas/utils/discord/request.rb', line 50

def self.split_paragraphs(params)
  paragraphs = params[:body].split("--DIVISION--").map(&:strip).reject(&:empty?)

  paragraphs.each_slice(2) do |paragraph|
    next if paragraph.empty?

    combined_paragraphs = paragraph.join("\n\n")
    write_media_text(params, combined_paragraphs)
  end
end

.write_media_text(params, combined_paragraphs) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/bas/utils/discord/request.rb', line 42

def self.write_media_text(params, combined_paragraphs)
  url_message = URI.parse("#{DISCORD_BASE_URL}/channels/#{params[:channel_id]}/messages")
  headers = headers(params[:secret_token])
  body = { content: combined_paragraphs }.to_json

  HTTParty.post(url_message, { body:, headers: })
end