mij-discord 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
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