mij-discord 1.0.8 → 1.0.9

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
  SHA1:
3
- metadata.gz: 79f209e5e6420da2007626aae908544d05da9121
4
- data.tar.gz: a3ced104cc02f533b5ba05641112685823a9f382
3
+ metadata.gz: ebc5f61a41aee441ed9a1d69a93f995fc96934d0
4
+ data.tar.gz: dcfb7ee3f5c9cfc9e82dbe4d2cc45e5ae2816cb1
5
5
  SHA512:
6
- metadata.gz: ae684e032ccb55100cd23faf439039f7a2c0f8bc352b8b890307c9270e78b0c724fc0f334fcf6579c4a70b232a2ab55a79b45eeb52146fa3211c15fd71a5c19f
7
- data.tar.gz: 933eacfede575e90b795bf7b023260f4964e9d0fb08b8d455a68635a7f2324b8f6abb3b498b1ee2748f5ab0c2ec69c44c961b0e00837f5c43760e87d0d61d744
6
+ metadata.gz: f68e2a58808f9ae6a33fc8b22948796953135f0c7d7820df2c4d033d9c3a00891f39022287aeb39dc69e8654f4e05619731c540fbe4bbf25518417ffd139e619
7
+ data.tar.gz: 15d6056effdbe7da11d6d8508aadb59cb45113b72635e18fd7574adc4bd1e630f229f0ca1c117d170e5a9addb3b4ebf0085250ba34394d32111b96bd2296724e
@@ -270,7 +270,7 @@ module MijDiscord
270
270
  end
271
271
 
272
272
  em_data = { 'id' => $3.to_i, 'name' => $2, 'animated' => !$1.empty? }
273
- MijDiscord::Data::Emoji.new(em_data, self, nil)
273
+ MijDiscord::Data::Emoji.new(em_data, nil)
274
274
  end
275
275
  end
276
276
 
@@ -381,6 +381,9 @@ module MijDiscord
381
381
 
382
382
  notify_ready if @unavailable_servers.zero?
383
383
 
384
+ when :SESSIONS_REPLACE
385
+ # Do nothing with session replace because no idea what it does.
386
+
384
387
  when :GUILD_MEMBERS_CHUNK
385
388
  server = @cache.get_server(data['guild_id'])
386
389
  server.update_members_chunk(data['members'])
@@ -527,6 +530,10 @@ module MijDiscord
527
530
  messages.each {|x| trigger_event(:delete_message, self, x) }
528
531
 
529
532
  when :MESSAGE_REACTION_ADD
533
+ channel = @cache.get_channel(data['channel_id'], nil)
534
+ message = channel.cache.get_message(data['message_id'], local: true)
535
+ message.update_reaction(add: data) if message
536
+
530
537
  # Should add full use ignore support?
531
538
  return if ignored_user?(data['user_id'])
532
539
 
@@ -534,6 +541,10 @@ module MijDiscord
534
541
  trigger_event(:toggle_reaction, self, data)
535
542
 
536
543
  when :MESSAGE_REACTION_REMOVE
544
+ channel = @cache.get_channel(data['channel_id'], nil)
545
+ message = channel.cache.get_message(data['message_id'], local: true)
546
+ message.update_reaction(remove: data) if message
547
+
537
548
  # Should add full use ignore support?
538
549
  return if ignored_user?(data['user_id'])
539
550
 
@@ -541,6 +552,10 @@ module MijDiscord
541
552
  trigger_event(:toggle_reaction, self, data)
542
553
 
543
554
  when :MESSAGE_REACTION_REMOVE_ALL
555
+ channel = @cache.get_channel(data['channel_id'], nil)
556
+ message = channel.cache.get_message(data['message_id'], local: true)
557
+ message.update_reaction(clear: true) if message
558
+
544
559
  trigger_event(:clear_reactions, self, data)
545
560
 
546
561
  when :TYPING_START
@@ -12,8 +12,8 @@ module MijDiscord::Data
12
12
 
13
13
  attr_reader :animated
14
14
 
15
- def initialize(data, bot, server)
16
- @bot, @server = bot, server
15
+ def initialize(data, server)
16
+ @server = server
17
17
 
18
18
  @id = data['id'].to_i
19
19
  @name = data['name']
@@ -46,22 +46,26 @@ module MijDiscord::Data
46
46
  end
47
47
  end
48
48
 
49
- class Reaction
50
- attr_reader :id
51
-
52
- attr_reader :name
49
+ class Reaction < Emoji
50
+ attr_reader :message
53
51
 
54
52
  attr_reader :count
55
53
 
56
54
  attr_reader :me
57
55
  alias_method :me?, :me
58
56
 
59
- def initialize(data)
57
+ def initialize(data, message)
58
+ super(data['emoji'], nil)
59
+
60
+ @message = message
61
+
60
62
  @me = !!data['me']
61
63
  @count = data['count'] || 1
64
+ end
62
65
 
63
- @id = data['emoji']['id']&.to_i
64
- @name = data['emoji']['name']
66
+ def update_data(count: nil, me: nil)
67
+ @count = count unless count.nil?
68
+ @me = me unless me.nil?
65
69
  end
