discorb 0.5.2 → 0.5.6

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: 3d17006d6ca103247dcf304581c61104054722b1af32bc8b3ec3d23b7f5e8680
4
- data.tar.gz: 92c481e5532d3e990ca73b891c71a87f5a4a2e6217ff7d7c5677519dbeaf4259
3
+ metadata.gz: 8484feb78582222a91d4fee1225fe649edc6a24a4c6c77eb83fa6c3094b3935d
4
+ data.tar.gz: 7597101823bd4f3f6900636af7f06320d9c296659069ff69bc829b7528171372
5
5
  SHA512:
6
- metadata.gz: b305d2f608c0506b7c84f53d16e4384710d454d5deacc69d51a55dbf81fe25d80ab7226717cb12480e07ba25f069a59a49a50608826d711c2a84edb4ec67258c
7
- data.tar.gz: c40281fb460527163504b8fe999f02a57db3190532a47c78ee25d71871372ff4c720a7ec0e17c70853083ad7327ae574e418b080d7379c98d683fcc1ccb0169e
6
+ metadata.gz: e6a690ccd8d95f66db74cafd22a430472841183d3048b10529009a0a64a1ba4c21f553fe83746c7356b3069c87badd3768c88834a34cecb0194ccf818a128947
7
+ data.tar.gz: cd46b4dd261aea5d4f9b2257e1cb81f07b377922364080863cce61551293dbb08ded110d15bac44812307d7846edb7a77787ef2e3f003bcb1ae977f8c35545b6
data/Changelog.md CHANGED
@@ -117,3 +117,24 @@
117
117
 
118
118
  - Fix: Fix bug of registering commands
119
119
  - Add: Add way to register commands in Extension
120
+
121
+ ## 0.5.3
122
+
123
+ - Add: Add way to handle raw events with `event_xxx`
124
+ - Add: Add `Client#session_id`
125
+ - Add: Add `Connectable`
126
+ - Fix: Fix error by sending DM
127
+
128
+ ## 0.5.4
129
+
130
+ - Fix: Fix issue of receiving component events
131
+
132
+ ## 0.5.5
133
+
134
+ - Fix: Fix some bugs
135
+
136
+ ## 0.5.6
137
+
138
+ - Add: Raise error when intents are invalid
139
+ - Fix: Fix Emoji#==
140
+
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- discorb (0.5.2)
4
+ discorb (0.5.6)
5
5
  async (~> 1.30.1)
6
6
  async-http (~> 0.56.5)
7
7
  async-websocket (~> 0.19.0)
@@ -636,7 +636,6 @@ module Discorb
636
636
 
637
637
  #
638
638
  # Represents a voice channel.
639
- # @todo Implement connecting to voice channel.
640
639
  #
641
640
  class VoiceChannel < GuildChannel
642
641
  # @return [Integer] The bitrate of the voice channel.
@@ -645,6 +644,8 @@ module Discorb
645
644
  # @return [nil] If the user limit is not set.
646
645
  attr_reader :user_limit
647
646
 
647
+ include Connectable
648
+
648
649
  @channel_type = 2
649
650
  #
650
651
  # Edit the voice channel.
@@ -699,6 +700,8 @@ module Discorb
699
700
  # @!visibility private
700
701
  attr_reader :stage_instances
701
702
 
703
+ include Connectable
704
+
702
705
  # @!attribute [r] stage_instance
703
706
  # @return [Discorb::StageInstance] The stage instance of the channel.
704
707
 
@@ -49,6 +49,8 @@ module Discorb
49
49
  attr_reader :ping
50
50
  # @return [:initialized, :running, :closed] The status of the client.
51
51
  attr_reader :status
52
+ # @return [Integer] The session ID of connection.
53
+ attr_reader :session_id
52
54
  # @private
53
55
  attr_reader :bottom_commands
54
56
 
@@ -458,7 +460,7 @@ module Discorb
458
460
  }
459
461
  @token = token.to_s
460
462
  @close_condition = Async::Condition.new
461
- main_task = Async do
463
+ @main_task = Async do
462
464
  @status = :running
