discord_api 0.0.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87a86b36af7da2e67a7cf1b5ba61abbb3cb3d44132c8b3d4ecc63871090d40a0
4
- data.tar.gz: aee120202417f73ddbcfba36568d15fe3146bd54776c2ee1e95ca4ca880544e8
3
+ metadata.gz: a993b6022f4e54a0a926ca4df2dd83a8cdf9e1e40c04644d8aa57bfdcc783117
4
+ data.tar.gz: 6bf9e38ff1fe30475706f9ce1afe30cf7455360d92b709e66ee42a969040555d
5
5
  SHA512:
6
- metadata.gz: 3b9df969d355386214e50684381f991aecdf1e71d02ffe90a0496b78a2d731b5e433ebfdf8cc136602e4e3214f182cd49744a087973736fb3ca2778c43f91e5a
7
- data.tar.gz: 0b04d785a62f2ce440077cb448898816028bd0cc52ecb0e0287306c0f4520b43f9053f6ed07175c29adaa6f347e95aa14f0d99c0acad9de42ef233501f270b4f
6
+ metadata.gz: f1c7448fc44c27fcf7e26f2beb4a8de74fbdc33225cf4831c2f1df5f2f3c1e33af8a88f732ae7ca1d5968a4551d61fdc6b04d3bcc6bfddea9d348983963dc814
7
+ data.tar.gz: 67289c6d49b1eb6f701c03d90c79164cdaaae17ddf162ef85906dae140579a8cf1e3a73d093a6b10be1b325fa815d70f5fc946199543aa012d77357e637d22b4
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Discord API
2
2
 
3
- This is a Ruby wrapper for the Discord API. It is currently in development and is not ready for use.
3
+ This is a Ruby wrapper for the Discord HTTP API. **Currently in development**
4
4
 
5
5
  ## Installation
6
6
 
@@ -28,5 +28,50 @@ Firstly you'll need to set either a user token or bot token. Some endpoints are
28
28
 
29
29
  ```ruby
30
30
  # Get the current user
31
+ # Required scope: identify
32
+ # Required scopes if you want the user's email: identify email
31
33
  @client.users.me
34
+
35
+ # Get the user's guilds
36
+ # Required scope: guilds
37
+ @client.users.guilds
38
+ ```
39
+
40
+ ### Channels
41
+
42
+ These endpoints are only accessible using a bot token.
43
+
44
+ ```ruby
45
+ # Retrieve a Channel
46
+ @client.channels.retrieve(id: 123123)
47
+
48
+ # Update a Channel's details
49
+ # https://discord.com/developers/docs/resources/channel#modify-channel
50
+ @client.channels.update(id: 123123, name: "new-channel-name")
51
+ ```
52
+
53
+ ### Messages
54
+
55
+ These endpoints are only accessible using a bot token.
56
+
57
+ ```ruby
58
+ # List messages for a channel
59
+ @client.messages.list(channel_id: 123123)
60
+
61
+ # Get a message
62
+ @client.messages.retrieve(channel_id: 123123, message_id: 123123)
63
+
64
+ # Create a message
65
+ # https://discord.com/developers/docs/resources/channel#create-message
66
+ @client.messages.create(channel_id: 123123, content: "Hello World")
67
+
68
+ # Update a message
69
+ # https://discord.com/developers/docs/resources/channel#edit-message
70
+ @client.messages.update(channel_id: 123123, message_id: 123123, content: "Hello World")
71
+
72
+ # Delete a message
73
+ @client.messages.delete(channel_id: 123123, message_id: 123123)
74
+
75
+ # Bulk delete messages
76
+ @client.messages.bulk_delete(channel_id: 123123, ids: [123123, 321321])
32
77
  ```
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require "rake/testtask"
6
6
  Rake::TestTask.new(:test) do |t|
7
7
  t.libs << "test"
8
8
  t.libs << "lib"
9
- t.test_files = FileList["test/**/test_*.rb"]
9
+ t.test_files = FileList["test/**/*_test.rb"]
10
10
  end
11
11
 
12
12
  task default: :test
@@ -14,6 +14,14 @@ module Discord
14
14
  UsersResource.new(self)
15
15
  end
16
16
 
17
+ def channels
18
+ ChannelsResource.new(self)
19
+ end
20
+
21
+ def messages
22
+ MessagesResource.new(self)
23
+ end
24
+
17
25
  def connection
18
26
  @connection ||= Faraday.new(BASE_URL) do |conn|
19
27
  if user_access_token
@@ -6,13 +6,13 @@ module Discord
6
6
  body = response.body
7
7
 
8
8
  new(
9
- data: body["data"].map { |attrs| type.new(attrs) },
10
- total: body["data"].count,
11
- cursor: body.dig("pagination", "cursor")
9
+ data: body.map { |attrs| type.new(attrs) },
10
+ total: body.count,
11
+ # cursor: body.dig("pagination", "cursor")
12
12
  )