66
70
 
67
71
  def inspect
@@ -30,7 +30,7 @@ module MijDiscord::Data
30
30
 
31
31
  attr_reader :embeds
32
32
 
33
- # attr_reader :reactions
33
+ attr_reader :reactions
34
34
 
35
35
  attr_reader :tts
36
36
  alias_method :tts?, :tts
@@ -81,10 +81,10 @@ module MijDiscord::Data
81
81
 
82
82
  @mention_everyone = !!data['mention_everyone']
83
83
 
84
- # @reactions = []
85
- # if (reactions = data['reactions'])
86
- # reactions.each {|x| @reactions << Reaction.new(x) }
87
- # end
84
+ @reactions = []
85
+ if (reactions = data['reactions'])
86
+ reactions.each {|x| @reactions << Reaction.new(x, self) }
87
+ end
88
88
 
89
89
  @user_mentions = []
90
90
  if (mentions = data['mentions'])
@@ -107,6 +107,38 @@ module MijDiscord::Data
107
107
  end
108
108
  end
109
109
 
110
+ def update_reaction(add: nil, remove: nil, clear: false)
111
+ @reactions.clear if clear
112
+
113
+ unless add.nil?
114
+ id = add['emoji']['id'].to_i
115
+ name = add['emoji']['name']
116
+ userid = add['user_id'].to_i
117
+
118
+ if (emoji = @reactions.find {|x| id.zero? ? (x.name == name) : (x.id == id) })
119
+ emoji.update_data(count: emoji.count + 1, me: @bot.profile == userid ? true : nil)
120
+ else
121
+ emoji = Reaction.new(add, self)
122
+ emoji.update_data(me: @bot.profile == userid)
123
+ @reactions << emoji
124
+ end
125
+ end
126
+
127
+ unless remove.nil?
128
+ id = remove['emoji']['id'].to_i
129
+ name = remove['emoji']['name']
130
+ userid = remove['user_id'].to_i
131
+
132
+ if (emoji = @reactions.find {|x| id.zero? ? (x.name == name) : (x.id == id) })
133
+ emoji.update_data(count: emoji.count - 1, me: @bot.profile == userid ? false : nil)
134
+ @reactions.delete(emoji) if emoji.count < 1
135
+ else
136
+ # WTF? How did this happen?
137
+ MijDiscord::LOGGER.warn('Events') { 'MESSAGE_REACTION_REMOVE triggered on message with no reactions!' }
138
+ end
139
+ end
140
+ end
141
+
110
142
  def reply(text: '', embed: nil, tts: false)
111
143
  @channel.send_message(text: text, embed: embed, tts: tts)
112
144
  end
@@ -144,9 +176,9 @@ module MijDiscord::Data
144
176
  !@webhook_id.nil?
145
177
  end
146
178
 
147
- # def my_reactions
148
- # @reactions.select(&:me)
149
- # end
179
+ def my_reactions
180
+ @reactions.select(&:me)
181
+ end
150
182
 
151
183
  def create_reaction(reaction)
152
184
  emoji = reaction.respond_to?(:reaction) ? reaction.reaction : reaction
@@ -109,7 +109,7 @@ module MijDiscord::Data
109
109
  def update_emojis(data)
110
110
  @emojis = {}
111
111
  data['emojis'].each do |em|
112
- emoji = MijDiscord::Data::Emoji.new(em, @bot, self)
112
+ emoji = MijDiscord::Data::Emoji.new(em, self)
113
113
  @emojis[emoji.id] = emoji
114
114
  end
115
115
  end
@@ -216,12 +216,20 @@ module MijDiscord::Data
216
216
  @voice_states[id&.to_id]
217
217
  end
218
218
 
219
- def default_channel
219
+ def default_channel(can_send = false)
220
220
  text_channels.sort_by {|ch| [ch.position, ch.id] }.find do |ch|
221
221
  if (overwrite = ch.permission_overwrites[id])
222
- overwrite.allow.read_messages? || !overwrite.deny.read_messages?
222
+ if can_send
223
+ overwrite.allow.send_messages? || !overwrite.deny.send_messages?
224
+ else
225
+ overwrite.allow.read_messages? || !overwrite.deny.read_messages?
226
+ end
223
227
  else
224
- everyone_role.permissions.read_messages
228
+ if can_send
229
+ everyone_role.permissions.send_messages
230
+ else
231
+ everyone_role.permissions.read_messages
232
+ end
225
233
  end
226
234
  end
227
235
  end
@@ -131,7 +131,7 @@ module MijDiscord::Events
131
131
 
132
132
  if (emoji = data['emoji'])
133
133
  @emoji = server&.emoji(emoji['id'])
134
- @emoji ||= MijDiscord::Data::Emoji.new(emoji, @bot, nil)
134
+ @emoji ||= MijDiscord::Data::Emoji.new(emoji, nil)
135
135
  end
136
136
  end
137
137
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MijDiscord
4
- VERSION = '1.0.8'
4
+ VERSION = '1.0.9'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mij-discord
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mijyuoon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-12 00:00:00.000000000 Z
11
+ date: 2018-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client