revoltrb 0.0.3 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +7 -33
- data/lib/revoltrb/bot.rb +589 -539
- data/lib/revoltrb/version.rb +1 -1
- data/lib/revoltrb/webhooks.rb +103 -107
- metadata +19 -5
data/lib/revoltrb/version.rb
CHANGED
data/lib/revoltrb/webhooks.rb
CHANGED
|
@@ -1,108 +1,104 @@
|
|
|
1
|
-
# lib/revoltrb/webhooks.rb
|
|
2
|
-
require 'json'
|
|
3
|
-
require 'net/http'
|
|
4
|
-
require 'uri'
|
|
5
|
-
|
|
6
|
-
module Revoltrb
|
|
7
|
-
class Webhooks
|
|
8
|
-
attr_reader :api_url, :logger, :token, :selfbot
|
|
9
|
-
def initialize(api_url, logger, token, selfbot)
|
|
10
|
-
@api_url = api_url
|
|
11
|
-
@logger = logger
|
|
12
|
-
@token = token
|
|
13
|
-
@selfbot = selfbot
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def create_webhook(channel_id, name, avatar_url: nil)
|
|
17
|
-
@logger.debug "Attempting to create a webhook for channel '#{channel_id}' with name '#{name}'."
|
|
18
|
-
|
|
19
|
-
uri = URI("#{@api_url}/channels/#{channel_id}/webhooks")
|
|
20
|
-
req = Net::HTTP::Post.new(uri)
|
|
21
|
-
if @selfbot
|
|
22
|
-
req['Authorization'] = @token
|
|
23
|
-
else
|
|
24
|
-
req['x-bot-token'] = @token
|
|
25
|
-
end
|
|
26
|
-
req['Content-Type'] = 'application/json'
|
|
27
|
-
|
|
28
|
-
payload = {
|
|
29
|
-
name: name
|
|
30
|
-
}
|
|
31
|
-
payload[:avatar] = avatar_url unless avatar_url.nil?
|
|
32
|
-
req.body = payload.to_json
|
|
33
|
-
|
|
34
|
-
res = nil
|
|
35
|
-
begin
|
|
36
|
-
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https', read_timeout: 10, open_timeout: 10) do |http|
|
|
37
|
-
http.request(req)
|
|
38
|
-
end
|
|
39
|
-
rescue Net::ReadTimeout => e
|
|
40
|
-
@logger.debug "AN ERROR HAS OCCURED: Network request timed out while reading: #{e.message}"
|
|
41
|
-
return nil
|
|
42
|
-
rescue Net::OpenTimeout => e
|
|
43
|
-
@logger.debug "AN ERROR HAS OCCURED: Network request timed out while connecting: #{e.message}"
|
|
44
|
-
return nil
|
|
45
|
-
rescue => e
|
|
46
|
-
@logger.debug "AN ERROR HAS OCCURED: An unexpected error occurred while creating the webhook: #{e.message}"
|
|
47
|
-
return nil
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
if res.is_a?(Net::HTTPSuccess)
|
|
51
|
-
webhook_data = JSON.parse(res.body)
|
|
52
|
-
@logger.debug "Webhook created successfully! Details: #{res.body}"
|
|
53
|
-
@logger.debug "
|
|
54
|
-
@logger.debug "
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
@logger.debug "
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
return
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
return false
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
1
|
+
# lib/revoltrb/webhooks.rb
|
|
2
|
+
require 'json'
|
|
3
|
+
require 'net/http'
|
|
4
|
+
require 'uri'
|
|
5
|
+
|
|
6
|
+
module Revoltrb
|
|
7
|
+
class Webhooks
|
|
8
|
+
attr_reader :api_url, :logger, :token, :selfbot
|
|
9
|
+
def initialize(api_url, logger, token, selfbot)
|
|
10
|
+
@api_url = api_url
|
|
11
|
+
@logger = logger
|
|
12
|
+
@token = token
|
|
13
|
+
@selfbot = selfbot
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def create_webhook(channel_id, name, avatar_url: nil)
|
|
17
|
+
@logger.debug "Attempting to create a webhook for channel '#{channel_id}' with name '#{name}'."
|
|
18
|
+
|
|
19
|
+
uri = URI("#{@api_url}/channels/#{channel_id}/webhooks")
|
|
20
|
+
req = Net::HTTP::Post.new(uri)
|
|
21
|
+
if @selfbot
|
|
22
|
+
req['Authorization'] = @token
|
|
23
|
+
else
|
|
24
|
+
req['x-bot-token'] = @token
|
|
25
|
+
end
|
|
26
|
+
req['Content-Type'] = 'application/json'
|
|
27
|
+
|
|
28
|
+
payload = {
|
|
29
|
+
name: name
|
|
30
|
+
}
|
|
31
|
+
payload[:avatar] = avatar_url unless avatar_url.nil?
|
|
32
|
+
req.body = payload.to_json
|
|
33
|
+
|
|
34
|
+
res = nil
|
|
35
|
+
begin
|
|
36
|
+
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https', read_timeout: 10, open_timeout: 10) do |http|
|
|
37
|
+
http.request(req)
|
|
38
|
+
end
|
|
39
|
+
rescue Net::ReadTimeout => e
|
|
40
|
+
@logger.debug "AN ERROR HAS OCCURED: Network request timed out while reading: #{e.message}"
|
|
41
|
+
return nil
|
|
42
|
+
rescue Net::OpenTimeout => e
|
|
43
|
+
@logger.debug "AN ERROR HAS OCCURED: Network request timed out while connecting: #{e.message}"
|
|
44
|
+
return nil
|
|
45
|
+
rescue => e
|
|
46
|
+
@logger.debug "AN ERROR HAS OCCURED: An unexpected error occurred while creating the webhook: #{e.message}"
|
|
47
|
+
return nil
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
if res.is_a?(Net::HTTPSuccess)
|
|
51
|
+
webhook_data = JSON.parse(res.body)
|
|
52
|
+
@logger.debug "Webhook created successfully! Details: #{res.body}"
|
|
53
|
+
@logger.debug "Webhook Name: #{webhook_data['name']} | Webhook ID: #{webhook_data['id']}"
|
|
54
|
+
@logger.debug "Webhook Channel ID: #{webhook_data['channel_id']}"
|
|
55
|
+
return webhook_data
|
|
56
|
+
else
|
|
57
|
+
@logger.debug "AN ERROR HAS OCCURED: Failed to create webhook. (Code: #{res.code}) Response: #{res.message}"
|
|
58
|
+
@logger.debug "Response Body: #{res.body}"
|
|
59
|
+
return nil
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
module RevoltWebhooks
|
|
66
|
+
class Webhook
|
|
67
|
+
DEFAULT_API_URL = 'https://beta.revolt.chat/api'.freeze
|
|
68
|
+
def initialize(webhook_id, webhook_token, api_url: DEFAULT_API_URL)
|
|
69
|
+
@webhook_id = webhook_id
|
|
70
|
+
@webhook_token = webhook_token
|
|
71
|
+
@api_url = api_url
|
|
72
|
+
@uri = URI("#{@api_url}/webhooks/#{@webhook_id}/#{@webhook_token}")
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def send_message(content:, embeds: nil)
|
|
76
|
+
payload = {
|
|
77
|
+
content: content
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if embeds
|
|
81
|
+
payload[:embeds] = Array(embeds)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
http = Net::HTTP.new(@uri.host, @uri.port)
|
|
85
|
+
http.use_ssl = true
|
|
86
|
+
request = Net::HTTP::Post.new(@uri.path, 'Content-Type' => 'application/json')
|
|
87
|
+
request.body = payload.to_json
|
|
88
|
+
|
|
89
|
+
begin
|
|
90
|
+
response = http.request(request)
|
|
91
|
+
if response.code.to_i == 204 || response.code.to_i == 200
|
|
92
|
+
return true
|
|
93
|
+
else
|
|
94
|
+
puts "[Revoltrb Webhooks] AN ERROR HAS OCCURED: Status code: #{response.code}"
|
|
95
|
+
puts "[Revoltrb Webhooks] Response body: #{response.body}"
|
|
96
|
+
return false
|
|
97
|
+
end
|
|
98
|
+
rescue StandardError => e
|
|
99
|
+
puts "[Revoltrb Webhooks] AN ERROR HAS OCCURED: #{e.message}"
|
|
100
|
+
return false
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
108
104
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: revoltrb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Roxanne Studios
|
|
@@ -37,6 +37,20 @@ dependencies:
|
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: 0.6.0
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: websocket-client-simple
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 0.9.0
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: 0.9.0
|
|
40
54
|
- !ruby/object:Gem::Dependency
|
|
41
55
|
name: thread
|
|
42
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -55,16 +69,16 @@ dependencies:
|
|
|
55
69
|
name: parser
|
|
56
70
|
requirement: !ruby/object:Gem::Requirement
|
|
57
71
|
requirements:
|
|
58
|
-
- - "
|
|
72
|
+
- - "~>"
|
|
59
73
|
- !ruby/object:Gem::Version
|
|
60
|
-
version:
|
|
74
|
+
version: 3.3.9.0
|
|
61
75
|
type: :runtime
|
|
62
76
|
prerelease: false
|
|
63
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
78
|
requirements:
|
|
65
|
-
- - "
|
|
79
|
+
- - "~>"
|
|
66
80
|
- !ruby/object:Gem::Version
|
|
67
|
-
version:
|
|
81
|
+
version: 3.3.9.0
|
|
68
82
|
description: The first Ruby package (a.k.a. gem) to exist for making Revolt.chat bots.
|
|
69
83
|
This project is not officially endorsed by revolt.chat
|
|
70
84
|
email:
|