463
465
  connect_gateway(true).wait
464
466
  rescue
@@ -467,7 +469,7 @@ module Discorb
467
469
  raise
468
470
  end
469
471
  @close_condition.wait
470
- main_task.stop
472
+ @main_task.stop
471
473
  end
472
474
  end
473
475
  end
@@ -4,7 +4,7 @@ module Discorb
4
4
  # @return [String] The API base URL.
5
5
  API_BASE_URL = "https://discord.com/api/v9"
6
6
  # @return [String] The version of discorb.
7
- VERSION = "0.5.2"
7
+ VERSION = "0.5.6"
8
8
  # @return [String] The user agent for the bot.
9
9
  USER_AGENT = "DiscordBot (https://github.com/discorb-lib/discorb #{VERSION}) Ruby/#{RUBY_VERSION}"
10
10
 
data/lib/discorb/embed.rb CHANGED
@@ -65,9 +65,9 @@ module Discorb
65
65
  @timestamp = data[:timestamp] && Time.iso8601(data[:timestamp])
66
66
  @type = data[:type]
67
67
  @color = data[:color] && Color.new(data[:color])
68
- @footer = data[:footer] && Footer.new(data[:footer][:text], icon: data[:footer][:icon])
68
+ @footer = data[:footer] && Footer.new(data[:footer][:text], icon: data[:footer][:icon_url])
69
69
  @author = if data[:author]