13
13
  end
14
14
 
15
- def initialize(data:, total:, cursor:)
15
+ def initialize(data:, total:, cursor:nil)
16
16
  @data = data
17
17
  @total = total
18
18
  @cursor = cursor.nil? ? nil : cursor
@@ -0,0 +1,4 @@
1
+ module Discord
2
+ class Channel < Object
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Discord
2
+ class Guild < Object
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Discord
2
+ class Message < Object
3
+ end
4
+ end
@@ -0,0 +1,13 @@
1
+ module Discord
2
+ class ChannelsResource < Resource
3
+
4
+ def retrieve(id:)
5
+ Channel.new get_request("channels/#{id}").body
6
+ end
7
+
8
+ def update(id:, **params)
9
+ Channel.new patch_request("channels/#{id}", body: params).body
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,32 @@
1
+ module Discord
2
+ class MessagesResource < Resource
3
+
4
+ def list(channel:, **params)
5
+ response = get_request("channels/#{channel}/messages", params: params)
6
+ Collection.from_response(response, type: Message)
7
+ end
8
+
9
+ def retrieve(channel:, message:)
10
+ Message.new get_request("channels/#{channel}/messages/#{message}").body
11
+ end
12
+
13
+ def create(channel:, **params)
14
+ response = post_request("channels/#{channel}/messages", body: params)
15
+ Message.new response.body
16
+ end
17
+
18
+ def update(channel:, id:, **params)
19
+ response = patch_request("channels/#{channel}/messages/#{id}", body: params)
20
+ Message.new response.body
21
+ end
22
+
23
+ def delete(channel:, id:)
24
+ delete_request("channels/#{channel}/messages/#{id}")
25
+ end
26
+
27
+ def bulk_delete(channel:, messages:)
28
+ post_request("channels/#{channel}/messages/bulk-delete", body: {messages: messages})
29
+ end
30
+
31
+ end
32
+ end
@@ -1,10 +1,14 @@
1
1
  module Discord
2
2
  class UsersResource < Resource
3
3
 
4
- # Get the currently authenticated user
5
4
  def me
6
5
  User.new get_request("users/@me").body
7
6
  end
8
7
 
8
+ def guilds
9
+ response = get_request("users/@me/guilds")
10
+ Collection.from_response(response, type: Guild)
11
+ end
12
+
9
13
  end
10
14
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Discord
4
- VERSION = "0.0.1"
4
+ VERSION = "0.1.0"
5
5
  end
data/lib/discord.rb CHANGED
@@ -11,7 +11,12 @@ module Discord
11
11
  autoload :Object, "discord/object"
12
12
 
13
13
  autoload :UsersResource, "discord/resources/users"
14
+ autoload :ChannelsResource, "discord/resources/channels"
15
+ autoload :MessagesResource, "discord/resources/messages"
14
16
 
15
17
  autoload :User, "discord/objects/user"
18
+ autoload :Guild, "discord/objects/guild"
19
+ autoload :Channel, "discord/objects/channel"
20
+ autoload :Message, "discord/objects/message"
16
21
 
17
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discord_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dean Perry
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-30 00:00:00.000000000 Z
11
+ date: 2023-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -41,16 +41,23 @@ files:
41
41
  - lib/discord/collection.rb
42
42
  - lib/discord/error.rb
43
43
  - lib/discord/object.rb
44
+ - lib/discord/objects/channel.rb
45
+ - lib/discord/objects/guild.rb
46
+ - lib/discord/objects/message.rb
44
47
  - lib/discord/objects/user.rb
45
48
  - lib/discord/resource.rb
49
+ - lib/discord/resources/channels.rb
50
+ - lib/discord/resources/messages.rb
46
51
  - lib/discord/resources/users.rb
47
52
  - lib/discord/version.rb
48
53
  - lib/discord_api.rb
49
54
  - sig/discord/api.rbs
50
- homepage:
55
+ homepage: https://github.com/deanpcmad/discord_api
51
56
  licenses:
52
57
  - MIT
53
- metadata: {}
58
+ metadata:
59
+ homepage_uri: https://github.com/deanpcmad/discord_api
60
+ source_code_uri: https://github.com/deanpcmad/discord_api
54
61
  post_install_message:
55
62
  rdoc_options: []
56
63
  require_paths:
@@ -69,5 +76,5 @@ requirements: []
69
76
  rubygems_version: 3.4.10
70
77
  signing_key:
71
78
  specification_version: 4
72
- summary: A Ruby wrapper for the Discord API
79
+ summary: Ruby wrapper for the Discord HTTP API
73
80
  test_files: []