discordrb 2.0.2 → 2.0.3
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.
Potentially problematic release.
This version of discordrb might be problematic. Click here for more details.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +13 -0
 - data/examples/eval.rb +4 -4
 - data/examples/ping_with_respond_time.rb +1 -1
 - data/examples/shutdown.rb +2 -2
 - data/lib/discordrb/bot.rb +12 -10
 - data/lib/discordrb/commands/command_bot.rb +2 -1
 - data/lib/discordrb/commands/container.rb +3 -0
 - data/lib/discordrb/commands/parser.rb +3 -0
 - data/lib/discordrb/data.rb +5 -3
 - data/lib/discordrb/version.rb +1 -1
 - data/lib/discordrb/voice/voice_bot.rb +9 -2
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: e85a40f2b3cc06af57ecf04357e35453c6fc48ef
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: a5b5ff40e9ae47db4875392e74f6a4ce8d91bf2e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: cde28c5fa4b45858fa2646b19a677a8d59659d3abeb6b3b0a33f0808d6e9ec5ef830dc73be77fc05d6bb5392204a0d61742adc1fc7331b564ef38183ac47d96d
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 02f17a29a2ebeec59047a799ce9a3564123dc7fdf8962d2940110738cb0285e8ee51daed9e5130ff5667f2621c588c689ec203c6e6f0fb282f6727b233ecef2a
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,5 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Changelog
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            ## 2.0.3
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            - All examples now fully use v2 ([#92](https://github.com/meew0/discordrb/pull/92), thanks @snapcase)
         
     | 
| 
      
 6 
     | 
    
         
            +
            - The message that occurs when a command is missing permission can now be changed or disabled ([#94](https://github.com/meew0/discordrb/pull/94), thanks @snapcase)
         
     | 
| 
      
 7 
     | 
    
         
            +
            - The log message that occurs when you disconnect from the WebSocket is now more compact ([#90](https://github.com/meew0/discordrb/issues/90))
         
     | 
| 
      
 8 
     | 
    
         
            +
            - `Bot#ignored?` now exists to check whether a user is ignored
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            ### Bugfixes
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            - A problem where getting channel history would sometimes cause an exception has been fixed ([#88](https://github.com/meew0/discordrb/issues/88))
         
     | 
| 
      
 13 
     | 
    
         
            +
            - `split_message` should now behave correctly in a specific edge case ([#85](https://github.com/meew0/discordrb/pull/85), thanks @AnhNhan)
         
     | 
| 
      
 14 
     | 
    
         
            +
            - DCA playback should no longer cause an error when playback ends due to a specific reason
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       3 
16 
     | 
    
         
             
            ## 2.0.2
         
     | 
| 
       4 
17 
     | 
    
         | 
| 
       5 
18 
     | 
    
         
             
            - Added `Server#text_channels` and `#voice_channels` ([#79](https://github.com/meew0/discordrb/issues/79))
         
     | 
    
        data/examples/eval.rb
    CHANGED
    
    | 
         @@ -2,13 +2,13 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require 'discordrb'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            bot = Discordrb::Commands::CommandBot.new ' 
     | 
| 
      
 5 
     | 
    
         
            +
            bot = Discordrb::Commands::CommandBot.new token: 'B0T.T0KEN.here', application_id: 160123456789876543, prefix: '!'
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            bot.command(:eval, help_available: false) do |event, code|
         
     | 
| 
       8 
     | 
    
         
            -
              break  
     | 
| 
      
 7 
     | 
    
         
            +
            bot.command(:eval, help_available: false) do |event, *code|
         
     | 
| 
      
 8 
     | 
    
         
            +
              break unless event.user.id == 000000 # Replace number with your ID
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              begin
         
     | 
| 
       11 
     | 
    
         
            -
                eval( 
     | 
| 
      
 11 
     | 
    
         
            +
                eval code.join(' ')
         
     | 
| 
       12 
12 
     | 
    
         
             
              rescue
         
     | 
| 
       13 
13 
     | 
    
         
             
                "An error occured 😞"
         
     | 
| 
       14 
14 
     | 
    
         
             
              end
         
     | 
| 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require 'discordrb'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            bot = Discordrb::Commands::CommandBot.new ' 
     | 
| 
      
 5 
     | 
    
         
            +
            bot = Discordrb::Commands::CommandBot.new token: 'B0T.T0KEN.here', application_id: 160123456789876543, prefix: '!'
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            bot.command(:ping) do |event|
         
     | 
| 
       8 
8 
     | 
    
         
             
              m = event.respond('Pong!')
         
     | 
    
        data/examples/shutdown.rb
    CHANGED
    
    | 
         @@ -2,10 +2,10 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require 'discordrb'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            bot = Discordrb::Commands::CommandBot.new ' 
     | 
| 
      
 5 
     | 
    
         
            +
            bot = Discordrb::Commands::CommandBot.new token: 'B0T.T0KEN.here', application_id: 160123456789876543, prefix: '!'
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            bot.command(:exit, help_available: false) do |event|
         
     | 
| 
       8 
     | 
    
         
            -
              break  
     | 
| 
      
 8 
     | 
    
         
            +
              break unless event.user.id == 000000 # Replace number with your ID
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              bot.send_message(event.channel.id, 'Bot is shutting down')
         
     | 
| 
       11 
11 
     | 
    
         
             
              exit
         
     | 
    
        data/lib/discordrb/bot.rb
    CHANGED
    
    | 
         @@ -242,12 +242,9 @@ module Discordrb 
     | 
|
| 
       242 
242 
     | 
    
         
             
                    loop do
         
     | 
| 
       243 
243 
     | 
    
         
             
                      websocket_connect
         
     | 
| 
       244 
244 
     | 
    
         | 
| 
       245 
     | 
    
         
            -
                      # websocket_connect is blocking so being in here means we're disconnected
         
     | 
| 
       246 
     | 
    
         
            -
                      LOGGER.warn('Oh dear, we got disconnected!')
         
     | 
| 
       247 
     | 
    
         
            -
             
     | 
| 
       248 
245 
     | 
    
         
             
                      if @reconnect_url
         
     | 
| 
       249 
246 
     | 
    
         
             
                        # We got an op 7! Don't wait before reconnecting
         
     | 
| 
       250 
     | 
    
         
            -
                         
     | 
| 
      
 247 
     | 
    
         
            +
                        LOGGER.info('Got an op 7, reconnecting right away')
         
     | 
| 
       251 
248 
     | 
    
         
             
                      else
         
     | 
| 
       252 
249 
     | 
    
         
             
                        wait_for_reconnect
         
     | 
| 
       253 
250 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -543,6 +540,13 @@ module Discordrb 
     | 
|
| 
       543 
540 
     | 
    
         
             
                  @ignored_ids.delete(user.resolve_id)
         
     | 
| 
       544 
541 
     | 
    
         
             
                end
         
     | 
| 
       545 
542 
     | 
    
         | 
| 
      
 543 
     | 
    
         
            +
                # Checks whether a user is being ignored.
         
     | 
| 
      
 544 
     | 
    
         
            +
                # @param user [User, Integer, #resolve_id] The user, or its ID, to check.
         
     | 
| 
      
 545 
     | 
    
         
            +
                # @return [true, false] whether or not the user is ignored.
         
     | 
| 
      
 546 
     | 
    
         
            +
                def ignored?(user)
         
     | 
| 
      
 547 
     | 
    
         
            +
                  @ignored_ids.include?(user.resolve_id)
         
     | 
| 
      
 548 
     | 
    
         
            +
                end
         
     | 
| 
      
 549 
     | 
    
         
            +
             
     | 
| 
       546 
550 
     | 
    
         
             
                # @see Logger#debug
         
     | 
| 
       547 
551 
     | 
    
         
             
                def debug(message)
         
     | 
| 
       548 
552 
     | 
    
         
             
                  LOGGER.debug(message)
         
     | 
| 
         @@ -1056,7 +1060,7 @@ module Discordrb 
     | 
|
| 
       1056 
1060 
     | 
    
         
             
                    server = server(id)
         
     | 
| 
       1057 
1061 
     | 
    
         
             
                    server.process_chunk(data['members'])
         
     | 
| 
       1058 
1062 
     | 
    
         
             
                  when :MESSAGE_CREATE
         
     | 
| 
       1059 
     | 
    
         
            -
                    if  
     | 
| 
      
 1063 
     | 
    
         
            +
                    if ignored?(data['author']['id'].to_i)
         
     | 
| 
       1060 
1064 
     | 
    
         
             
                      debug("Ignored author with ID #{data['author']['id']}")
         
     | 
| 
       1061 
1065 
     | 
    
         
             
                      return
         
     | 
| 
       1062 
1066 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -1216,16 +1220,14 @@ module Discordrb 
     | 
|
| 
       1216 
1220 
     | 
    
         
             
                end
         
     | 
| 
       1217 
1221 
     | 
    
         | 
| 
       1218 
1222 
     | 
    
         
             
                def websocket_close(event)
         
     | 
| 
       1219 
     | 
    
         
            -
                  LOGGER.error('Disconnected from WebSocket!')
         
     | 
| 
       1220 
     | 
    
         
            -
             
     | 
| 
       1221 
1223 
     | 
    
         
             
                  # Don't handle nil events (for example if the disconnect came from our side)
         
     | 
| 
       1222 
1224 
     | 
    
         
             
                  return unless event
         
     | 
| 
       1223 
1225 
     | 
    
         | 
| 
       1224 
1226 
     | 
    
         
             
                  # Handle actual close frames and errors separately
         
     | 
| 
       1225 
1227 
     | 
    
         
             
                  if event.respond_to? :code
         
     | 
| 
       1226 
     | 
    
         
            -
                    LOGGER.error( 
     | 
| 
       1227 
     | 
    
         
            -
                    LOGGER.error(" (Code: #{event.code})")
         
     | 
| 
      
 1228 
     | 
    
         
            +
                    LOGGER.error(%(Disconnected from WebSocket - code #{event.code} with reason: "#{event.data}"))
         
     | 
| 
       1228 
1229 
     | 
    
         
             
                  else
         
     | 
| 
      
 1230 
     | 
    
         
            +
                    LOGGER.error('Disconnected from WebSocket due to an exception!')
         
     | 
| 
       1229 
1231 
     | 
    
         
             
                    LOGGER.log_exception event
         
     | 
| 
       1230 
1232 
     | 
    
         
             
                  end
         
     | 
| 
       1231 
1233 
     | 
    
         | 
| 
         @@ -1321,7 +1323,7 @@ module Discordrb 
     | 
|
| 
       1321 
1323 
     | 
    
         
             
                # unexpected way
         
     | 
| 
       1322 
1324 
     | 
    
         
             
                def wait_for_reconnect
         
     | 
| 
       1323 
1325 
     | 
    
         
             
                  # We disconnected in an unexpected way! Wait before reconnecting so we don't spam Discord's servers.
         
     | 
| 
       1324 
     | 
    
         
            -
                  debug(" 
     | 
| 
      
 1326 
     | 
    
         
            +
                  debug("Attempting to reconnect in #{@falloff} seconds.")
         
     | 
| 
       1325 
1327 
     | 
    
         
             
                  sleep @falloff
         
     | 
| 
       1326 
1328 
     | 
    
         | 
| 
       1327 
1329 
     | 
    
         
             
                  # Calculate new falloff
         
     | 
| 
         @@ -155,7 +155,8 @@ module Discordrb::Commands 
     | 
|
| 
       155 
155 
     | 
    
         
             
                    result = command.call(event, arguments, chained)
         
     | 
| 
       156 
156 
     | 
    
         
             
                    stringify(result)
         
     | 
| 
       157 
157 
     | 
    
         
             
                  else
         
     | 
| 
       158 
     | 
    
         
            -
                    event.respond  
     | 
| 
      
 158 
     | 
    
         
            +
                    event.respond command.attributes[:permission_message].gsub('%name%', name.to_s) if command.attributes[:permission_message]
         
     | 
| 
      
 159 
     | 
    
         
            +
                    return
         
     | 
| 
       159 
160 
     | 
    
         
             
                  end
         
     | 
| 
       160 
161 
     | 
    
         
             
                end
         
     | 
| 
       161 
162 
     | 
    
         | 
| 
         @@ -14,6 +14,9 @@ module Discordrb::Commands 
     | 
|
| 
       14 
14 
     | 
    
         
             
                # @param attributes [Hash] The attributes to initialize the command with.
         
     | 
| 
       15 
15 
     | 
    
         
             
                # @option attributes [Integer] :permission_level The minimum permission level that can use this command, inclusive.
         
     | 
| 
       16 
16 
     | 
    
         
             
                #   See {CommandBot#set_user_permission} and {CommandBot#set_role_permission}.
         
     | 
| 
      
 17 
     | 
    
         
            +
                # @option attributes [String, false] :permission_message Message to display when a user does not have sufficient
         
     | 
| 
      
 18 
     | 
    
         
            +
                #   permissions to execute a command. %name% in the message will be replaced with the name of the command. Disable
         
     | 
| 
      
 19 
     | 
    
         
            +
                #   the message by setting this option to false.
         
     | 
| 
       17 
20 
     | 
    
         
             
                # @option attributes [true, false] :chain_usable Whether this command is able to be used inside of a command chain
         
     | 
| 
       18 
21 
     | 
    
         
             
                #   or sub-chain. Typically used for administrative commands that shouldn't be done carelessly.
         
     | 
| 
       19 
22 
     | 
    
         
             
                # @option attributes [true, false] :help_available Whether this command is visible in the help command. See the
         
     | 
| 
         @@ -16,6 +16,9 @@ module Discordrb::Commands 
     | 
|
| 
       16 
16 
     | 
    
         
             
                    # The lowest permission level that can use the command
         
     | 
| 
       17 
17 
     | 
    
         
             
                    permission_level: attributes[:permission_level] || 0,
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
      
 19 
     | 
    
         
            +
                    # Message to display when a user does not have sufficient permissions to execute a command
         
     | 
| 
      
 20 
     | 
    
         
            +
                    permission_message: (attributes[:permission_message].is_a? FalseClass) ? nil : (attributes[:permission_message] || "You don't have permission to execute command %name%!"),
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       19 
22 
     | 
    
         
             
                    # Whether this command is usable in a command chain
         
     | 
| 
       20 
23 
     | 
    
         
             
                    chain_usable: attributes[:chain_usable].nil? ? true : attributes[:chain_usable],
         
     | 
| 
       21 
24 
     | 
    
         | 
    
        data/lib/discordrb/data.rb
    CHANGED
    
    | 
         @@ -42,7 +42,7 @@ module Discordrb 
     | 
|
| 
       42 
42 
     | 
    
         
             
                tri = [*0..(lines.length - 1)].map { |i| lines.combination(i + 1).first }
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
                # Join the individual elements together to get an array of strings with consecutively more lines
         
     | 
| 
       45 
     | 
    
         
            -
                joined = tri.map 
     | 
| 
      
 45 
     | 
    
         
            +
                joined = tri.map(&:join)
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
47 
     | 
    
         
             
                # Find the largest element that is still below the character limit, or if none such element exists return the first
         
     | 
| 
       48 
48 
     | 
    
         
             
                ideal = joined.max_by { |e| e.length > CHARACTER_LIMIT ? -1 : e.length }
         
     | 
| 
         @@ -1059,7 +1059,7 @@ module Discordrb 
     | 
|
| 
       1059 
1059 
     | 
    
         
             
                                # directly because the bot may also send messages to the channel
         
     | 
| 
       1060 
1060 
     | 
    
         
             
                                Recipient.new(bot.user(data['author']['id'].to_i), @channel, bot)
         
     | 
| 
       1061 
1061 
     | 
    
         
             
                              else
         
     | 
| 
       1062 
     | 
    
         
            -
                                @channel.server.member(data['author']['id'].to_i)
         
     | 
| 
      
 1062 
     | 
    
         
            +
                                @channel.server.member(data['author']['id'].to_i, false)
         
     | 
| 
       1063 
1063 
     | 
    
         
             
                              end
         
     | 
| 
       1064 
1064 
     | 
    
         
             
                            end
         
     | 
| 
       1065 
1065 
     | 
    
         | 
| 
         @@ -1199,9 +1199,11 @@ module Discordrb 
     | 
|
| 
       1199 
1199 
     | 
    
         | 
| 
       1200 
1200 
     | 
    
         
             
                # Gets a member on this server based on user ID
         
     | 
| 
       1201 
1201 
     | 
    
         
             
                # @param id [Integer] The user ID to look for
         
     | 
| 
       1202 
     | 
    
         
            -
                 
     | 
| 
      
 1202 
     | 
    
         
            +
                # @param request [true, false] Whether the member should be requested from Discord if it's not cached
         
     | 
| 
      
 1203 
     | 
    
         
            +
                def member(id, request = true)
         
     | 
| 
       1203 
1204 
     | 
    
         
             
                  id = id.resolve_id
         
     | 
| 
       1204 
1205 
     | 
    
         
             
                  return @members[id] if member_cached?(id)
         
     | 
| 
      
 1206 
     | 
    
         
            +
                  return nil unless request
         
     | 
| 
       1205 
1207 
     | 
    
         | 
| 
       1206 
1208 
     | 
    
         
             
                  member = @bot.member(@id, id)
         
     | 
| 
       1207 
1209 
     | 
    
         
             
                  @members[id] = member
         
     | 
    
        data/lib/discordrb/version.rb
    CHANGED
    
    
| 
         @@ -249,11 +249,18 @@ module Discordrb::Voice 
     | 
|
| 
       249 
249 
     | 
    
         
             
                  play_internal do
         
     | 
| 
       250 
250 
     | 
    
         
             
                    begin
         
     | 
| 
       251 
251 
     | 
    
         
             
                      # Read header
         
     | 
| 
       252 
     | 
    
         
            -
                       
     | 
| 
      
 252 
     | 
    
         
            +
                      header_str = input_stream.read(2)
         
     | 
| 
      
 253 
     | 
    
         
            +
             
     | 
| 
      
 254 
     | 
    
         
            +
                      unless header_str
         
     | 
| 
      
 255 
     | 
    
         
            +
                        @bot.debug 'Finished DCA parsing (header is nil)'
         
     | 
| 
      
 256 
     | 
    
         
            +
                        break
         
     | 
| 
      
 257 
     | 
    
         
            +
                      end
         
     | 
| 
      
 258 
     | 
    
         
            +
             
     | 
| 
      
 259 
     | 
    
         
            +
                      header = header_str.unpack('s<')[0]
         
     | 
| 
       253 
260 
     | 
    
         | 
| 
       254 
261 
     | 
    
         
             
                      raise 'Negative header in DCA file! Your file is likely corrupted.' if header < 0
         
     | 
| 
       255 
262 
     | 
    
         
             
                    rescue EOFError
         
     | 
| 
       256 
     | 
    
         
            -
                      @bot.debug 'Finished DCA parsing'
         
     | 
| 
      
 263 
     | 
    
         
            +
                      @bot.debug 'Finished DCA parsing (EOFError)'
         
     | 
| 
       257 
264 
     | 
    
         
             
                      break
         
     | 
| 
       258 
265 
     | 
    
         
             
                    end
         
     | 
| 
       259 
266 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: discordrb
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.0.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - meew0
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016-04- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-04-15 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rest-client
         
     |