70
- Author.new(data[:author][:name], icon: data[:author][:icon],
70
+ Author.new(data[:author][:name], icon: data[:author][:icon_url],
71
71
  url: data[:author][:url])
72
72
  end
73
73
  @thumbnail = data[:thumbnail] && Thumbnail.new(data[:thumbnail])
data/lib/discorb/emoji.rb CHANGED
@@ -6,6 +6,13 @@ module Discorb
6
6
  # Represents a Discord emoji.
7
7
  # @abstract
8
8
  class Emoji
9
+ def eql?(other)
10
+ other.is_a?(self.class) && other.to_uri == to_uri
11
+ end
12
+
13
+ def ==(other)
14
+ eql?(other)
15
+ end
9
16
  end
10
17
 
11
18
  # Represents a custom emoji in discord.
@@ -171,10 +171,10 @@ if (dir = ARGV[0])
171
171
  $path += "/#{dir}"
172
172
  if Dir.exist?($path)
173
173
  if Dir.empty?($path)
174
- gputs "Found \e[30m#{dir}\e[90m and empty, using this directory."
174
+ iputs "Found \e[30m#{dir}\e[90m and empty, using this directory."
175
175
  else
176
176
  if $values[:force]
177
- gputs "Found \e[30m#{dir}\e[90m and not empty, but force is on, using this directory."
177
+ iputs "Found \e[30m#{dir}\e[90m and not empty, but force is on, using this directory."
178
178
  else
179
179
  eputs "Directory \e[31m#{dir}\e[91m already exists and not empty. Use \e[31m-f\e[91m to force."
180
180
  exit
@@ -182,7 +182,7 @@ if (dir = ARGV[0])
182
182
  end
183
183
  else
184
184
  Dir.mkdir($path)
185
- gputs "Couldn't find \e[30m#{dir}\e[90m, created directory."
185
+ iputs "Couldn't find \e[30m#{dir}\e[90m, created directory."
186
186
  end
187
187
  Dir.chdir($path)
188
188
  end
@@ -513,7 +513,6 @@ module Discorb
513
513
  case payload[:op]
514
514
  when 10
515
515
  @heartbeat_interval = data[:heartbeat_interval]
516
- @tasks << handle_heartbeat(@heartbeat_interval)
517
516
  if @first
518
517
  payload = {
519
518
  token: @token,
@@ -523,6 +522,13 @@ module Discorb
523
522
  }
524
523
  payload[:presence] = @identify_presence if @identify_presence
525
524
  send_gateway(2, **payload)
525
+ Async do
526
+ sleep 2
527
+ next unless @uncached_guilds.nil?
528
+
529
+ raise ClientError, "Failed to connect to gateway.\nHint: This usually means that your intents are invalid."
530
+ exit 1
531
+ end
526
532
  else
527
533
  payload = {
528
534
  token: @token,
@@ -540,7 +546,7 @@ module Discorb
540
546
  connect_gateway(false)
541
547
  else
542
548
  @log.info "Connection is not resumable, reconnecting with opcode 2"
543
- task.sleep(2)
549
+ sleep(2)
544
550
  @connection.close
545
551
  connect_gateway(true)
546
552
  end
@@ -555,7 +561,7 @@ module Discorb
555
561
 
556
562
  def handle_heartbeat(interval)
557
563
  Async do |task|
558
- task.sleep((interval / 1000.0 - 1) * rand)
564
+ sleep((interval / 1000.0 - 1) * rand)
559
565
  loop do
560
566
  @heartbeat_before = Time.now.to_f
561
567
  @connection.write({ op: 1, d: @last_s }.to_json)
@@ -578,6 +584,7 @@ module Discorb
578
584
  @session_id = data[:session_id]
579
585
  @user = ClientUser.new(self, data[:user])
580
586
  @uncached_guilds = data[:guilds].map { |g| g[:id] }
587
+ @tasks << handle_heartbeat(@heartbeat_interval)
581
588
  when "GUILD_CREATE"
582
589
  if @uncached_guilds.include?(data[:id])
583
590
  Guild.new(self, data, true)
@@ -977,7 +984,11 @@ module Discorb
977
984
  @log.info("Successfully resumed connection")
978
985
  dispatch(:resumed)
979
986
  else
980
- @log.warn "Unknown event: #{event_name}\n#{data.inspect}"
987
+ if respond_to?("event_" + event_name.downcase)
988
+ __send__("event_" + event_name.downcase, data)
989
+ else
990
+ @log.debug "Received unknown event: #{event_name}\n#{data.inspect}"
991
+ end
981
992
  end
982
993
  end
983
994
  end
@@ -336,7 +336,7 @@ module Discorb
336
336
  private
337
337
 
338
338
  def _set_data(data)
339
- @target = Message.new(@client, data[:resolved][:messages][data[:target_id].to_sym].merge({ guild_id: @guild_id.to_s }))
339
+ @target = Message.new(@client, data[:resolved][:messages][data[:target_id].to_sym])
340
340
  @client.commands.find { |c| c.name == data[:name] && c.type_raw == 3 }.block.call(self, @target)
341
341
  end
342
342
  end
@@ -393,7 +393,7 @@ module Discorb
393
393
  # @!visibility private
394
394
  def make_interaction(client, data)
395
395
  nested_classes.each do |klass|
396
- return klass.new(client, data) if !klass.component_type.nil? && klass.component_type == data[:type]
396
+ return klass.new(client, data) if !klass.component_type.nil? && klass.component_type == data[:data][:component_type]
397
397
  end
398
398
  client.log.warn("Unknown component type #{data[:component_type]}, initialized Interaction")
399
399
  MessageComponentInteraction.new(client, data)
@@ -208,4 +208,14 @@ module Discorb
208
208
  end
209
209
  end
210
210
  end
211
+
212
+ #
213
+ # Module for connecting to a voice channel.
214
+ # This will be discord-voice gem.
215
+ #
216
+ module Connectable
217
+ def connect
218
+ raise NotImplementedError, "This method is implemented by discord-voice gem."
219
+ end
220
+ end
211
221
  end
data/lib/discorb/user.rb CHANGED
@@ -78,7 +78,7 @@ module Discorb
78
78
  Async do
79
79
  next @dm_channel_id if @dm_channel_id
80
80
 
81
- dm_channel = @client.http.post("/users/#{@id}/channels", { recipient_id: @client.user.id }).wait
81
+ _resp, dm_channel = @client.http.post("/users/@me/channels", { recipient_id: @id }).wait
82
82
  @dm_channel_id = dm_channel[:id]
83
83
  @dm_channel_id
84
84
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discorb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - sevenc-nanashi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-10 00:00:00.000000000 Z
11
+ date: 2021-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async