discordrb 3.3.0 → 3.4.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.
- checksums.yaml +4 -4
 - data/.circleci/config.yml +126 -0
 - data/.github/ISSUE_TEMPLATE/bug_report.md +39 -0
 - data/.github/ISSUE_TEMPLATE/feature_request.md +25 -0
 - data/.github/pull_request_template.md +37 -0
 - data/.rubocop.yml +34 -37
 - data/.travis.yml +5 -6
 - data/CHANGELOG.md +504 -347
 - data/Gemfile +2 -0
 - data/LICENSE.txt +1 -1
 - data/README.md +61 -79
 - data/Rakefile +2 -0
 - data/bin/console +1 -0
 - data/discordrb-webhooks.gemspec +6 -6
 - data/discordrb.gemspec +18 -18
 - data/lib/discordrb/allowed_mentions.rb +36 -0
 - data/lib/discordrb/api/channel.rb +62 -39
 - data/lib/discordrb/api/invite.rb +3 -3
 - data/lib/discordrb/api/server.rb +57 -50
 - data/lib/discordrb/api/user.rb +9 -8
 - data/lib/discordrb/api/webhook.rb +6 -6
 - data/lib/discordrb/api.rb +40 -15
 - data/lib/discordrb/await.rb +0 -1
 - data/lib/discordrb/bot.rb +175 -73
 - data/lib/discordrb/cache.rb +4 -2
 - data/lib/discordrb/colour_rgb.rb +43 -0
 - data/lib/discordrb/commands/command_bot.rb +30 -9
 - data/lib/discordrb/commands/container.rb +20 -23
 - data/lib/discordrb/commands/parser.rb +18 -18
 - data/lib/discordrb/commands/rate_limiter.rb +3 -2
 - data/lib/discordrb/container.rb +77 -17
 - data/lib/discordrb/data/activity.rb +271 -0
 - data/lib/discordrb/data/application.rb +50 -0
 - data/lib/discordrb/data/attachment.rb +56 -0
 - data/lib/discordrb/data/audit_logs.rb +345 -0
 - data/lib/discordrb/data/channel.rb +849 -0
 - data/lib/discordrb/data/embed.rb +251 -0
 - data/lib/discordrb/data/emoji.rb +82 -0
 - data/lib/discordrb/data/integration.rb +83 -0
 - data/lib/discordrb/data/invite.rb +137 -0
 - data/lib/discordrb/data/member.rb +297 -0
 - data/lib/discordrb/data/message.rb +334 -0
 - data/lib/discordrb/data/overwrite.rb +102 -0
 - data/lib/discordrb/data/profile.rb +91 -0
 - data/lib/discordrb/data/reaction.rb +33 -0
 - data/lib/discordrb/data/recipient.rb +34 -0
 - data/lib/discordrb/data/role.rb +191 -0
 - data/lib/discordrb/data/server.rb +1002 -0
 - data/lib/discordrb/data/user.rb +204 -0
 - data/lib/discordrb/data/voice_region.rb +45 -0
 - data/lib/discordrb/data/voice_state.rb +41 -0
 - data/lib/discordrb/data/webhook.rb +145 -0
 - data/lib/discordrb/data.rb +25 -4180
 - data/lib/discordrb/errors.rb +2 -1
 - data/lib/discordrb/events/bans.rb +7 -5
 - data/lib/discordrb/events/channels.rb +2 -0
 - data/lib/discordrb/events/guilds.rb +16 -9
 - data/lib/discordrb/events/invites.rb +125 -0
 - data/lib/discordrb/events/members.rb +6 -2
 - data/lib/discordrb/events/message.rb +69 -27
 - data/lib/discordrb/events/presence.rb +14 -4
 - data/lib/discordrb/events/raw.rb +1 -3
 - data/lib/discordrb/events/reactions.rb +49 -3
 - data/lib/discordrb/events/typing.rb +6 -4
 - data/lib/discordrb/events/voice_server_update.rb +47 -0
 - data/lib/discordrb/events/voice_state_update.rb +15 -10
 - data/lib/discordrb/events/webhooks.rb +9 -6
 - data/lib/discordrb/gateway.rb +72 -57
 - data/lib/discordrb/id_object.rb +39 -0
 - data/lib/discordrb/light/integrations.rb +1 -1
 - data/lib/discordrb/light/light_bot.rb +1 -1
 - data/lib/discordrb/logger.rb +4 -4
 - data/lib/discordrb/paginator.rb +57 -0
 - data/lib/discordrb/permissions.rb +103 -8
 - data/lib/discordrb/version.rb +1 -1
 - data/lib/discordrb/voice/encoder.rb +16 -7
 - data/lib/discordrb/voice/network.rb +84 -43
 - data/lib/discordrb/voice/sodium.rb +96 -0
 - data/lib/discordrb/voice/voice_bot.rb +34 -26
 - data/lib/discordrb.rb +73 -0
 - metadata +98 -60
 - /data/{CONTRIBUTING.md → .github/CONTRIBUTING.md} +0 -0
 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -4,13 +4,170 @@ All notable changes to this project will be documented in this file. 
     | 
|
| 
       4 
4 
     | 
    
         
             
            The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
         
     | 
| 
       5 
5 
     | 
    
         
             
            and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            ##  
     | 
| 
       8 
     | 
    
         
            -
            [ 
     | 
| 
      
 7 
     | 
    
         
            +
            ## [3.4.2] - 2020-2-5
         
     | 
| 
      
 8 
     | 
    
         
            +
            [3.4.1]: https://github.com/shardlab/discordrb/releases/tag/v3.4.2
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            [View diff for this release.](https://github.com/shardlab/discordrb/compare/v3.4.1..v3.4.2)
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ### Summary
         
     | 
| 
      
 13 
     | 
    
         
            +
            I failed to update rest-client dependencies properly, and discovered that you can't republish gem versions the hard way.
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            ### Changed
         
     | 
| 
      
 16 
     | 
    
         
            +
            - `rest-client` has a requirement of `>= 2.0.0` on both `discordrb` and `discordrb-webhooks`
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            ## [3.4.1] - 2020-2-4
         
     | 
| 
      
 19 
     | 
    
         
            +
            [3.4.1]: https://github.com/shardlab/discordrb/releases/tag/v3.4.1
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            [View diff for this release.](https://github.com/shardlab/discordrb/compare/v3.4.0..v3.4.1)
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            ### Summary
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            With 3.4.0, mistakes were made during the version bump leading to a bit of a dependency issue between `discordrb` and `discordrb-webhooks` (sorry!).
         
     | 
| 
      
 26 
     | 
    
         
            +
            This micro bump fixes this, fixes a few other code issues, and adds a few minor features.
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            ### Added
         
     | 
| 
      
 29 
     | 
    
         
            +
            - Added support for `competing` activity types ([#21](https://github.com/shardlab/discordrb/pull/21), thanks @kaine119)
         
     | 
| 
      
 30 
     | 
    
         
            +
            - Support for a callable command_does_not_exist_message ([#25](https://github.com/shardlab/discordrb/pull/25), thanks @kmcphillips)
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            ### Fixed
         
     | 
| 
      
 33 
     | 
    
         
            +
            - `Bot#send_temporary_message` now properly passes `message_reference` ([#17](https://github.com/shardlab/discordrb/pull/17) thanks @swarley)
         
     | 
| 
      
 34 
     | 
    
         
            +
            - Rate limit precision is only supplied when the route requires headers ([#11](https://github.com/shardlab/discordrb/pull/11) thanks @dali546)
         
     | 
| 
      
 35 
     | 
    
         
            +
            - Remove pointless conditional in `Invite` initializer ([#26](https://github.com/shardlab/discordrb/pull/26) thanks @swarley)
         
     | 
| 
      
 36 
     | 
    
         
            +
            - All API methods link to their official documentation counterparts ([#12](https://github.com/shardlab/discordrb/pull/12) thanks @kaine119)
         
     | 
| 
      
 37 
     | 
    
         
            +
            - Links to messages now work when a `guild_id` is not present in a non DM message. ([#27](https://github.com/shardlab/discordrb/pull/27) thanks @swarley)
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            ## [3.4.0] - 2020-12-06
         
     | 
| 
      
 40 
     | 
    
         
            +
            [3.4.0]: https://github.com/shardlab/discordrb/releases/tag/v3.3.0
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            [View diff for this release.](https://github.com/shardlab/discordrb/compare/v3.4.0...v3.3.0)
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            ### Summary
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            This release has been a _very_ long time coming. It brings countless fixes, performance increases, features, and changes. So many in fact, that it's only feasible to put the major hilights in summary.
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            The largest additions are that of intents support and a massive performance increase in our websocket read loop.
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            Intents allow you to pick and choose what types of events are fed to your bot over the gateway. An example usage would be:
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 53 
     | 
    
         
            +
            Discordrb::Bot.new(token: 'B0T.T0K3N', intents: %i[servers server_messages])
         
     | 
| 
      
 54 
     | 
    
         
            +
            ```
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            In this example, we would only recieve the following events
         
     | 
| 
      
 58 
     | 
    
         
            +
            - GUILD_CREATE
         
     | 
| 
      
 59 
     | 
    
         
            +
            - GUILD_UPDATE
         
     | 
| 
      
 60 
     | 
    
         
            +
            - GUILD_DELETE
         
     | 
| 
      
 61 
     | 
    
         
            +
            - GUILD_ROLE_CREATE
         
     | 
| 
      
 62 
     | 
    
         
            +
            - GUILD_ROLE_UPDATE
         
     | 
| 
      
 63 
     | 
    
         
            +
            - GUILD_ROLE_DELETE
         
     | 
| 
      
 64 
     | 
    
         
            +
            - CHANNEL_CREATE
         
     | 
| 
      
 65 
     | 
    
         
            +
            - CHANNEL_UPDATE
         
     | 
| 
      
 66 
     | 
    
         
            +
            - CHANNEL_DELETE
         
     | 
| 
      
 67 
     | 
    
         
            +
            - CHANNEL_PINS_UPDATE
         
     | 
| 
      
 68 
     | 
    
         
            +
            - MESSAGE_CREATE
         
     | 
| 
      
 69 
     | 
    
         
            +
            - MESSAGE_UPDATE
         
     | 
| 
      
 70 
     | 
    
         
            +
            - MESSAGE_DELETE
         
     | 
| 
      
 71 
     | 
    
         
            +
            - MESSAGE_DELETE_BULK
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            This feature is still experimental, as it is still unclear how some interactions within the library behave when denied previously expected events. This support will improve over time. If you want more information on intents you can read [the official documentation](https://discord.com/developers/docs/topics/gateway#gateway-intents) as well as the documentation for `Discordrb::INTENTS` and `Discordrb::Bot#initialize`.
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            ### Added
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            - `Bot#parse_mentions`, which extracts *all* mentions found in a string ([#526](https://github.com/discordrb/discordrb/pull/526), thanks @SanksTheYokai)
         
     | 
| 
      
 78 
     | 
    
         
            +
            - Issue and pull request templates ([#585](https://github.com/discordrb/discordrb/pull/585))
         
     | 
| 
      
 79 
     | 
    
         
            +
            - `Server#bot` method for obtaining your bot's own `Member` on a particular server ([#597](https://github.com/discordrb/discordrb/pull/597))
         
     | 
| 
      
 80 
     | 
    
         
            +
            - `Attachment#spoiler?`, to check if an attachment is a spoiler or not ([#603](https://github.com/discordrb/discordrb/pull/603), thanks @swarley)
         
     | 
| 
      
 81 
     | 
    
         
            +
            - Methods on `Server` to manage the server's emoji ([#595](https://github.com/discordrb/discordrb/pull/595), thanks @swarley)
         
     | 
| 
      
 82 
     | 
    
         
            +
            - `Paginator` utility class for wrapping paginated endpoints ([#579](https://github.com/discordrb/discordrb/pull/579))
         
     | 
| 
      
 83 
     | 
    
         
            +
            - `EventContainer#message_update`, which is fired whenever a message is updated, either by Discord or the user ([#612](https://github.com/discordrb/discordrb/pull/612), thanks @swarley)
         
     | 
| 
      
 84 
     | 
    
         
            +
            - `Message#server` ([#614](https://github.com/discordrb/discordrb/pull/614), thanks @swarley)
         
     | 
| 
      
 85 
     | 
    
         
            +
            - `Channel#news?`, `Channel#store?` ([#618](https://github.com/discordrb/discordrb/pull/618), thanks @swarley)
         
     | 
| 
      
 86 
     | 
    
         
            +
            - `Server#bot_members`, `Server#non_bot_members` ([#626](https://github.com/discordrb/discordrb/pull/626), thanks @flutterflies)
         
     | 
| 
      
 87 
     | 
    
         
            +
            - `API.get_gateway_bot` ([#632](https://github.com/discordrb/discordrb/pull/632))
         
     | 
| 
      
 88 
     | 
    
         
            +
            - `Channel#create_webhook` ([#637](https://github.com/discordrb/discordrb/pull/637), thanks @Chew)
         
     | 
| 
      
 89 
     | 
    
         
            +
            - `User#dnd?` and documentation for other user status methods ([#679](https://github.com/discordrb/discordrb/pull/679), thanks @kaine119)
         
     | 
| 
      
 90 
     | 
    
         
            +
            - `Message#link`, `Channel#link`, `Server#link` ([commit](https://github.com/shardlab/discordrb/commit/44f93948a812e06b439968c6b072c0d9b749a842), thanks @z64)
         
     | 
| 
      
 91 
     | 
    
         
            +
            - `ReactionEvent#message_id` and `message` option for `ReactionEventHandler` ([#728](https://github.com/discordrb/discordrb/pull/728), thanks @swarley)
         
     | 
| 
      
 92 
     | 
    
         
            +
            - `intents` option for `Bot#initialize`, `INTENTS`, and `ALL_INTENTS` for experimental intents support ([#698](https://github.com/discordrb/discordrb/pull/698), thanks @swarley)
         
     | 
| 
      
 93 
     | 
    
         
            +
            - `reason` positional arguments for various API methods, support for new audit log events ([#682](https://github.com/discordrb/discordrb/pull/682), thanks @swarley)
         
     | 
| 
      
 94 
     | 
    
         
            +
            - Support for `attachment://` procotol linking in `API::Channel.create_message` and methods that utilize it (`Bot#send_message`, `Channel#send_message`, `Channel#send_temporary_message`, `Channel#send_embed`, `Respondable#send_message`, `Respondable#send_embed`) ([#735](https://github.com/discordrb/discordrb/pull/735), thanks @swarley)
         
     | 
| 
      
 95 
     | 
    
         
            +
            - `AllowedMentions`, and `allowed_mentions` positional arguments to `API::Channel.create_message`, `Bot#send_message`, `Bot#send_temporary_message`, `Channel#send_message`, `Channel#send_temporary_message`, `Channel#send_embed`, `Respondable#send_message`, `Respondable#send_embed`, and `Respondable#send_temporary_message` ([#708](https://github.com/discordrb/discordrb/pull/708), thanks @swarley)
         
     | 
| 
      
 96 
     | 
    
         
            +
            - `with_counts` optional positional argument to `API::Server.resolve` ([#709](https://github.com/discordrb/discordrb/pull/709), thanks @swarley)
         
     | 
| 
      
 97 
     | 
    
         
            +
            - Expose full options to `Bot#send_temporary_message` and `Respondable#send_temporary_message` ([commit](https://github.com/shardlab/discordrb/commit/d20203211603cd4c06212d99e733bf5f5b3c8f0b), thanks @Birdie0)
         
     | 
| 
      
 98 
     | 
    
         
            +
            - `User#client_status`, `PresenceEvent#client_status`, and `client_status` option for `EventContainer#presence` ([#736](https://github.com/discordrb/discordrb/pull/736), thanks @swarley)
         
     | 
| 
      
 99 
     | 
    
         
            +
            - `VoiceServerUpdateEvent`, and `EventContainer#voice_server_update` ([#743](https://github.com/discordrb/discordrb/pull/743), thanks @swarley)
         
     | 
| 
      
 100 
     | 
    
         
            +
            - Invite events, `InviteCreateEvent`, `InviteDeleteEvent`, `EventContainer#invite_create`, `EventContainer#invite_delete` and `Server#splash_hash` ([#744](https://github.com/discordrb/discordrb/pull/744), thanks @swarley)
         
     | 
| 
      
 101 
     | 
    
         
            +
            - `Message#reply!`, `Message#reply?`, `Message#referenced_message` for inline reply support ([#3](https://github.com/shardlab/discordrb/pull/3), thanks @swarley)
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
            ### Changed
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
            - Drop support for Ruby 2.3 (EOL) ([#583](https://github.com/discordrb/discordrb/pull/583), thanks @PanisSupraOmnia)
         
     | 
| 
      
 106 
     | 
    
         
            +
            - **(breaking change)** Upgraded minimum Ruby version to 2.3.7, and upgraded Rubocop to 0.60.0. This additionally changes the name of some public constants. ([#487](https://github.com/discordrb/discordrb/pull/487), thanks @PanisSupraOmnia)
         
     | 
| 
      
 107 
     | 
    
         
            +
            - Dependencies for `rbnacl`, `rake`, and `rspec` have been updated ([#538](https://github.com/discordrb/discordrb/pull/538), thanks @PanisSupraOmnia)
         
     | 
| 
      
 108 
     | 
    
         
            +
            - The monolithic `data.rb` file has been split into multiple files for easier development ([#482](https://github.com/discordrb/discordrb/pull/482))
         
     | 
| 
      
 109 
     | 
    
         
            +
            - Loosened `bundler` development dependency to allow use of `bundler` 1.x and 2.x ([#591](https://github.com/discordrb/discordrb/pull/591), thanks @PanisSupraOmnia)
         
     | 
| 
      
 110 
     | 
    
         
            +
            - `API::Server.create_channel` and `Server#create_channel` now accepts `position` ([#592](https://github.com/discordrb/discordrb/pull/592), thanks @swarley)
         
     | 
| 
      
 111 
     | 
    
         
            +
            - `Bot.new` will now raise a more helpful exception when the passed token string is empty or nil ([#599](https://github.com/discordrb/discordrb/pull/599))
         
     | 
| 
      
 112 
     | 
    
         
            +
            - `compress_mode` in `Bot.new` now defaults to `:large` instead of `:stream` ([#601](https://github.com/discordrb/discordrb/pull/601))
         
     | 
| 
      
 113 
     | 
    
         
            +
            - `send_file` methods now accept `filename` to rename a file when uploading to Discord ([#605](https://github.com/discordrb/discordrb/pull/605), thanks @swarley)
         
     | 
| 
      
 114 
     | 
    
         
            +
            - Emoji related `API` methods now accept arguments to change an emoji's role whitelist ([#595](https://github.com/discordrb/discordrb/pull/595), thanks @swarley)
         
     | 
| 
      
 115 
     | 
    
         
            +
            - `send_file` API now accepts a `spoiler` kwarg to send the file as a spoiler ([#606](https://github.com/discordrb/discordrb/pull/606), thanks @swarley)
         
     | 
| 
      
 116 
     | 
    
         
            +
            - Clarified use of `API.bot_name=` ([#622](https://github.com/discordrb/discordrb/pull/622), thanks @Daniel-Worrall)
         
     | 
| 
      
 117 
     | 
    
         
            +
            - `Message#reacted_with` can now return all users who reacted with an emoji, instead of just the first 25 ([#615](https://github.com/discordrb/discordrb/pull/615), thanks @swarley)
         
     | 
| 
      
 118 
     | 
    
         
            +
            - `Server#create_channel` can create store and news channels, if you have access to do so ([#618](https://github.com/discordrb/discordrb/pull/618), thanks @swarley)
         
     | 
| 
      
 119 
     | 
    
         
            +
            - Typestrings for API that accepts discord IDs is now consistently represented as `String, Integer` ([#616](https://github.com/discordrb/discordrb/pull/616), thanks @swarley)
         
     | 
| 
      
 120 
     | 
    
         
            +
            - When a command is executed with an invalid number of arguments, the error response is sent as a single message ([#627](https://github.com/discordrb/discordrb/pull/627))
         
     | 
| 
      
 121 
     | 
    
         
            +
            - The `#split_send` utility method returns `nil`, to avoid the case where the return value is captured in the implicit return message ([#629](https://github.com/discordrb/discordrb/pull/629), thanks @captainSV)
         
     | 
| 
      
 122 
     | 
    
         
            +
            - Give up reconnecting after receiving a fatal close code ([#633](https://github.com/discordrb/discordrb/pull/633))
         
     | 
| 
      
 123 
     | 
    
         
            +
            - Misc upgrades to RuboCop v0.68 ([#624](https://github.com/discordrb/discordrb/pull/624), thanks @PanisSupraOmnia)
         
     | 
| 
      
 124 
     | 
    
         
            +
            - `await!` methods now accept a block to test for matching event conditions ([#635](https://github.com/discordrb/discordrb/pull/635), thanks @z64)
         
     | 
| 
      
 125 
     | 
    
         
            +
            - Dependency updates for RuboCop v0.74, redcarpet, and simplecov ([#636](https://github.com/discordrb/discordrb/pull/636), thanks @PanisSupraOmnia)
         
     | 
| 
      
 126 
     | 
    
         
            +
            - Update voice logic to connect to the IP address from READY ([#644](https://github.com/discordrb/discordrb/pull/644), thanks @swarley)
         
     | 
| 
      
 127 
     | 
    
         
            +
            - Refactored use of enumerable code in `Discordrb.split_message` ([#646](https://github.com/discordrb/discordrb/pull/646), thanks @piharpi)
         
     | 
| 
      
 128 
     | 
    
         
            +
            - **(deprecated)** `no_sync` argument in `Bot#stop` is now considered deprecated as part of a refactor that removes Ruby 2.3 compatibility ([#652](https://github.com/discordrb/discordrb/pull/652), thanks @PanisSupraOmnia)
         
     | 
| 
      
 129 
     | 
    
         
            +
            - Return `rest-client` dependency to `>= 2.0.0` since `2.1.0` is now released ([#654](https://github.com/discordrb/discordrb/pull/654), thanks @ali-l)
         
     | 
| 
      
 130 
     | 
    
         
            +
            - Added Bit for "Streaming" permission ([#660](https://github.com/discordrb/discordrb/pull/660), thanks @NCPlayz)
         
     | 
| 
      
 131 
     | 
    
         
            +
            - Methods for Nitro boosting related information ([#638](https://github.com/discordrb/discordrb/pull/638), thanks @Chew)
         
     | 
| 
      
 132 
     | 
    
         
            +
            - `ServerDeleteEvent#server` now returns an `Integer` ([commit](https://github.com/discordrb/discordrb/commit/bb457fe981d2b997b704ad85008ec3b185b046e8), thanks @z64)
         
     | 
| 
      
 133 
     | 
    
         
            +
            - User activites are now represented by `ActivitySet`, from `User#activities` ([#677](https://github.com/discordrb/discordrb/pull/677), thanks @swarley)
         
     | 
| 
      
 134 
     | 
    
         
            +
            - **(deprecated)** `User#game`, `User#stream_type`, and `User#stream_url` are considered deprecated in favor of `ActivitySet#games` and `ActivitySet#streaming` as activities are no longer considered to be singular. ([#677](https://github.com/discordrb/discordrb/pull/677), thanks @swarley)
         
     | 
| 
      
 135 
     | 
    
         
            +
            - Non CDN links now use the updated domain name `https://discord.com` ([#720](https://github.com/discordrb/discordrb/pull/720), thanks @swarley)
         
     | 
| 
      
 136 
     | 
    
         
            +
            - Additional fields are included in `Role#inspect` ([#731](https://github.com/discordrb/discordrb/pull/731), thanks @IotaSpencer)
         
     | 
| 
      
 137 
     | 
    
         
            +
            - `Invite#server` and `Invite#channel` can both return partial or full objects depending on the data source ([#744](https://github.com/discordrb/discordrb/pull/744), thanks @swarley)
         
     | 
| 
      
 138 
     | 
    
         
            +
            - Members now have the `@everyone` role ([#739](https://github.com/discordrb/discordrb/pull/739), thanks @kdance21)
         
     | 
| 
      
 139 
     | 
    
         
            +
            - Add `message_reference` as an optional positional argument to the following methods. `API::Channel.create_message`, `Bot#send_message`, `Channel#send_message`, `Channel#send_temporary_message`, `Channel#send_embed`, `Events::MessageEvent#send_message`, and `Events::MessageEvent#send_embed` ([#3](https://github.com/shardlab/discordrb/pull/3), thanks @swarley)
         
     | 
| 
      
 140 
     | 
    
         
            +
            - **(deprecated)** `Message#reply` has been deprecated in favor of `Message#respond`, and the functionality will be replaced with that of `reply!` in 4.0 ([#3](https://github.com/shardlab/discordrb/pull/3), thanks @swarley)
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
            ### Fixed
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
            - Permission calculation when the internal sorting of roles is unreliable ([#609](https://github.com/discordrb/discordrb/pull/609))
         
     | 
| 
      
 145 
     | 
    
         
            +
            - `DisconnectEvent` is now raised when a gateway close frame is handled ([#611](https://github.com/discordrb/discordrb/pull/611), thanks @swarley)
         
     | 
| 
      
 146 
     | 
    
         
            +
            - A cached `Channel` is no longer assumed to be NSFW if its name starts with `nsfw` ([#617](https://github.com/discordrb/discordrb/pull/617), thanks @swarley)
         
     | 
| 
      
 147 
     | 
    
         
            +
            - **(breaking change)** `Message#reactions` is changed to return an Array instead of a hash, fixing reactions with the same `name` value from being discarded (#[593](https://github.com/discordrb/discordrb/pull/596))
         
     | 
| 
      
 148 
     | 
    
         
            +
            - `Channel#nsfw=` correctly forwards updated value to the API ([#628](https://github.com/discordrb/discordrb/pull/628))
         
     | 
| 
      
 149 
     | 
    
         
            +
            - `Emoji#==` works correctly for unicode emoji ([#590](https://github.com/discordrb/discordrb/pull/590), thanks @soukouki)
         
     | 
| 
      
 150 
     | 
    
         
            +
            - Attribute matching for voice state update events ([#625](https://github.com/discordrb/discordrb/pull/625), thanks @swarley) 
         
     | 
| 
      
 151 
     | 
    
         
            +
            - `Emoji#to_reaction` works correctly for unicode emoji ([#642](https://github.com/discordrb/discordrb/pull/642), thanks @z64)
         
     | 
| 
      
 152 
     | 
    
         
            +
            - `Server#add_member_using_token` returns `nil` when user is already a member ([#643](https://github.com/discordrb/discordrb/pull/643), thanks @swarley)
         
     | 
| 
      
 153 
     | 
    
         
            +
            - `CommandBot`'s `Integer` parser interprets all integers as base 10 ([#656](https://github.com/discordrb/discordrb/pull/656), thanks @joshleblanc)
         
     | 
| 
      
 154 
     | 
    
         
            +
            - Broken reference link in `CommandBot#initialize` documentation ([#647](https://github.com/discordrb/discordrb/pull/647), thanks @Daniel-Worrall)
         
     | 
| 
      
 155 
     | 
    
         
            +
            - Return the correct value for `Message#reactions?` ([#729](https://github.com/discordrb/discordrb/pull/729), thanks @swarley)
         
     | 
| 
      
 156 
     | 
    
         
            +
            - Gateway closes with a 4000 code on `RECONNECT`, preserving the session ([#727](https://github.com/discordrb/discordrb/pull/727), thanks @swarley)
         
     | 
| 
      
 157 
     | 
    
         
            +
            - `Emoji#mention` works correctly for unicode emojis ([#715](https://github.com/discordrb/discordrb/pull/715), thanks @swarley)
         
     | 
| 
      
 158 
     | 
    
         
            +
            - Voice now uses gateway v4 ([#648](https://github.com/discordrb/discordrb/pull/648), thanks @swarley)
         
     | 
| 
      
 159 
     | 
    
         
            +
            - VoiceBot now sends a `KILL` signal instead of `TERM` on Windows hosts when ending the ffmpeg process. ([#732](https://github.com/discordrb/discordrb/pull/732), thanks @swarley)
         
     | 
| 
      
 160 
     | 
    
         
            +
            - `Message#emoji` returns more reliably when used with other mention types ([#724](https://github.com/discordrb/discordrb/pull/724), thanks @omnilord)
         
     | 
| 
      
 161 
     | 
    
         
            +
            - Permission calculation now properly considers overwrites ([#712](https://github.com/discordrb/discordrb/pull/712), thanks @swarley)
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
            ### Removed
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
            - Removed dependency on `rbnacl` in favor of our own FFI bindings ([#641](https://github.com/discordrb/discordrb/pull/641), thanks @z64)
         
     | 
| 
       9 
166 
     | 
    
         | 
| 
       10 
167 
     | 
    
         
             
            ## [3.3.0] - 2018-10-27
         
     | 
| 
       11 
     | 
    
         
            -
            [3.3.0]: https://github.com/ 
     | 
| 
      
 168 
     | 
    
         
            +
            [3.3.0]: https://github.com/discordrb/discordrb/releases/tag/v3.3.0
         
     | 
| 
       12 
169 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 170 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.2.1...v3.3.0)
         
     | 
| 
       14 
171 
     | 
    
         | 
| 
       15 
172 
     | 
    
         | 
| 
       16 
173 
     | 
    
         
             
            ### Summary
         
     | 
| 
         @@ -33,7 +190,7 @@ Since there is a lot here, here are highlights of the more notable changes in th 
     | 
|
| 
       33 
190 
     | 
    
         | 
| 
       34 
191 
     | 
    
         
             
            - There are now two methods of creating "awaits" in discordrb. The new style is a blocking (synchronous) method that
         
     | 
| 
       35 
192 
     | 
    
         
             
              uses threads and regular event handlers in the background. The new methods are all named with a bang (`!`),
         
     | 
| 
       36 
     | 
    
         
            -
              i.e. `user.await!`, `message.await!`, and simply return the raised event. This system should be less confusing  
     | 
| 
      
 193 
     | 
    
         
            +
              i.e. `user.await!`, `message.await!`, and simply return the raised event. This system should be less confusing than
         
     | 
| 
       37 
194 
     | 
    
         
             
              the current asynchronous one. These blocking awaits no longer have an identifying key and only accept the event
         
     | 
| 
       38 
195 
     | 
    
         
             
              attributes as an argument. There is also a special reserved attribute called `timeout` that will stop waiting for
         
     | 
| 
       39 
196 
     | 
    
         
             
              an event and return `nil` if the given number of seconds has passed. Eventually this new system of awaits will
         
     | 
| 
         @@ -60,178 +217,178 @@ Thank you to all of our contributors! 
     | 
|
| 
       60 
217 
     | 
    
         | 
| 
       61 
218 
     | 
    
         
             
            ### Added
         
     | 
| 
       62 
219 
     | 
    
         | 
| 
       63 
     | 
    
         
            -
            - API methods to add and remove single member roles ([#310](https://github.com/ 
     | 
| 
       64 
     | 
    
         
            -
            - **(breaking change)** API methods and abstractions for listing available voice regions ([#311](https://github.com/ 
     | 
| 
       65 
     | 
    
         
            -
            - `Server` methods to prune members and to get the number of members available for pruning ([#315](https://github.com/ 
     | 
| 
       66 
     | 
    
         
            -
            - Methods for filtering the kinds of overwrites present on a channel ([#321](https://github.com/ 
     | 
| 
       67 
     | 
    
         
            -
            - `Channel#default_channel?`, for checking if a channel is the default channel of a server ([#320](https://github.com/ 
     | 
| 
      
 220 
     | 
    
         
            +
            - API methods to add and remove single member roles ([#310](https://github.com/discordrb/discordrb/pull/310))
         
     | 
| 
      
 221 
     | 
    
         
            +
            - **(breaking change)** API methods and abstractions for listing available voice regions ([#311](https://github.com/discordrb/discordrb/pull/311))
         
     | 
| 
      
 222 
     | 
    
         
            +
            - `Server` methods to prune members and to get the number of members available for pruning ([#315](https://github.com/discordrb/discordrb/pull/315))
         
     | 
| 
      
 223 
     | 
    
         
            +
            - Methods for filtering the kinds of overwrites present on a channel ([#321](https://github.com/discordrb/discordrb/pull/321))
         
     | 
| 
      
 224 
     | 
    
         
            +
            - `Channel#default_channel?`, for checking if a channel is the default channel of a server ([#320](https://github.com/discordrb/discordrb/pull/320), thanks @Reaver01)
         
     | 
| 
       68 
225 
     | 
    
         
             
            - Method for returning a `Server`'s `@everyone` role
         
     | 
| 
       69 
     | 
    
         
            -
            - Reactions can now be serialized with `#to_s` to be used in `Message#react` more easily ([#342](https://github.com/ 
     | 
| 
       70 
     | 
    
         
            -
            - Additional objects and attributes for parsing embeds on messages ([#344](https://github.com/ 
     | 
| 
       71 
     | 
    
         
            -
            - Methods for finding a members highest role, the role that is hoisting the member, or giving the member color ([#335](https://github.com/ 
     | 
| 
       72 
     | 
    
         
            -
            - API support for managing webhooks ([#356](https://github.com/ 
     | 
| 
       73 
     | 
    
         
            -
            - Support for reading and managing a channel's `nsfw` property ([#380](https://github.com/ 
     | 
| 
       74 
     | 
    
         
            -
            - The `:administrator` permissions value is aliased as `:administrate` ([#322](https://github.com/ 
     | 
| 
       75 
     | 
    
         
            -
            - Class methods on `Permissions` for easily building permissions bits values ([#322](https://github.com/ 
     | 
| 
      
 226 
     | 
    
         
            +
            - Reactions can now be serialized with `#to_s` to be used in `Message#react` more easily ([#342](https://github.com/discordrb/discordrb/pull/342))
         
     | 
| 
      
 227 
     | 
    
         
            +
            - Additional objects and attributes for parsing embeds on messages ([#344](https://github.com/discordrb/discordrb/pull/344), thanks @mattantonelli)
         
     | 
| 
      
 228 
     | 
    
         
            +
            - Methods for finding a members highest role, the role that is hoisting the member, or giving the member color ([#335](https://github.com/discordrb/discordrb/pull/335), thanks @Snazzah)
         
     | 
| 
      
 229 
     | 
    
         
            +
            - API support for managing webhooks ([#356](https://github.com/discordrb/discordrb/pull/356), thanks @Daniel-Worrall)
         
     | 
| 
      
 230 
     | 
    
         
            +
            - Support for reading and managing a channel's `nsfw` property ([#380](https://github.com/discordrb/discordrb/pull/380))
         
     | 
| 
      
 231 
     | 
    
         
            +
            - The `:administrator` permissions value is aliased as `:administrate` ([#322](https://github.com/discordrb/discordrb/pull/322))
         
     | 
| 
      
 232 
     | 
    
         
            +
            - Class methods on `Permissions` for easily building permissions bits values ([#322](https://github.com/discordrb/discordrb/pull/322))
         
     | 
| 
       76 
233 
     | 
    
         
             
            - `Gateway#send_packet` and `Gateway#send_raw` methods to send custom data payloads to the gateway
         
     | 
| 
       77 
234 
     | 
    
         
             
            - Methods for reading `icon_url` and `proxy_icon_url` in `EmbedAuthor`
         
     | 
| 
       78 
     | 
    
         
            -
            - Methods for obtaining a server and channels invites ([#394](https://github.com/ 
     | 
| 
       79 
     | 
    
         
            -
            - Example of using awaits ([#370](https://github.com/ 
     | 
| 
       80 
     | 
    
         
            -
            - Methods on `Member` for kicking and banning ([#404](https://github.com/ 
     | 
| 
       81 
     | 
    
         
            -
            - API method and abstraction for adding members to guilds with OAuth2 tokens ([#413](https://github.com/ 
     | 
| 
       82 
     | 
    
         
            -
            - Example of using a prefix proc ([#411](https://github.com/ 
     | 
| 
       83 
     | 
    
         
            -
            - **(breaking change)** Methods for managing a server's system channel ([#437](https://github.com/ 
     | 
| 
       84 
     | 
    
         
            -
            - **(breaking change)** Additional error code constants ([#419](https://github.com/ 
     | 
| 
       85 
     | 
    
         
            -
            - Commands can be created with a `:rescue` argument, to provide a message or callback when an unhandled exception is raised when executing the command ([#360](https://github.com/ 
     | 
| 
       86 
     | 
    
         
            -
            - **(breaking change)** Additional `Server` properties for verification levels, default message notification levels, and explicit content filter settings ([#414](https://github.com/ 
     | 
| 
       87 
     | 
    
         
            -
            - **(breaking change)** `nonce` is accepted in `API::Channel.create_message` ([#414](https://github.com/ 
     | 
| 
       88 
     | 
    
         
            -
            - Setters for new status options (`Bot#listening=`, `Bot#watching=`) ([#432](https://github.com/ 
     | 
| 
       89 
     | 
    
         
            -
            - Documentation examples for sending a file ([#409](https://github.com/ 
     | 
| 
       90 
     | 
    
         
            -
            - Respondable implements `#send_embed` ([#420](https://github.com/ 
     | 
| 
      
 235 
     | 
    
         
            +
            - Methods for obtaining a server and channels invites ([#394](https://github.com/discordrb/discordrb/pull/394))
         
     | 
| 
      
 236 
     | 
    
         
            +
            - Example of using awaits ([#370](https://github.com/discordrb/discordrb/pull/370))
         
     | 
| 
      
 237 
     | 
    
         
            +
            - Methods on `Member` for kicking and banning ([#404](https://github.com/discordrb/discordrb/pull/404))
         
     | 
| 
      
 238 
     | 
    
         
            +
            - API method and abstraction for adding members to guilds with OAuth2 tokens ([#413](https://github.com/discordrb/discordrb/pull/413))
         
     | 
| 
      
 239 
     | 
    
         
            +
            - Example of using a prefix proc ([#411](https://github.com/discordrb/discordrb/pull/411))
         
     | 
| 
      
 240 
     | 
    
         
            +
            - **(breaking change)** Methods for managing a server's system channel ([#437](https://github.com/discordrb/discordrb/pull/437), thanks @ldelelis)
         
     | 
| 
      
 241 
     | 
    
         
            +
            - **(breaking change)** Additional error code constants ([#419](https://github.com/discordrb/discordrb/pull/419), thanks @LikeLakers2)
         
     | 
| 
      
 242 
     | 
    
         
            +
            - Commands can be created with a `:rescue` argument, to provide a message or callback when an unhandled exception is raised when executing the command ([#360](https://github.com/discordrb/discordrb/pull/360))
         
     | 
| 
      
 243 
     | 
    
         
            +
            - **(breaking change)** Additional `Server` properties for verification levels, default message notification levels, and explicit content filter settings ([#414](https://github.com/discordrb/discordrb/pull/414), thanks @PixeLInc)
         
     | 
| 
      
 244 
     | 
    
         
            +
            - **(breaking change)** `nonce` is accepted in `API::Channel.create_message` ([#414](https://github.com/discordrb/discordrb/pull/414), thanks @PixeLInc)
         
     | 
| 
      
 245 
     | 
    
         
            +
            - Setters for new status options (`Bot#listening=`, `Bot#watching=`) ([#432](https://github.com/discordrb/discordrb/pull/432), thanks @PixeLInc)
         
     | 
| 
      
 246 
     | 
    
         
            +
            - Documentation examples for sending a file ([#409](https://github.com/discordrb/discordrb/pull/409))
         
     | 
| 
      
 247 
     | 
    
         
            +
            - Respondable implements `#send_embed` ([#420](https://github.com/discordrb/discordrb/pull/420))
         
     | 
| 
       91 
248 
     | 
    
         
             
            - `Invite` now supplies `max_age` and `created_at`
         
     | 
| 
       92 
     | 
    
         
            -
            - `Invite` now supplies `member_count` and `online_member_count` ([#454](https://github.com/ 
     | 
| 
       93 
     | 
    
         
            -
            - `Server` methods for managing a server's embed (widget) settings ([#435](https://github.com/ 
     | 
| 
       94 
     | 
    
         
            -
            - **(breaking change)** Support for category channels in `Server` and `Channel` ([#415](https://github.com/ 
     | 
| 
       95 
     | 
    
         
            -
            - `CommandBot` and commands channel whitelist can now be modified after creation ([#446](https://github.com/ 
     | 
| 
       96 
     | 
    
         
            -
            - A `Role`'s `position` can now be sorted relative to other roles ([#445](https://github.com/ 
     | 
| 
       97 
     | 
    
         
            -
            - The `return` keyword inside of commands can be used to return content to Discord ([#462](https://github.com/ 
     | 
| 
       98 
     | 
    
         
            -
            - `Emoji` now supplies `animated` ([#464](https://github.com/ 
     | 
| 
       99 
     | 
    
         
            -
            - Additional instructions for installation of Ruby's devkit for Ruby 2.3+ ([#468](https://github.com/ 
     | 
| 
       100 
     | 
    
         
            -
            - `Server` API for retrieving a server's audit logs ([#353](https://github.com/ 
     | 
| 
       101 
     | 
    
         
            -
            - `EventContainer` methods for server role create, delete, and update events ([#494](https://github.com/ 
     | 
| 
       102 
     | 
    
         
            -
            - `PlayingEvent` now returns `details` ([#486](https://github.com/ 
     | 
| 
       103 
     | 
    
         
            -
            - `Role` now supplies `server` ([#505](https://github.com/ 
     | 
| 
       104 
     | 
    
         
            -
            - Documentation for the `discordrb-webhooks` gem in `README.md` ([#460](https://github.com/ 
     | 
| 
       105 
     | 
    
         
            -
            - A new, synchronous awaits system available via `#await!` ([#499](https://github.com/ 
     | 
| 
       106 
     | 
    
         
            -
            - `Channel#sort_after`, for moving a channel around a server within categories easily ([#497](https://github.com/ 
     | 
| 
       107 
     | 
    
         
            -
            - The gemspec now includes a link to the changelog ([#515](https://github.com/ 
     | 
| 
       108 
     | 
    
         
            -
            - Commands can now be restricted by either `allowed_roles` or `required_roles` ([#469](https://github.com/ 
     | 
| 
       109 
     | 
    
         
            -
            - `Bot#parse_mention` parses `Channel` mentions ([#525](https://github.com/ 
     | 
| 
       110 
     | 
    
         
            -
            - Support for Discord's `zlib-stream` gateway compression, as well as options to configure the compression mode in `Bot#initialize` ([#527](https://github.com/ 
     | 
| 
       111 
     | 
    
         
            -
            - "Priority Speaker" permission bit ([#530](https://github.com/ 
     | 
| 
       112 
     | 
    
         
            -
            - Implemented `aliases` attribute in commands, for an improved alternative to "command copying" by passing an array to the command name ([#524](https://github.com/ 
     | 
| 
       113 
     | 
    
         
            -
            - **(breaking change)** Methods for managing a `Channel`'s slowmode settings ([#573](https://github.com/ 
     | 
| 
      
 249 
     | 
    
         
            +
            - `Invite` now supplies `member_count` and `online_member_count` ([#454](https://github.com/discordrb/discordrb/pull/454), thanks @Snazzah)
         
     | 
| 
      
 250 
     | 
    
         
            +
            - `Server` methods for managing a server's embed (widget) settings ([#435](https://github.com/discordrb/discordrb/pull/435))
         
     | 
| 
      
 251 
     | 
    
         
            +
            - **(breaking change)** Support for category channels in `Server` and `Channel` ([#415](https://github.com/discordrb/discordrb/pull/415), [#477](https://github.com/discordrb/discordrb/pull/477), thanks @omnilord)
         
     | 
| 
      
 252 
     | 
    
         
            +
            - `CommandBot` and commands channel whitelist can now be modified after creation ([#446](https://github.com/discordrb/discordrb/pull/446), thanks @omnilord)
         
     | 
| 
      
 253 
     | 
    
         
            +
            - A `Role`'s `position` can now be sorted relative to other roles ([#445](https://github.com/discordrb/discordrb/pull/445), thanks @mattantonelli)
         
     | 
| 
      
 254 
     | 
    
         
            +
            - The `return` keyword inside of commands can be used to return content to Discord ([#462](https://github.com/discordrb/discordrb/pull/462), thanks @TrenchFroast)
         
     | 
| 
      
 255 
     | 
    
         
            +
            - `Emoji` now supplies `animated` ([#464](https://github.com/discordrb/discordrb/pull/464), thanks @PixeLInc)
         
     | 
| 
      
 256 
     | 
    
         
            +
            - Additional instructions for installation of Ruby's devkit for Ruby 2.3+ ([#468](https://github.com/discordrb/discordrb/pull/468), thanks @oct2pus)
         
     | 
| 
      
 257 
     | 
    
         
            +
            - `Server` API for retrieving a server's audit logs ([#353](https://github.com/discordrb/discordrb/pull/353), thanks @Snazzah)
         
     | 
| 
      
 258 
     | 
    
         
            +
            - `EventContainer` methods for server role create, delete, and update events ([#494](https://github.com/discordrb/discordrb/pull/494), thanks @Daniel-Worrall)
         
     | 
| 
      
 259 
     | 
    
         
            +
            - `PlayingEvent` now returns `details` ([#486](https://github.com/discordrb/discordrb/pull/486), thanks @xTVaser)
         
     | 
| 
      
 260 
     | 
    
         
            +
            - `Role` now supplies `server` ([#505](https://github.com/discordrb/discordrb/pull/505), thanks @micke)
         
     | 
| 
      
 261 
     | 
    
         
            +
            - Documentation for the `discordrb-webhooks` gem in `README.md` ([#460](https://github.com/discordrb/discordrb/pull/460))
         
     | 
| 
      
 262 
     | 
    
         
            +
            - A new, synchronous awaits system available via `#await!` ([#499](https://github.com/discordrb/discordrb/pull/499))
         
     | 
| 
      
 263 
     | 
    
         
            +
            - `Channel#sort_after`, for moving a channel around a server within categories easily ([#497](https://github.com/discordrb/discordrb/pull/497))
         
     | 
| 
      
 264 
     | 
    
         
            +
            - The gemspec now includes a link to the changelog ([#515](https://github.com/discordrb/discordrb/pull/515), thanks @PanisSupraOmnia)
         
     | 
| 
      
 265 
     | 
    
         
            +
            - Commands can now be restricted by either `allowed_roles` or `required_roles` ([#469](https://github.com/discordrb/discordrb/pull/469), thanks @elfenars)
         
     | 
| 
      
 266 
     | 
    
         
            +
            - `Bot#parse_mention` parses `Channel` mentions ([#525](https://github.com/discordrb/discordrb/pull/525), thanks @estherbolik)
         
     | 
| 
      
 267 
     | 
    
         
            +
            - Support for Discord's `zlib-stream` gateway compression, as well as options to configure the compression mode in `Bot#initialize` ([#527](https://github.com/discordrb/discordrb/pull/527), thanks @oct2pus for additional testing)
         
     | 
| 
      
 268 
     | 
    
         
            +
            - "Priority Speaker" permission bit ([#530](https://github.com/discordrb/discordrb/pull/530), thanks @Chewsterchew)
         
     | 
| 
      
 269 
     | 
    
         
            +
            - Implemented `aliases` attribute in commands, for an improved alternative to "command copying" by passing an array to the command name ([#524](https://github.com/discordrb/discordrb/pull/524))
         
     | 
| 
      
 270 
     | 
    
         
            +
            - **(breaking change)** Methods for managing a `Channel`'s slowmode settings ([#573](https://github.com/discordrb/discordrb/pull/573), thanks @badBlackShark)
         
     | 
| 
       114 
271 
     | 
    
         | 
| 
       115 
272 
     | 
    
         
             
            ### Changed
         
     | 
| 
       116 
273 
     | 
    
         | 
| 
       117 
     | 
    
         
            -
            - `Channel#make_invite` now accepts an argument to always return a unique invite code ([#312](https://github.com/ 
     | 
| 
       118 
     | 
    
         
            -
            - More of the API accepts objects that respond to `#resolve_id` ([#313](https://github.com/ 
     | 
| 
       119 
     | 
    
         
            -
            - **(breaking change)** `Channel#history` and `API::Channel.messages` now accepts `around_id` ([#314](https://github.com/ 
     | 
| 
       120 
     | 
    
         
            -
            - **(breaking change)** `API::Server.prune_count` accepts `days` ([#315](https://github.com/ 
     | 
| 
       121 
     | 
    
         
            -
            - **(breaking change)** Methods for creating channels accept additional arguments ([#321](https://github.com/ 
     | 
| 
       122 
     | 
    
         
            -
            - `Channel` overwrite-related API now returns an `Overwrite` object ([#321](https://github.com/ 
     | 
| 
       123 
     | 
    
         
            -
            - **(breaking change)** Creating roles now accepts more parameters ([#323](https://github.com/ 
     | 
| 
      
 274 
     | 
    
         
            +
            - `Channel#make_invite` now accepts an argument to always return a unique invite code ([#312](https://github.com/discordrb/discordrb/pull/312))
         
     | 
| 
      
 275 
     | 
    
         
            +
            - More of the API accepts objects that respond to `#resolve_id` ([#313](https://github.com/discordrb/discordrb/pull/313), [#328](https://github.com/discordrb/discordrb/pull/328), thanks @Likelakers2)
         
     | 
| 
      
 276 
     | 
    
         
            +
            - **(breaking change)** `Channel#history` and `API::Channel.messages` now accepts `around_id` ([#314](https://github.com/discordrb/discordrb/pull/314))
         
     | 
| 
      
 277 
     | 
    
         
            +
            - **(breaking change)** `API::Server.prune_count` accepts `days` ([#315](https://github.com/discordrb/discordrb/pull/315))
         
     | 
| 
      
 278 
     | 
    
         
            +
            - **(breaking change)** Methods for creating channels accept additional arguments ([#321](https://github.com/discordrb/discordrb/pull/321))
         
     | 
| 
      
 279 
     | 
    
         
            +
            - `Channel` overwrite-related API now returns an `Overwrite` object ([#321](https://github.com/discordrb/discordrb/pull/321))
         
     | 
| 
      
 280 
     | 
    
         
            +
            - **(breaking change)** Creating roles now accepts more parameters ([#323](https://github.com/discordrb/discordrb/pull/323), thanks @Reaver01)
         
     | 
| 
       124 
281 
     | 
    
         
             
            - Rate limits are now logged to a `:ratelimit` logging level and can be configured
         
     | 
| 
       125 
     | 
    
         
            -
            - `client_id` in `Bot#initilalize` is now optional, and will be cached automatically by the API when needed ([#337](https://github.com/ 
     | 
| 
       126 
     | 
    
         
            -
            - `Voice::Encoder#encode_file` now accepts options for ffmpeg ([#341](https://github.com/ 
     | 
| 
       127 
     | 
    
         
            -
            - Objects that implement `IDObject` can now be compared using more operators ([#346](https://github.com/ 
     | 
| 
       128 
     | 
    
         
            -
            - Filled in permissions bit for viewing a server's audit log ([#349](https://github.com/ 
     | 
| 
       129 
     | 
    
         
            -
            - https://cdn.discordapp.com is now used as the base URL for CDN resources like avatars and server icons ([#358](https://github.com/ 
     | 
| 
       130 
     | 
    
         
            -
            - Reaction events raised from the bot's actions will respect `parse_self` ([#350](https://github.com/ 
     | 
| 
       131 
     | 
    
         
            -
            - `Webhooks::Embed#initialize` parses its `color`/`colour` argument ([#364](https://github.com/ 
     | 
| 
       132 
     | 
    
         
            -
            - Webhook related events can now be matched on webhook ID ([#363](https://github.com/ 
     | 
| 
       133 
     | 
    
         
            -
            - Discord's default user avatar URLs will now be returned when applicable ([#375](https://github.com/ 
     | 
| 
       134 
     | 
    
         
            -
            - `Cache#find_user` can now find individual users if name and discriminator is given ([#384](https://github.com/ 
     | 
| 
       135 
     | 
    
         
            -
            - `ReactionEvent` provides both `server` and `member`, if possible ([#351](https://github.com/ 
     | 
| 
       136 
     | 
    
         
            -
            - Installation instructions now include guides for installing with Bundler ([#386](https://github.com/ 
     | 
| 
       137 
     | 
    
         
            -
            - **(breaking change)** `default_channel` implementation is updated to reflect Discord changes ([#382](https://github.com/ 
     | 
| 
       138 
     | 
    
         
            -
            - Documentation around the conditions where our API returns `nil` is clarified ([#395](https://github.com/ 
     | 
| 
      
 282 
     | 
    
         
            +
            - `client_id` in `Bot#initilalize` is now optional, and will be cached automatically by the API when needed ([#337](https://github.com/discordrb/discordrb/pull/337))
         
     | 
| 
      
 283 
     | 
    
         
            +
            - `Voice::Encoder#encode_file` now accepts options for ffmpeg ([#341](https://github.com/discordrb/discordrb/pull/341), thanks @oyisre)
         
     | 
| 
      
 284 
     | 
    
         
            +
            - Objects that implement `IDObject` can now be compared using more operators ([#346](https://github.com/discordrb/discordrb/pull/346), thanks @mattantonelli)
         
     | 
| 
      
 285 
     | 
    
         
            +
            - Filled in permissions bit for viewing a server's audit log ([#349](https://github.com/discordrb/discordrb/pull/349), thanks @Daniel-Worrall)
         
     | 
| 
      
 286 
     | 
    
         
            +
            - https://cdn.discordapp.com is now used as the base URL for CDN resources like avatars and server icons ([#358](https://github.com/discordrb/discordrb/pull/358))
         
     | 
| 
      
 287 
     | 
    
         
            +
            - Reaction events raised from the bot's actions will respect `parse_self` ([#350](https://github.com/discordrb/discordrb/pull/350), thanks @Daniel-Worrall)
         
     | 
| 
      
 288 
     | 
    
         
            +
            - `Webhooks::Embed#initialize` parses its `color`/`colour` argument ([#364](https://github.com/discordrb/discordrb/pull/364), thanks @Daniel-Worrall)
         
     | 
| 
      
 289 
     | 
    
         
            +
            - Webhook related events can now be matched on webhook ID ([#363](https://github.com/discordrb/discordrb/pull/363), thanks @Daniel-Worrall)
         
     | 
| 
      
 290 
     | 
    
         
            +
            - Discord's default user avatar URLs will now be returned when applicable ([#375](https://github.com/discordrb/discordrb/pull/375))
         
     | 
| 
      
 291 
     | 
    
         
            +
            - `Cache#find_user` can now find individual users if name and discriminator is given ([#384](https://github.com/discordrb/discordrb/pull/384))
         
     | 
| 
      
 292 
     | 
    
         
            +
            - `ReactionEvent` provides both `server` and `member`, if possible ([#351](https://github.com/discordrb/discordrb/pull/351), thanks @Daniel-Worrall)
         
     | 
| 
      
 293 
     | 
    
         
            +
            - Installation instructions now include guides for installing with Bundler ([#386](https://github.com/discordrb/discordrb/pull/386), [#405](https://github.com/discordrb/discordrb/pull/405), thanks @VxJasonxV and @PixeLInc)
         
     | 
| 
      
 294 
     | 
    
         
            +
            - **(breaking change)** `default_channel` implementation is updated to reflect Discord changes ([#382](https://github.com/discordrb/discordrb/pull/382), [#534](https://github.com/discordrb/discordrb/pull/534))
         
     | 
| 
      
 295 
     | 
    
         
            +
            - Documentation around the conditions where our API returns `nil` is clarified ([#395](https://github.com/discordrb/discordrb/pull/395), thanks @LikeLakers2)
         
     | 
| 
       139 
296 
     | 
    
         
             
            - Whenever possible, we update cached data about a `Server` returned to us from making changes to it
         
     | 
| 
       140 
     | 
    
         
            -
            - **(breaking change)** `Cache#server` now returns `nil` if a server is not found instead of raising an exception ([#424](https://github.com/ 
     | 
| 
       141 
     | 
    
         
            -
            - `Bucket#rate_limited?` now accepts an `increment` value for weighted rate limits ([#427](https://github.com/ 
     | 
| 
       142 
     | 
    
         
            -
            - **(breaking change)** `Server#bans` now returns `Array<ServerBan>`, which contains `reason` data in addition to the user banned ([#404](https://github.com/ 
     | 
| 
       143 
     | 
    
         
            -
            - `Channel#prune` now accepts a block that can be used to filter the messages to be pruned ([#421](https://github.com/ 
     | 
| 
       144 
     | 
    
         
            -
            - WSCS verions message is now only printed when using voice functionality ([#438](https://github.com/ 
     | 
| 
      
 297 
     | 
    
         
            +
            - **(breaking change)** `Cache#server` now returns `nil` if a server is not found instead of raising an exception ([#424](https://github.com/discordrb/discordrb/pull/424), thanks @soukouki)
         
     | 
| 
      
 298 
     | 
    
         
            +
            - `Bucket#rate_limited?` now accepts an `increment` value for weighted rate limits ([#427](https://github.com/discordrb/discordrb/pull/427), thanks @Lavode)
         
     | 
| 
      
 299 
     | 
    
         
            +
            - **(breaking change)** `Server#bans` now returns `Array<ServerBan>`, which contains `reason` data in addition to the user banned ([#404](https://github.com/discordrb/discordrb/pull/404))
         
     | 
| 
      
 300 
     | 
    
         
            +
            - `Channel#prune` now accepts a block that can be used to filter the messages to be pruned ([#421](https://github.com/discordrb/discordrb/pull/421), thanks @snapcase)
         
     | 
| 
      
 301 
     | 
    
         
            +
            - WSCS verions message is now only printed when using voice functionality ([#438](https://github.com/discordrb/discordrb/pull/438), thanks @dreid)
         
     | 
| 
       145 
302 
     | 
    
         
             
            - **(breaking change)** `API::Server.update_channel` is now `API::Server.update_channel_positions`
         
     | 
| 
       146 
     | 
    
         
            -
            - CI is now tested against Ruby 2.3, 2.4, and 2.5 ([#476](https://github.com/ 
     | 
| 
      
 303 
     | 
    
         
            +
            - CI is now tested against Ruby 2.3, 2.4, and 2.5 ([#476](https://github.com/discordrb/discordrb/pull/476), thanks @nicolasleger)
         
     | 
| 
       147 
304 
     | 
    
         
             
            - CI now tests with YARD to validate docstrings
         
     | 
| 
       148 
     | 
    
         
            -
            - Specs for `Channel` are refactored ([#481](https://github.com/ 
     | 
| 
       149 
     | 
    
         
            -
            - Specs are refactored to not use `module` namespaces ([#520](https://github.com/ 
     | 
| 
      
 305 
     | 
    
         
            +
            - Specs for `Channel` are refactored ([#481](https://github.com/discordrb/discordrb/pull/481), thanks @Daniel-Worrall)
         
     | 
| 
      
 306 
     | 
    
         
            +
            - Specs are refactored to not use `module` namespaces ([#520](https://github.com/discordrb/discordrb/pull/520), thanks @Daniel-Worrall)
         
     | 
| 
       150 
307 
     | 
    
         
             
            - `Bot` now logs to `LOGGER.info` when the bot successfully resumes
         
     | 
| 
       151 
     | 
    
         
            -
            - Code climate tooling is updated ([#489](https://github.com/ 
     | 
| 
       152 
     | 
    
         
            -
            - `Bot#parse_mention` will now return an `Emoji` object for a mention of an emoji the bot isn't connected to ([#473](https://github.com/ 
     | 
| 
       153 
     | 
    
         
            -
            - The changelog now follows the "Keep a Changelog" format ([#504](https://github.com/ 
     | 
| 
       154 
     | 
    
         
            -
            - `Bot#run` documentation is adjusted to clarify the use of its async argument ([#521](https://github.com/ 
     | 
| 
       155 
     | 
    
         
            -
            - **(breaking change)** `Bot#join` is renamed to `Bot#accept_invite` ([#521](https://github.com/ 
     | 
| 
       156 
     | 
    
         
            -
            - `Embed#colour=`/`Embed#color=` now accepts instances of `ColourRGB`/`ColorRGB` ([#523](https://github.com/ 
     | 
| 
       157 
     | 
    
         
            -
            - `Gateway` now performs certificate validation, and enforces use of TLSv1.2. If you experience issues (please report them!), you can return to the old codepath by setting `DISCORDRB_SSL_VERIFY_NONE` ([#528](https://github.com/ 
     | 
| 
       158 
     | 
    
         
            -
            - Documentation clarifications around `voice_state_update`, `member_update`, and `server_create` ([#531](https://github.com/ 
     | 
| 
       159 
     | 
    
         
            -
            - URLs listed across the code base now use https, various other cleanups ([#540](https://github.com/ 
     | 
| 
       160 
     | 
    
         
            -
            - Dependency on the `ffi` gem is restricted to `>= 1.9.24` to prevent a security exploit on Windows, per [CVE-2018-1000201](https://nvd.nist.gov/vuln/detail/CVE-2018-1000201) ([#544](https://github.com/ 
     | 
| 
       161 
     | 
    
         
            -
            - Warnings about accessing cached data after server streaming times out are now clarified and printed when accessing relevant methods ([#578](https://github.com/ 
     | 
| 
      
 308 
     | 
    
         
            +
            - Code climate tooling is updated ([#489](https://github.com/discordrb/discordrb/pull/489), thanks @PanisSupraOmnia)
         
     | 
| 
      
 309 
     | 
    
         
            +
            - `Bot#parse_mention` will now return an `Emoji` object for a mention of an emoji the bot isn't connected to ([#473](https://github.com/discordrb/discordrb/pull/473))
         
     | 
| 
      
 310 
     | 
    
         
            +
            - The changelog now follows the "Keep a Changelog" format ([#504](https://github.com/discordrb/discordrb/pull/504), thanks @connorshea)
         
     | 
| 
      
 311 
     | 
    
         
            +
            - `Bot#run` documentation is adjusted to clarify the use of its async argument ([#521](https://github.com/discordrb/discordrb/pull/521))
         
     | 
| 
      
 312 
     | 
    
         
            +
            - **(breaking change)** `Bot#join` is renamed to `Bot#accept_invite` ([#521](https://github.com/discordrb/discordrb/pull/521))
         
     | 
| 
      
 313 
     | 
    
         
            +
            - `Embed#colour=`/`Embed#color=` now accepts instances of `ColourRGB`/`ColorRGB` ([#523](https://github.com/discordrb/discordrb/pull/523))
         
     | 
| 
      
 314 
     | 
    
         
            +
            - `Gateway` now performs certificate validation, and enforces use of TLSv1.2. If you experience issues (please report them!), you can return to the old codepath by setting `DISCORDRB_SSL_VERIFY_NONE` ([#528](https://github.com/discordrb/discordrb/pull/528), thanks @cky)
         
     | 
| 
      
 315 
     | 
    
         
            +
            - Documentation clarifications around `voice_state_update`, `member_update`, and `server_create` ([#531](https://github.com/discordrb/discordrb/pull/531))
         
     | 
| 
      
 316 
     | 
    
         
            +
            - URLs listed across the code base now use https, various other cleanups ([#540](https://github.com/discordrb/discordrb/pull/540), thanks @PanisSupraOmnia)
         
     | 
| 
      
 317 
     | 
    
         
            +
            - Dependency on the `ffi` gem is restricted to `>= 1.9.24` to prevent a security exploit on Windows, per [CVE-2018-1000201](https://nvd.nist.gov/vuln/detail/CVE-2018-1000201) ([#544](https://github.com/discordrb/discordrb/pull/544))
         
     | 
| 
      
 318 
     | 
    
         
            +
            - Warnings about accessing cached data after server streaming times out are now clarified and printed when accessing relevant methods ([#578](https://github.com/discordrb/discordrb/pull/578), thanks @connorshea)
         
     | 
| 
       162 
319 
     | 
    
         | 
| 
       163 
320 
     | 
    
         
             
            ### Deprecated
         
     | 
| 
       164 
321 
     | 
    
         | 
| 
       165 
     | 
    
         
            -
            - The existing awaits system is deprecated in favor of a simpler, synchronous system introduced in [#499](https://github.com/ 
     | 
| 
      
 322 
     | 
    
         
            +
            - The existing awaits system is deprecated in favor of a simpler, synchronous system introduced in [#499](https://github.com/discordrb/discordrb/pull/499) ([#509](https://github.com/discordrb/discordrb/pull/509))
         
     | 
| 
       166 
323 
     | 
    
         | 
| 
       167 
324 
     | 
    
         
             
            ### Removed
         
     | 
| 
       168 
325 
     | 
    
         | 
| 
       169 
     | 
    
         
            -
            - **(breaking change)** Unsupported `mentions` argument in Create Message API ([#420](https://github.com/ 
     | 
| 
      
 326 
     | 
    
         
            +
            - **(breaking change)** Unsupported `mentions` argument in Create Message API ([#420](https://github.com/discordrb/discordrb/pull/420))
         
     | 
| 
       170 
327 
     | 
    
         
             
            - **(breaking change)** `TrueClass` is no longer an alias for `:debug` logging in `Bot#initialize`
         
     | 
| 
       171 
328 
     | 
    
         | 
| 
       172 
329 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       173 
330 
     | 
    
         | 
| 
       174 
     | 
    
         
            -
            - `Errors::MessageTooLong` is now raised correctly ([#325](https://github.com/ 
     | 
| 
       175 
     | 
    
         
            -
            - Certain `Reaction` related events properly inherit `Event` ([#329](https://github.com/ 
     | 
| 
       176 
     | 
    
         
            -
            - Permissions calculation now takes the server's `@everyone` role permissions into consideration (additional work by [#357](https://github.com/ 
     | 
| 
       177 
     | 
    
         
            -
            - `Role#members` had a typo preventing it from working ([#340](https://github.com/ 
     | 
| 
       178 
     | 
    
         
            -
            - `Message#my_reactions` now correctly returns `Array<Reaction>` ([#342](https://github.com/ 
     | 
| 
      
 331 
     | 
    
         
            +
            - `Errors::MessageTooLong` is now raised correctly ([#325](https://github.com/discordrb/discordrb/pull/325), thanks @Daniel-Worrall)
         
     | 
| 
      
 332 
     | 
    
         
            +
            - Certain `Reaction` related events properly inherit `Event` ([#329](https://github.com/discordrb/discordrb/pull/329), thanks @valeth)
         
     | 
| 
      
 333 
     | 
    
         
            +
            - Permissions calculation now takes the server's `@everyone` role permissions into consideration (additional work by [#357](https://github.com/discordrb/discordrb/pull/357), thanks @mattantonelli)
         
     | 
| 
      
 334 
     | 
    
         
            +
            - `Role#members` had a typo preventing it from working ([#340](https://github.com/discordrb/discordrb/pull/340))
         
     | 
| 
      
 335 
     | 
    
         
            +
            - `Message#my_reactions` now correctly returns `Array<Reaction>` ([#342](https://github.com/discordrb/discordrb/pull/342))
         
     | 
| 
       179 
336 
     | 
    
         
             
            - Several internal checks have been added to make bots more resilient to zombie connections
         
     | 
| 
       180 
     | 
    
         
            -
            - Documentation for `TypingEvent` is now more accurate ([#367](https://github.com/ 
     | 
| 
       181 
     | 
    
         
            -
            - Corrected implementation of the `reason` parameter in various API ([#372](https://github.com/ 
     | 
| 
       182 
     | 
    
         
            -
            - `CommandBot`'s advanced functionality properly handles empty strings in certain settings ([#379](https://github.com/ 
     | 
| 
       183 
     | 
    
         
            -
            - Rate limit headers are processed correctly when running into certain API exceptions ([#440](https://github.com/ 
     | 
| 
       184 
     | 
    
         
            -
            - Typos preventing `ArgumentError` from being raised when processing `arg_types` ([#400](https://github.com/ 
     | 
| 
      
 337 
     | 
    
         
            +
            - Documentation for `TypingEvent` is now more accurate ([#367](https://github.com/discordrb/discordrb/pull/367), thanks @Snazzah)
         
     | 
| 
      
 338 
     | 
    
         
            +
            - Corrected implementation of the `reason` parameter in various API ([#372](https://github.com/discordrb/discordrb/pull/372))
         
     | 
| 
      
 339 
     | 
    
         
            +
            - `CommandBot`'s advanced functionality properly handles empty strings in certain settings ([#379](https://github.com/discordrb/discordrb/pull/379), thanks @LikeLakers2)
         
     | 
| 
      
 340 
     | 
    
         
            +
            - Rate limit headers are processed correctly when running into certain API exceptions ([#440](https://github.com/discordrb/discordrb/pull/440), thanks @unleashy)
         
     | 
| 
      
 341 
     | 
    
         
            +
            - Typos preventing `ArgumentError` from being raised when processing `arg_types` ([#400](https://github.com/discordrb/discordrb/pull/400), thanks @Daniel-Worrall)
         
     | 
| 
       185 
342 
     | 
    
         
             
            - `Server#create_role` correctly accepts a `ColourRGB`/`ColorRGB` via `#combined`
         
     | 
| 
       186 
343 
     | 
    
         
             
            - `EventContainer#add_handler` correctly adds handlers for events that haven't had internal storage created for them yet
         
     | 
| 
       187 
     | 
    
         
            -
            - When a server is initially cached, its channels are now cached in a way that prevents REST exceptions from being raised when attempting to process gateway events with uncached channels as a subject ([#391](https://github.com/ 
     | 
| 
       188 
     | 
    
         
            -
            - Await event matching now considers specific subclasses, preventing certain awaits to be triggered wrongly on different events in the same class tree ([#431](https://github.com/ 
     | 
| 
       189 
     | 
    
         
            -
            - Bulk deleting messages properly filters out messages older than two weeks ([#439](https://github.com/ 
     | 
| 
       190 
     | 
    
         
            -
            - Rate limiting when certain API errors occur are handled properly ([#440](https://github.com/ 
     | 
| 
       191 
     | 
    
         
            -
            - Querying the cache for an unknown member no longer adds `nil` elements, which caused unexpected behavior ([#456](https://github.com/ 
     | 
| 
       192 
     | 
    
         
            -
            - Logging behaves correctly when token is an empty string ([#449](https://github.com/ 
     | 
| 
       193 
     | 
    
         
            -
            - Several typos in documentation ([#444](https://github.com/ 
     | 
| 
      
 344 
     | 
    
         
            +
            - When a server is initially cached, its channels are now cached in a way that prevents REST exceptions from being raised when attempting to process gateway events with uncached channels as a subject ([#391](https://github.com/discordrb/discordrb/pull/391))
         
     | 
| 
      
 345 
     | 
    
         
            +
            - Await event matching now considers specific subclasses, preventing certain awaits to be triggered wrongly on different events in the same class tree ([#431](https://github.com/discordrb/discordrb/pull/431))
         
     | 
| 
      
 346 
     | 
    
         
            +
            - Bulk deleting messages properly filters out messages older than two weeks ([#439](https://github.com/discordrb/discordrb/pull/439), thanks @Emberwalker)
         
     | 
| 
      
 347 
     | 
    
         
            +
            - Rate limiting when certain API errors occur are handled properly ([#440](https://github.com/discordrb/discordrb/pull/440), thanks @unleashy)
         
     | 
| 
      
 348 
     | 
    
         
            +
            - Querying the cache for an unknown member no longer adds `nil` elements, which caused unexpected behavior ([#456](https://github.com/discordrb/discordrb/pull/456))
         
     | 
| 
      
 349 
     | 
    
         
            +
            - Logging behaves correctly when token is an empty string ([#449](https://github.com/discordrb/discordrb/pull/449), thanks @Daniel-Worrall)
         
     | 
| 
      
 350 
     | 
    
         
            +
            - Several typos in documentation ([#444](https://github.com/discordrb/discordrb/pull/444), thanks @ToppleKek)
         
     | 
| 
       194 
351 
     | 
    
         
             
            - When possible, `User` objects are now cached from messages instead of making an API request that may fail
         
     | 
| 
       195 
     | 
    
         
            -
            - `rest-client` is upgraded to `>= 2.1.0.rc1`, as `2.1.0` is completely broken on Windows with Ruby 2.5 ([#478](https://github.com/ 
     | 
| 
      
 352 
     | 
    
         
            +
            - `rest-client` is upgraded to `>= 2.1.0.rc1`, as `2.1.0` is completely broken on Windows with Ruby 2.5 ([#478](https://github.com/discordrb/discordrb/pull/478), thanks @Daniel-Worrall and @swarley)
         
     | 
| 
       196 
353 
     | 
    
         
             
            - `EmbedAuthor` sets the correct instance variable for `proxy_icon_url`
         
     | 
| 
       197 
     | 
    
         
            -
            - `ReactionEvent` correctly returns the server on which it occurred ([#484](https://github.com/ 
     | 
| 
       198 
     | 
    
         
            -
            - `ServerRoleCreateEvent` no longer fails to match when supplying a `name` attribute ([#493](https://github.com/ 
     | 
| 
       199 
     | 
    
         
            -
            - `PlayingEvent` now correctly returns `server` ([#486](https://github.com/ 
     | 
| 
       200 
     | 
    
         
            -
            - Roles will no longer be cached twice when using `Server#create_role` ([#488](https://github.com/ 
     | 
| 
       201 
     | 
    
         
            -
            - Race condition when creating event handlers inside of other event handlers ([#514](https://github.com/ 
     | 
| 
       202 
     | 
    
         
            -
            - Command chain execution is halted immediately if `execute_command` fails, fixing some possible errors that could occur with `advanced_functionality` ([#517](https://github.com/ 
     | 
| 
       203 
     | 
    
         
            -
            - In the event non-existent role IDs are observed in a member object, they are ignored to prevent cache related errors ([#535](https://github.com/ 
     | 
| 
       204 
     | 
    
         
            -
            - `end_with` attribute in `MessageEventHandler` now accepts group-less regular expressions without throwing exceptions ([#571](https://github.com/ 
     | 
| 
       205 
     | 
    
         
            -
            - `PresenceEvent` is correctly raised when dispatched ([#574](https://github.com/ 
     | 
| 
       206 
     | 
    
         
            -
            - `Attachment#initialize` correctly sets `@id` instance variable ([#575](https://github.com/ 
     | 
| 
      
 354 
     | 
    
         
            +
            - `ReactionEvent` correctly returns the server on which it occurred ([#484](https://github.com/discordrb/discordrb/pull/484), thanks @charagarlnad)
         
     | 
| 
      
 355 
     | 
    
         
            +
            - `ServerRoleCreateEvent` no longer fails to match when supplying a `name` attribute ([#493](https://github.com/discordrb/discordrb/pull/493), [#506](https://github.com/discordrb/discordrb/pull/506), thanks @Daniel-Worrall and @micke)
         
     | 
| 
      
 356 
     | 
    
         
            +
            - `PlayingEvent` now correctly returns `server` ([#486](https://github.com/discordrb/discordrb/pull/486), thanks @xTVaser)
         
     | 
| 
      
 357 
     | 
    
         
            +
            - Roles will no longer be cached twice when using `Server#create_role` ([#488](https://github.com/discordrb/discordrb/pull/488))
         
     | 
| 
      
 358 
     | 
    
         
            +
            - Race condition when creating event handlers inside of other event handlers ([#514](https://github.com/discordrb/discordrb/pull/514))
         
     | 
| 
      
 359 
     | 
    
         
            +
            - Command chain execution is halted immediately if `execute_command` fails, fixing some possible errors that could occur with `advanced_functionality` ([#517](https://github.com/discordrb/discordrb/pull/517), thanks @unleashy)
         
     | 
| 
      
 360 
     | 
    
         
            +
            - In the event non-existent role IDs are observed in a member object, they are ignored to prevent cache related errors ([#535](https://github.com/discordrb/discordrb/pull/535))
         
     | 
| 
      
 361 
     | 
    
         
            +
            - `end_with` attribute in `MessageEventHandler` now accepts group-less regular expressions without throwing exceptions ([#571](https://github.com/discordrb/discordrb/pull/571), thanks @badBlackShark)
         
     | 
| 
      
 362 
     | 
    
         
            +
            - `PresenceEvent` is correctly raised when dispatched ([#574](https://github.com/discordrb/discordrb/pull/574))
         
     | 
| 
      
 363 
     | 
    
         
            +
            - `Attachment#initialize` correctly sets `@id` instance variable ([#575](https://github.com/discordrb/discordrb/pull/575), thanks @kandayo)
         
     | 
| 
       207 
364 
     | 
    
         | 
| 
       208 
365 
     | 
    
         
             
            ## [3.2.1] - 2017-02-18
         
     | 
| 
       209 
     | 
    
         
            -
            [3.2.1]: https://github.com/ 
     | 
| 
      
 366 
     | 
    
         
            +
            [3.2.1]: https://github.com/discordrb/discordrb/releases/tag/v3.2.1
         
     | 
| 
       210 
367 
     | 
    
         | 
| 
       211 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 368 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.2.0.1...v3.2.1)
         
     | 
| 
       212 
369 
     | 
    
         | 
| 
       213 
370 
     | 
    
         
             
            ### Changed
         
     | 
| 
       214 
371 
     | 
    
         
             
            - `Bot#stop` and `Gateway#stop` now explicitly return `nil`, for more convenient use in commands
         
     | 
| 
       215 
372 
     | 
    
         
             
            - The API method to query for users has been removed as the endpoint no longer exists
         
     | 
| 
       216 
     | 
    
         
            -
            - Some more methods have been changed to resolve IDs, which means they can be called with integer and string IDs instead of just the objects ([#313](https://github.com/ 
     | 
| 
       217 
     | 
    
         
            -
            - Bulk deleting now uses the new non-deprecated URL – this has no immediate effect, but once the old one will be removed bots using it will not be able to bulk delete anymore (see also [#309](https://github.com/ 
     | 
| 
      
 373 
     | 
    
         
            +
            - Some more methods have been changed to resolve IDs, which means they can be called with integer and string IDs instead of just the objects ([#313](https://github.com/discordrb/discordrb/pull/313), thanks @LikeLakers2)
         
     | 
| 
      
 374 
     | 
    
         
            +
            - Bulk deleting now uses the new non-deprecated URL – this has no immediate effect, but once the old one will be removed bots using it will not be able to bulk delete anymore (see also [#309](https://github.com/discordrb/discordrb/issues/309))
         
     | 
| 
       218 
375 
     | 
    
         | 
| 
       219 
376 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       220 
377 
     | 
    
         
             
            - Fixed another bug with resumes that caused issues when resuming a zombie connection
         
     | 
| 
       221 
     | 
    
         
            -
            - Fixed a bug that caused issues when playing short files ([#326](https://github.com/ 
     | 
| 
      
 378 
     | 
    
         
            +
            - Fixed a bug that caused issues when playing short files ([#326](https://github.com/discordrb/discordrb/issues/316))
         
     | 
| 
       222 
379 
     | 
    
         | 
| 
       223 
380 
     | 
    
         
             
            ## [3.2.0.1] - 2017-01-29
         
     | 
| 
       224 
     | 
    
         
            -
            [3.2.0.1]: https://github.com/ 
     | 
| 
      
 381 
     | 
    
         
            +
            [3.2.0.1]: https://github.com/discordrb/discordrb/releases/tag/v3.2.0.1
         
     | 
| 
       225 
382 
     | 
    
         | 
| 
       226 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 383 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.2.0...v3.2.0.1)
         
     | 
| 
       227 
384 
     | 
    
         | 
| 
       228 
385 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       229 
386 
     | 
    
         
             
            - Attempt to fix an issue that causes a strange problem with dependencies when installing discordrb
         
     | 
| 
       230 
387 
     | 
    
         | 
| 
       231 
388 
     | 
    
         
             
            ## [3.2.0] - 2017-01-29
         
     | 
| 
       232 
     | 
    
         
            -
            [3.2.0]: https://github.com/ 
     | 
| 
      
 389 
     | 
    
         
            +
            [3.2.0]: https://github.com/discordrb/discordrb/releases/tag/v3.2.0
         
     | 
| 
       233 
390 
     | 
    
         | 
| 
       234 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 391 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.1.1...v3.2.0)
         
     | 
| 
       235 
392 
     | 
    
         | 
| 
       236 
393 
     | 
    
         
             
            ### Added
         
     | 
| 
       237 
394 
     | 
    
         
             
            - Various parts of gateway error handling were improved, leading to significant stability improvements:
         
     | 
| 
         @@ -240,90 +397,90 @@ Thank you to all of our contributors! 
     | 
|
| 
       240 
397 
     | 
    
         
             
              - Heartbeat ACKs (opcode 11) are now checked, which allows the client to detect zombie connections early on. If this causes problems for you you can disable it using `bot.gateway.check_heartbeat_acks = false`.
         
     | 
| 
       241 
398 
     | 
    
         
             
              - Received heartbeats are now properly handled again
         
     | 
| 
       242 
399 
     | 
    
         
             
            - Added a client for webhooks, implemented as a separate gem `discordrb-webhooks`. This allows the creation of applications that only use webhooks without the overhead provided by the rest of discordrb. The gem is added as a dependency by normal discordrb so you don't need to install it separately if you're already using that.
         
     | 
| 
       243 
     | 
    
         
            -
            - Adding, updating or deleting custom emoji is now supported ([#285](https://github.com/ 
     | 
| 
      
 400 
     | 
    
         
            +
            - Adding, updating or deleting custom emoji is now supported ([#285](https://github.com/discordrb/discordrb/pull/285), thanks @Daniel-Worrall)
         
     | 
| 
       244 
401 
     | 
    
         
             
            - Rich embeds can now be sent alongside messages, for example using the `embed` parameter in `send_message`, or with the new method `Channel#send_embed`
         
     | 
| 
       245 
     | 
    
         
            -
            - `advanced_functionality` bots now support escaping using backslashes ([#293](https://github.com/ 
     | 
| 
       246 
     | 
    
         
            -
            - Added type checking and conversion for commands ([#298](https://github.com/ 
     | 
| 
      
 402 
     | 
    
         
            +
            - `advanced_functionality` bots now support escaping using backslashes ([#293](https://github.com/discordrb/discordrb/issues/293) / [#304](https://github.com/discordrb/discordrb/pull/304), thanks @LikeLakers2)
         
     | 
| 
      
 403 
     | 
    
         
            +
            - Added type checking and conversion for commands ([#298](https://github.com/discordrb/discordrb/pull/298), thanks @ohtaavi)
         
     | 
| 
       247 
404 
     | 
    
         
             
            - Bulk deleting messages now checks for message age (see also [discordapp/discord-api-docs#208](https://github.com/discordapp/discord-api-docs/issues/208)). By default, it will ignore messages that are too old to be bulk deleted, but there is also a `strict` mode setting now that raises an exception in such a case.
         
     | 
| 
       248 
     | 
    
         
            -
            - Reactions can now be viewed for existing messages ([#262](https://github.com/ 
     | 
| 
       249 
     | 
    
         
            -
            - Game types and stream URLs are now cached ([#297](https://github.com/ 
     | 
| 
       250 
     | 
    
         
            -
            - The default non-streaming game was changed to be `0` instead of `nil` ([#277](https://github.com/ 
     | 
| 
      
 405 
     | 
    
         
            +
            - Reactions can now be viewed for existing messages ([#262](https://github.com/discordrb/discordrb/pull/262), thanks @z64), added to messages ([#266](https://github.com/discordrb/discordrb/pull/266), thanks @z64), and listened for using gateway events as well as internal handlers ([#300](https://github.com/discordrb/discordrb/issues/300)).
         
     | 
| 
      
 406 
     | 
    
         
            +
            - Game types and stream URLs are now cached ([#297](https://github.com/discordrb/discordrb/issues/297))
         
     | 
| 
      
 407 
     | 
    
         
            +
            - The default non-streaming game was changed to be `0` instead of `nil` ([#277](https://github.com/discordrb/discordrb/pull/277), thanks @zeyla)
         
     | 
| 
       251 
408 
     | 
    
         
             
            - A method `Channel#delete_message` was added to support deleting single messages by ID without prior resolution.
         
     | 
| 
       252 
     | 
    
         
            -
            - Permission overwrites can now be deleted from channels ([#268](https://github.com/ 
     | 
| 
      
 409 
     | 
    
         
            +
            - Permission overwrites can now be deleted from channels ([#268](https://github.com/discordrb/discordrb/pull/268), thanks @greenbigfrog)
         
     | 
| 
       253 
410 
     | 
    
         
             
            - There is now a utility method `IDObject.synthesise` that creates snowflakes with specific timestamps out of thin air.
         
     | 
| 
       254 
     | 
    
         
            -
            - Typing events are now respondable, so you can call `#respond` on them for example ([#270](https://github.com/ 
     | 
| 
       255 
     | 
    
         
            -
            - Message authors can now be `User` objects if a `Member` object could not be found or created ([#290](https://github.com/ 
     | 
| 
       256 
     | 
    
         
            -
            - Added two new events, `unknown` ([#288](https://github.com/ 
     | 
| 
       257 
     | 
    
         
            -
            - Bots can now be set to fully ignore other bots ([#257](https://github.com/ 
     | 
| 
      
 411 
     | 
    
         
            +
            - Typing events are now respondable, so you can call `#respond` on them for example ([#270](https://github.com/discordrb/discordrb/pull/270), thanks @VxJasonxV)
         
     | 
| 
      
 412 
     | 
    
         
            +
            - Message authors can now be `User` objects if a `Member` object could not be found or created ([#290](https://github.com/discordrb/discordrb/issues/290))
         
     | 
| 
      
 413 
     | 
    
         
            +
            - Added two new events, `unknown` ([#288](https://github.com/discordrb/discordrb/issues/288)) and `raw`, that are raised for unknown dispatches and all dispatches, respectively.
         
     | 
| 
      
 414 
     | 
    
         
            +
            - Bots can now be set to fully ignore other bots ([#257](https://github.com/discordrb/discordrb/pull/257), thanks @greenbigfrog)
         
     | 
| 
       258 
415 
     | 
    
         
             
            - Voice state update events now have an `old_channel` property/attribute that denotes the previous channel the user was in in case of joining/moving/leaving.
         
     | 
| 
       259 
     | 
    
         
            -
            - The default help command no longer shows commands the user can't use ([#275](https://github.com/ 
     | 
| 
       260 
     | 
    
         
            -
            - Updated the command example to no longer include user-specific stuff ([#260](https://github.com/ 
     | 
| 
      
 416 
     | 
    
         
            +
            - The default help command no longer shows commands the user can't use ([#275](https://github.com/discordrb/discordrb/pull/275), thanks @FormalHellhound)
         
     | 
| 
      
 417 
     | 
    
         
            +
            - Updated the command example to no longer include user-specific stuff ([#260](https://github.com/discordrb/discordrb/issues/260))
         
     | 
| 
       261 
418 
     | 
    
         
             
            - `Server#role` now resolves IDs, so they can be passed as strings if necessary.
         
     | 
| 
       262 
419 
     | 
    
         | 
| 
       263 
420 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       264 
421 
     | 
    
         
             
            - Fixed bots' shard settings being ignored in certain cases
         
     | 
| 
       265 
422 
     | 
    
         
             
            - Parsing role mentions using `Bot#parse_mention` works properly now.
         
     | 
| 
       266 
     | 
    
         
            -
            - Fixed some specific REST methods that were broken by the API module refactor ([#302](https://github.com/ 
     | 
| 
       267 
     | 
    
         
            -
            - Cached channel data is now updated properly on change ([#272](https://github.com/ 
     | 
| 
       268 
     | 
    
         
            -
            - Users' avatars are now updated properly on change ([#265](https://github.com/ 
     | 
| 
       269 
     | 
    
         
            -
            - Fixed voice state tracking for newly created channels ([#292](https://github.com/ 
     | 
| 
       270 
     | 
    
         
            -
            - Fixed event attribute handling for PlayingEvent ([#303](https://github.com/ 
     | 
| 
       271 
     | 
    
         
            -
            - Getting specific emoji by ID no longer fails to resolve non-cached emoji ([#283](https://github.com/ 
     | 
| 
       272 
     | 
    
         
            -
            - Voice state update events no longer fail to be raised for users leaving channels, if the event handler had a channel attribute set ([#301](https://github.com/ 
     | 
| 
      
 423 
     | 
    
         
            +
            - Fixed some specific REST methods that were broken by the API module refactor ([#302](https://github.com/discordrb/discordrb/pull/302), thanks @LikeLakers2)
         
     | 
| 
      
 424 
     | 
    
         
            +
            - Cached channel data is now updated properly on change ([#272](https://github.com/discordrb/discordrb/issues/272))
         
     | 
| 
      
 425 
     | 
    
         
            +
            - Users' avatars are now updated properly on change ([#265](https://github.com/discordrb/discordrb/pull/265), thanks @Roughsketch)
         
     | 
| 
      
 426 
     | 
    
         
            +
            - Fixed voice state tracking for newly created channels ([#292](https://github.com/discordrb/discordrb/issues/292))
         
     | 
| 
      
 427 
     | 
    
         
            +
            - Fixed event attribute handling for PlayingEvent ([#303](https://github.com/discordrb/discordrb/pull/303), thanks @sven-strothoff)
         
     | 
| 
      
 428 
     | 
    
         
            +
            - Getting specific emoji by ID no longer fails to resolve non-cached emoji ([#283](https://github.com/discordrb/discordrb/pull/283), thanks @greenbigfrog)
         
     | 
| 
      
 429 
     | 
    
         
            +
            - Voice state update events no longer fail to be raised for users leaving channels, if the event handler had a channel attribute set ([#301](https://github.com/discordrb/discordrb/issues/301))
         
     | 
| 
       273 
430 
     | 
    
         
             
            - Bots that don't define any events should work properly again
         
     | 
| 
       274 
     | 
    
         
            -
            - Fixed error handling for messages over the character limit ([#276](https://github.com/ 
     | 
| 
       275 
     | 
    
         
            -
            - Fixed some specific log messages not being called properly ([#263](https://github.com/ 
     | 
| 
      
 431 
     | 
    
         
            +
            - Fixed error handling for messages over the character limit ([#276](https://github.com/discordrb/discordrb/issues/276))
         
     | 
| 
      
 432 
     | 
    
         
            +
            - Fixed some specific log messages not being called properly ([#263](https://github.com/discordrb/discordrb/pull/263), thanks @Roughsketch)
         
     | 
| 
       276 
433 
     | 
    
         
             
            - Fixed some edge case bugs in the default help command:
         
     | 
| 
       277 
434 
     | 
    
         
             
              - In the case of too many commands to be sent in the channel, it no longer replies with "Sending help in PM!" when called from PM
         
     | 
| 
       278 
     | 
    
         
            -
              - It no longer fails completely if called from PM if there are any commands that require server-specific checks ([#308](https://github.com/ 
     | 
| 
      
 435 
     | 
    
         
            +
              - It no longer fails completely if called from PM if there are any commands that require server-specific checks ([#308](https://github.com/discordrb/discordrb/issues/308))
         
     | 
| 
       279 
436 
     | 
    
         
             
              - Fixed a slight formatting mistake
         
     | 
| 
       280 
437 
     | 
    
         
             
            - Quoted command arguments in `advanced_functionality` are no longer split by newline
         
     | 
| 
       281 
438 
     | 
    
         
             
            - Fixed a specific edge case in command chain handling where handling commands with the same name as the chain delimiter was broken
         
     | 
| 
       282 
439 
     | 
    
         | 
| 
       283 
440 
     | 
    
         
             
            ## [3.1.1] - 2016-10-21
         
     | 
| 
       284 
     | 
    
         
            -
            [3.1.1]: https://github.com/ 
     | 
| 
      
 441 
     | 
    
         
            +
            [3.1.1]: https://github.com/discordrb/discordrb/releases/tag/v3.1.1
         
     | 
| 
       285 
442 
     | 
    
         | 
| 
       286 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 443 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.1.0...v3.1.1)
         
     | 
| 
       287 
444 
     | 
    
         | 
| 
       288 
445 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       289 
     | 
    
         
            -
            - An oversight where a `GUILD_DELETE` dispatch would cause an internal error was fixed. ([#256](https://github.com/ 
     | 
| 
      
 446 
     | 
    
         
            +
            - An oversight where a `GUILD_DELETE` dispatch would cause an internal error was fixed. ([#256](https://github.com/discordrb/discordrb/pull/256), thanks @greenbigfrog)
         
     | 
| 
       290 
447 
     | 
    
         | 
| 
       291 
448 
     | 
    
         
             
            ## [3.1.0] - 2016-10-20
         
     | 
| 
       292 
     | 
    
         
            -
            [3.1.0]: https://github.com/ 
     | 
| 
      
 449 
     | 
    
         
            +
            [3.1.0]: https://github.com/discordrb/discordrb/releases/tag/v3.1.0
         
     | 
| 
       293 
450 
     | 
    
         | 
| 
       294 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 451 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.0.2...v3.1.0)
         
     | 
| 
       295 
452 
     | 
    
         | 
| 
       296 
453 
     | 
    
         
             
            ### Added
         
     | 
| 
       297 
     | 
    
         
            -
            - Emoji handling support ([#226](https://github.com/ 
     | 
| 
       298 
     | 
    
         
            -
            - A `channels` attribute has been added to `CommandBot` as well as `Command` to restrict the channels in which either of the two works ([#249](https://github.com/ 
     | 
| 
       299 
     | 
    
         
            -
            - The bulk deletion endpoint is now exposed directly using the `Channel#delete_messages` method ([#235](https://github.com/ 
     | 
| 
       300 
     | 
    
         
            -
            - The internal settings fields for user statuses that cause statuses to persist across restarts can now be modified ([#233](https://github.com/ 
     | 
| 
       301 
     | 
    
         
            -
            - A few examples have been added to the docs ([#250](https://github.com/ 
     | 
| 
      
 454 
     | 
    
         
            +
            - Emoji handling support ([#226](https://github.com/discordrb/discordrb/pull/226), thanks @greenbigfrog)
         
     | 
| 
      
 455 
     | 
    
         
            +
            - A `channels` attribute has been added to `CommandBot` as well as `Command` to restrict the channels in which either of the two works ([#249](https://github.com/discordrb/discordrb/pull/249), thanks @Xzanth)
         
     | 
| 
      
 456 
     | 
    
         
            +
            - The bulk deletion endpoint is now exposed directly using the `Channel#delete_messages` method ([#235](https://github.com/discordrb/discordrb/pull/235), thanks @z64)
         
     | 
| 
      
 457 
     | 
    
         
            +
            - The internal settings fields for user statuses that cause statuses to persist across restarts can now be modified ([#233](https://github.com/discordrb/discordrb/pull/233), thanks @Daniel-Worrall)
         
     | 
| 
      
 458 
     | 
    
         
            +
            - A few examples have been added to the docs ([#250](https://github.com/discordrb/discordrb/pull/250), thanks @SunDwarf)
         
     | 
| 
       302 
459 
     | 
    
         
             
            - The specs have been improved; they're still not exhaustive by far but there are at least slightly more now.
         
     | 
| 
       303 
460 
     | 
    
         | 
| 
       304 
461 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       305 
     | 
    
         
            -
            - Fixed an important bug that caused the logger not to work in some cases. ([#243](https://github.com/ 
     | 
| 
      
 462 
     | 
    
         
            +
            - Fixed an important bug that caused the logger not to work in some cases. ([#243](https://github.com/discordrb/discordrb/pull/243), thanks @Daniel-Worrall)
         
     | 
| 
       306 
463 
     | 
    
         
             
            - Fixed logger token redaction.
         
     | 
| 
       307 
     | 
    
         
            -
            - `unavailable_servers` should no longer crash the bot due to being nil in some cases ([#244](https://github.com/ 
     | 
| 
       308 
     | 
    
         
            -
            - `Profile#on` for member resolution is now no longer overwritten by an alias for `#online` ([#247](https://github.com/ 
     | 
| 
       309 
     | 
    
         
            -
            - A `CommandBot` without any commands should no longer crash when receiving a message that triggers it ([#242](https://github.com/ 
     | 
| 
      
 464 
     | 
    
         
            +
            - `unavailable_servers` should no longer crash the bot due to being nil in some cases ([#244](https://github.com/discordrb/discordrb/pull/244), thanks @Daniel-Worrall)
         
     | 
| 
      
 465 
     | 
    
         
            +
            - `Profile#on` for member resolution is now no longer overwritten by an alias for `#online` ([#247](https://github.com/discordrb/discordrb/pull/247), thanks @Daniel-Worrall)
         
     | 
| 
      
 466 
     | 
    
         
            +
            - A `CommandBot` without any commands should no longer crash when receiving a message that triggers it ([#242](https://github.com/discordrb/discordrb/issues/242))
         
     | 
| 
       310 
467 
     | 
    
         
             
            - Changing nicknames works again, it has apparently been broken in 3.0.0.
         
     | 
| 
       311 
468 
     | 
    
         | 
| 
       312 
469 
     | 
    
         
             
            ## [3.0.2] - 2016-10-07
         
     | 
| 
       313 
     | 
    
         
            -
            [3.0.2]: https://github.com/ 
     | 
| 
      
 470 
     | 
    
         
            +
            [3.0.2]: https://github.com/discordrb/discordrb/releases/tag/v3.0.2
         
     | 
| 
       314 
471 
     | 
    
         | 
| 
       315 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 472 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.0.1...v3.0.2)
         
     | 
| 
       316 
473 
     | 
    
         | 
| 
       317 
474 
     | 
    
         
             
            ### Changed
         
     | 
| 
       318 
     | 
    
         
            -
            - A small change to how CommandBot parameter lists are formatted ([#240](https://github.com/ 
     | 
| 
      
 475 
     | 
    
         
            +
            - A small change to how CommandBot parameter lists are formatted ([#240](https://github.com/discordrb/discordrb/pull/240), thanks @FormalHellhound)
         
     | 
| 
       319 
476 
     | 
    
         | 
| 
       320 
477 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       321 
     | 
    
         
            -
            - Setting properties on a channel (e.g. `Channel#topic=`) works again ([#238](https://github.com/ 
     | 
| 
      
 478 
     | 
    
         
            +
            - Setting properties on a channel (e.g. `Channel#topic=`) works again ([#238](https://github.com/discordrb/discordrb/issues/238) / [#239](https://github.com/discordrb/discordrb/pull/239), thanks @Daniel-Worrall)
         
     | 
| 
       322 
479 
     | 
    
         | 
| 
       323 
480 
     | 
    
         
             
            ## [3.0.1] - 2016-10-01
         
     | 
| 
       324 
     | 
    
         
            -
            [3.0.1]: https://github.com/ 
     | 
| 
      
 481 
     | 
    
         
            +
            [3.0.1]: https://github.com/discordrb/discordrb/releases/tag/v3.0.1
         
     | 
| 
       325 
482 
     | 
    
         | 
| 
       326 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 483 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.0.0...v3.0.1)
         
     | 
| 
       327 
484 
     | 
    
         | 
| 
       328 
485 
     | 
    
         
             
            A tiny update to support webhook-sent messages properly!
         
     | 
| 
       329 
486 
     | 
    
         | 
| 
         @@ -337,9 +494,9 @@ A tiny update to support webhook-sent messages properly! 
     | 
|
| 
       337 
494 
     | 
    
         
             
            - Fixed a minor performance problem where a CommandBot would create unnecessarily create redundant objects for every received message.
         
     | 
| 
       338 
495 
     | 
    
         | 
| 
       339 
496 
     | 
    
         
             
            ## [3.0.0] - 2016-09-30
         
     | 
| 
       340 
     | 
    
         
            -
            [3.0.0]: https://github.com/ 
     | 
| 
      
 497 
     | 
    
         
            +
            [3.0.0]: https://github.com/discordrb/discordrb/releases/tag/v3.0.0
         
     | 
| 
       341 
498 
     | 
    
         | 
| 
       342 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 499 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.1.3...v3.0.0)
         
     | 
| 
       343 
500 
     | 
    
         | 
| 
       344 
501 
     | 
    
         
             
            I didn't think there could possibly be a release larger than 2.0.0 was, but here it is! Including the respective release commit, there were 540 commits from 1.8.1 to 2.0.0, but a whopping 734 commits from 2.1.3 to 3.0.0.
         
     | 
| 
       345 
502 
     | 
    
         | 
| 
         @@ -349,47 +506,47 @@ As with 2.0.0, there are some breaking changes! They are, as always, highlighted 
     | 
|
| 
       349 
506 
     | 
    
         
             
            - **The `application_id` parameter has been renamed to `client_id`**. With the changes to how bot applications work, it would just be confusing to have it be called `application_id` any longer. If you try to use `application_id` now, it will raise a descriptive exception; with 3.1.0 that will be removed too (you'll get a less descriptive exception).
         
     | 
| 
       350 
507 
     | 
    
         
             
            - The gateway implementation has been completely rewritten, for more performance, stability and maintainability. This means that **to call some internal methods like `inject_reconnect`, a `Gateway` instance (available as `Bot#gateway`) now needs to be used.**
         
     | 
| 
       351 
508 
     | 
    
         
             
            - **User login using email and password has been removed**. Use a user token instead, see also [here](https://github.com/discordapp/discord-api-docs/issues/69#issuecomment-223886862).
         
     | 
| 
       352 
     | 
    
         
            -
            - In addition to the rewrite, the gateway version has also been upgraded to protocol version 6 (the rewrite was for v5). **With this, the way channel types are handled has been changed a bit!** If you've been using the abstraction methods like `Channel#voice?`, you should be fine though. This also includes support for group chats on user accounts, as that was the only real functionality change on v6. ([#211](https://github.com/ 
     | 
| 
      
 509 
     | 
    
         
            +
            - In addition to the rewrite, the gateway version has also been upgraded to protocol version 6 (the rewrite was for v5). **With this, the way channel types are handled has been changed a bit!** If you've been using the abstraction methods like `Channel#voice?`, you should be fine though. This also includes support for group chats on user accounts, as that was the only real functionality change on v6. ([#211](https://github.com/discordrb/discordrb/pull/211), thanks @Daniel-Worrall)
         
     | 
| 
       353 
510 
     | 
    
         
             
            - **Custom prefix handlers for `CommandBot`s now get the full message object as their parameter rather than only the content**, for even more flexibility.
         
     | 
| 
       354 
511 
     | 
    
         
             
            - For internal consistency, **the `UnknownGuild` error was renamed to `UnknownServer`**. I doubt this change affects anyone, but if you handle that error specifically in your bot, make sure to change it.
         
     | 
| 
       355 
     | 
    
         
            -
            - **The API module has undergone a refactor**, if you were using any manual API calls you will have to update them to the new format. Specifically, endpoints dealing with channels have been moved to `API::Channel`, ones dealing with users to `API::User` and so on. ([#203](https://github.com/ 
     | 
| 
       356 
     | 
    
         
            -
            - **Calling `users` on a text channel will now only return users who have permission to read it** ([#186](https://github.com/ 
     | 
| 
       357 
     | 
    
         
            -
            - A variety of new fields have been added to `Message` objects, specifically embeds (`Message#embeds`), when it was last edited (`#edited_timestamp`), whether it uses TTS (`#tts?`), its nonce (`#nonce`), whether it was ever edited (`#edited?`), and whether it mentions everyone (`mention_everyone?`) ([#206](https://github.com/ 
     | 
| 
       358 
     | 
    
         
            -
            - A variety of new functionality has been added to `Server` and `Channel` objects ([#181](https://github.com/ 
     | 
| 
      
 512 
     | 
    
         
            +
            - **The API module has undergone a refactor**, if you were using any manual API calls you will have to update them to the new format. Specifically, endpoints dealing with channels have been moved to `API::Channel`, ones dealing with users to `API::User` and so on. ([#203](https://github.com/discordrb/discordrb/pull/203), thanks @depl0y)
         
     | 
| 
      
 513 
     | 
    
         
            +
            - **Calling `users` on a text channel will now only return users who have permission to read it** ([#186](https://github.com/discordrb/discordrb/issues/186))
         
     | 
| 
      
 514 
     | 
    
         
            +
            - A variety of new fields have been added to `Message` objects, specifically embeds (`Message#embeds`), when it was last edited (`#edited_timestamp`), whether it uses TTS (`#tts?`), its nonce (`#nonce`), whether it was ever edited (`#edited?`), and whether it mentions everyone (`mention_everyone?`) ([#206](https://github.com/discordrb/discordrb/pull/206), thanks @SnazzyPine25)
         
     | 
| 
      
 515 
     | 
    
         
            +
            - A variety of new functionality has been added to `Server` and `Channel` objects ([#181](https://github.com/discordrb/discordrb/pull/181), thanks @SnazzyPine25):
         
     | 
| 
       359 
516 
     | 
    
         
             
              - Bitrate and user limit can now be read and set for voice channels
         
     | 
| 
       360 
517 
     | 
    
         
             
              - Server integrations can now be read
         
     | 
| 
       361 
518 
     | 
    
         
             
              - Server features and verification level can now be read
         
     | 
| 
       362 
519 
     | 
    
         
             
              - Utility functions to generate widget, widget banner and splash URLs
         
     | 
| 
       363 
     | 
    
         
            -
            - Message pinning is now supported, both reading pin status and pinning existing messages ([#145](https://github.com/ 
     | 
| 
      
 520 
     | 
    
         
            +
            - Message pinning is now supported, both reading pin status and pinning existing messages ([#145](https://github.com/discordrb/discordrb/issues/145) / [#146](https://github.com/discordrb/discordrb/pull/146), thanks @hlaaftana)
         
     | 
| 
       364 
521 
     | 
    
         
             
            - Support for the new available statuses:
         
     | 
| 
       365 
522 
     | 
    
         
             
              - `Bot#dnd` to make the bot show up as DnD (red dot)
         
     | 
| 
       366 
523 
     | 
    
         
             
              - `Bot#invisible` to make the bot show up as offline
         
     | 
| 
       367 
     | 
    
         
            -
            - Setting the bot's status to streaming is now supported ([#128](https://github.com/ 
     | 
| 
       368 
     | 
    
         
            -
            - You can now set a message to be sent when a `CommandBot`'s command fails with a `NoPermission` error ([#200](https://github.com/ 
     | 
| 
       369 
     | 
    
         
            -
            - There is now an optional field to list the parameters a command can accept ([#201](https://github.com/ 
     | 
| 
       370 
     | 
    
         
            -
            - Commands can now have an array of roles set that are required to be able to use it ([#178](https://github.com/ 
     | 
| 
       371 
     | 
    
         
            -
            - Methods like `CommandEvent#<<` for quickly responding to an event are now available in `MessageEvent` too ([#154](https://github.com/ 
     | 
| 
       372 
     | 
    
         
            -
            - Temporary messages, that automatically delete after some time, can now be sent to channels ([#136](https://github.com/ 
     | 
| 
       373 
     | 
    
         
            -
            - Captions can now be sent together with files, and files can be attached to events to be sent on completion ([#130](https://github.com/ 
     | 
| 
       374 
     | 
    
         
            -
            - There is now a `Channel#load_message` method to get a single message by its ID ([#174](https://github.com/ 
     | 
| 
       375 
     | 
    
         
            -
            - `Channel#define_overwrite` can now be used with a `Profile` object, together with some internal changes ([#232](https://github.com/ 
     | 
| 
       376 
     | 
    
         
            -
            - There are now endpoint methods to list a server's channels and channel invites ([#197](https://github.com/ 
     | 
| 
       377 
     | 
    
         
            -
            - Two methods, `Member#roles=` and `Member#modify_roles` to manipulate a member's roles in a more advanced way have been added ([#223](https://github.com/ 
     | 
| 
      
 524 
     | 
    
         
            +
            - Setting the bot's status to streaming is now supported ([#128](https://github.com/discordrb/discordrb/pull/128) and [#143](https://github.com/discordrb/discordrb/pull/143), thanks @SnazzyPine25 and @barkerja)
         
     | 
| 
      
 525 
     | 
    
         
            +
            - You can now set a message to be sent when a `CommandBot`'s command fails with a `NoPermission` error ([#200](https://github.com/discordrb/discordrb/pull/200), thanks @PoVa)
         
     | 
| 
      
 526 
     | 
    
         
            +
            - There is now an optional field to list the parameters a command can accept ([#201](https://github.com/discordrb/discordrb/pull/201), thanks @FormalHellhound)
         
     | 
| 
      
 527 
     | 
    
         
            +
            - Commands can now have an array of roles set that are required to be able to use it ([#178](https://github.com/discordrb/discordrb/pull/178), thanks @PoVa)
         
     | 
| 
      
 528 
     | 
    
         
            +
            - Methods like `CommandEvent#<<` for quickly responding to an event are now available in `MessageEvent` too ([#154](https://github.com/discordrb/discordrb/pull/154), thanks @hlaaftana)
         
     | 
| 
      
 529 
     | 
    
         
            +
            - Temporary messages, that automatically delete after some time, can now be sent to channels ([#136](https://github.com/discordrb/discordrb/issues/136) / [#139](https://github.com/discordrb/discordrb/pull/139), thanks @unleashy)
         
     | 
| 
      
 530 
     | 
    
         
            +
            - Captions can now be sent together with files, and files can be attached to events to be sent on completion ([#130](https://github.com/discordrb/discordrb/pull/130), thanks @SnazzyPine25)
         
     | 
| 
      
 531 
     | 
    
         
            +
            - There is now a `Channel#load_message` method to get a single message by its ID ([#174](https://github.com/discordrb/discordrb/pull/174), thanks @z64)
         
     | 
| 
      
 532 
     | 
    
         
            +
            - `Channel#define_overwrite` can now be used with a `Profile` object, together with some internal changes ([#232](https://github.com/discordrb/discordrb/issues/232))
         
     | 
| 
      
 533 
     | 
    
         
            +
            - There are now endpoint methods to list a server's channels and channel invites ([#197](https://github.com/discordrb/discordrb/pull/197))
         
     | 
| 
      
 534 
     | 
    
         
            +
            - Two methods, `Member#roles=` and `Member#modify_roles` to manipulate a member's roles in a more advanced way have been added ([#223](https://github.com/discordrb/discordrb/pull/223), thanks @z64)
         
     | 
| 
       378 
535 
     | 
    
         
             
            - Role mentionability can now be set using `Role#mentionable=`
         
     | 
| 
       379 
     | 
    
         
            -
            - The current bot's OAuth application can now be read ([#175](https://github.com/ 
     | 
| 
       380 
     | 
    
         
            -
            - You can now mute and deafen other members ([#157](https://github.com/ 
     | 
| 
       381 
     | 
    
         
            -
            - The internal `Logger` now supports writing to a file instead of STDOUT ([#171](https://github.com/ 
     | 
| 
       382 
     | 
    
         
            -
              - Building on top of that, you can also write to multiple streams at the same time now, in case you want to have input on both a file and STDOUT, or even more advanced setups. ([#217](https://github.com/ 
     | 
| 
       383 
     | 
    
         
            -
            - Roles can now have their permissions bitfield set directly ([#177](https://github.com/ 
     | 
| 
       384 
     | 
    
         
            -
            - The `Bot#invite_url` method now supports adding permission bits into the generated URL ([#218](https://github.com/ 
     | 
| 
       385 
     | 
    
         
            -
            - A utility method `User#send_file` has been added to directly send a file to a user in PM ([#168](https://github.com/ 
     | 
| 
       386 
     | 
    
         
            -
            - You can now get the list of members that have a particular role assigned using `Role#members` ([#147](https://github.com/ 
     | 
| 
       387 
     | 
    
         
            -
            - You can now check whether a `VoiceBot` is playing right now using `#playing?` ([#137](https://github.com/ 
     | 
| 
       388 
     | 
    
         
            -
            - You can now get the channel a `VoiceBot` is playing on ([#138](https://github.com/ 
     | 
| 
       389 
     | 
    
         
            -
            - The permissions bit map has been updated for emoji, "Administrator" and nickname changes ([#180](https://github.com/ 
     | 
| 
      
 536 
     | 
    
         
            +
            - The current bot's OAuth application can now be read ([#175](https://github.com/discordrb/discordrb/pull/175), thanks @SnazzyPine25)
         
     | 
| 
      
 537 
     | 
    
         
            +
            - You can now mute and deafen other members ([#157](https://github.com/discordrb/discordrb/pull/157), thanks @SnazzyPine25)
         
     | 
| 
      
 538 
     | 
    
         
            +
            - The internal `Logger` now supports writing to a file instead of STDOUT ([#171](https://github.com/discordrb/discordrb/issues/171))
         
     | 
| 
      
 539 
     | 
    
         
            +
              - Building on top of that, you can also write to multiple streams at the same time now, in case you want to have input on both a file and STDOUT, or even more advanced setups. ([#217](https://github.com/discordrb/discordrb/pull/217), thanks @PoVa)
         
     | 
| 
      
 540 
     | 
    
         
            +
            - Roles can now have their permissions bitfield set directly ([#177](https://github.com/discordrb/discordrb/issues/177))
         
     | 
| 
      
 541 
     | 
    
         
            +
            - The `Bot#invite_url` method now supports adding permission bits into the generated URL ([#218](https://github.com/discordrb/discordrb/pull/218), thanks @PoVa)
         
     | 
| 
      
 542 
     | 
    
         
            +
            - A utility method `User#send_file` has been added to directly send a file to a user in PM ([#168](https://github.com/discordrb/discordrb/issues/168) / [#172](https://github.com/discordrb/discordrb/pull/172), thanks @SnazzyPine25)
         
     | 
| 
      
 543 
     | 
    
         
            +
            - You can now get the list of members that have a particular role assigned using `Role#members` ([#147](https://github.com/discordrb/discordrb/pull/147), thanks @hlaaftana)
         
     | 
| 
      
 544 
     | 
    
         
            +
            - You can now check whether a `VoiceBot` is playing right now using `#playing?` ([#137](https://github.com/discordrb/discordrb/pull/137), thanks @SnazzyPine25)
         
     | 
| 
      
 545 
     | 
    
         
            +
            - You can now get the channel a `VoiceBot` is playing on ([#138](https://github.com/discordrb/discordrb/pull/138), thanks @snapcase)
         
     | 
| 
      
 546 
     | 
    
         
            +
            - The permissions bit map has been updated for emoji, "Administrator" and nickname changes ([#180](https://github.com/discordrb/discordrb/pull/180), thanks @megumisonoda)
         
     | 
| 
       390 
547 
     | 
    
         
             
            - A method `Bot#connected?` has been added to check whether the bot is currently connected to the gateway.
         
     | 
| 
       391 
548 
     | 
    
         
             
            - The indescriptive error message that was previously sent when calling methods like `Bot#game=` without an active gateway connection has been replaced with a more descriptive one.
         
     | 
| 
       392 
     | 
    
         
            -
            - The bot's token is now, by default, redacted from any logging output; this can be turned off if desired using the `redact_token` initialization parameter. ([#225](https://github.com/ 
     | 
| 
      
 549 
     | 
    
         
            +
            - The bot's token is now, by default, redacted from any logging output; this can be turned off if desired using the `redact_token` initialization parameter. ([#225](https://github.com/discordrb/discordrb/issues/225) / [#231](https://github.com/discordrb/discordrb/pull/231), thanks @Daniel-Worrall)
         
     | 
| 
       393 
550 
     | 
    
         
             
            - The new rate limit headers are now supported. This will have no real impact on any code using discordrb, but it means discordrb is now considered compliant again. See also [here](https://github.com/discordapp/discord-api-docs/issues/108).
         
     | 
| 
       394 
551 
     | 
    
         
             
            - Rogue presences, i.e. presences without an associated cached member, now print a log message instead of being completely ignored
         
     | 
| 
       395 
552 
     | 
    
         
             
            - A variety of aliases have been added to existing methods.
         
     | 
| 
         @@ -398,119 +555,119 @@ As with 2.0.0, there are some breaking changes! They are, as always, highlighted 
     | 
|
| 
       398 
555 
     | 
    
         | 
| 
       399 
556 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       400 
557 
     | 
    
         
             
            - The almost a year old bug where changing the own user's username would reset its avatar has finally been fixed.
         
     | 
| 
       401 
     | 
    
         
            -
            - The issue where resolving a large server with the owner offline would sometimes cause a stack overflow has been fixed ([#169](https://github.com/ 
     | 
| 
      
 558 
     | 
    
         
            +
            - The issue where resolving a large server with the owner offline would sometimes cause a stack overflow has been fixed ([#169](https://github.com/discordrb/discordrb/issues/169) / [#170](https://github.com/discordrb/discordrb/issues/170) / [#191](https://github.com/discordrb/discordrb/pull/191), thanks @stoodfarback)
         
     | 
| 
       402 
559 
     | 
    
         
             
            - Fixed an issue where if a server had an AFK channel set, but that AFK channel couldn't be connected to, resolving the server (and in turn all objects depending on it) would fail. This likely fixes any random `NoPermission` errors you've ever encountered in your log.
         
     | 
| 
       403 
     | 
    
         
            -
            - A message's author will be resolved over the REST API like other objects in case it's not cached yet. This should fix all instances of "Member not cached even thought it should be". ([#210](https://github.com/ 
     | 
| 
       404 
     | 
    
         
            -
            - Voice state handling has been completely redone, fixing a variety of caching issues. ([#159](https://github.com/ 
     | 
| 
       405 
     | 
    
         
            -
            - Getting a voice channel's users no longer does a chunk request ([#142](https://github.com/ 
     | 
| 
      
 560 
     | 
    
         
            +
            - A message's author will be resolved over the REST API like other objects in case it's not cached yet. This should fix all instances of "Member not cached even thought it should be". ([#210](https://github.com/discordrb/discordrb/pull/210), thanks @megumisonoda)
         
     | 
| 
      
 561 
     | 
    
         
            +
            - Voice state handling has been completely redone, fixing a variety of caching issues. ([#159](https://github.com/discordrb/discordrb/issues/159))
         
     | 
| 
      
 562 
     | 
    
         
            +
            - Getting a voice channel's users no longer does a chunk request ([#142](https://github.com/discordrb/discordrb/issues/142))
         
     | 
| 
       406 
563 
     | 
    
         
             
            - `Channel#define_overwrite` can now be used to define user overwrites, apparently that didn't work at all before
         
     | 
| 
       407 
     | 
    
         
            -
            - Nested command chains where an inner command doesn't exist now no longer crash the command chain handler ([#215](https://github.com/ 
     | 
| 
       408 
     | 
    
         
            -
            - Gateway errors should no longer spam the console ([#141](https://github.com/ 
     | 
| 
      
 564 
     | 
    
         
            +
            - Nested command chains where an inner command doesn't exist now no longer crash the command chain handler ([#215](https://github.com/discordrb/discordrb/issues/215))
         
     | 
| 
      
 565 
     | 
    
         
            +
            - Gateway errors should no longer spam the console ([#141](https://github.com/discordrb/discordrb/issues/141) / [#148](https://github.com/discordrb/discordrb/pull/148), thanks @meew0)
         
     | 
| 
       409 
566 
     | 
    
         
             
            - Role hoisting (both setting and reading it) should now work properly
         
     | 
| 
       410 
567 
     | 
    
         
             
            - The `VoiceBot#stop_playing` method should now work more predictably
         
     | 
| 
       411 
     | 
    
         
            -
            - Voice states with a nil channel should no longer crash when accessed ([#183](https://github.com/ 
     | 
| 
      
 568 
     | 
    
         
            +
            - Voice states with a nil channel should no longer crash when accessed ([#183](https://github.com/discordrb/discordrb/pull/183), thanks @Apexal)
         
     | 
| 
       412 
569 
     | 
    
         
             
            - A latent bug in how PM channels were cached is fixed, previously they were cached twice - once by channel ID and once by recipient ID. Now they're only cached by recipient ID.
         
     | 
| 
       413 
570 
     | 
    
         
             
            - Two problems in how Discord outages are handled are now fixed; the bot should now no longer break when one happens. Specifically, the fixed problems are:
         
     | 
| 
       414 
571 
     | 
    
         
             
              - `GUILD_DELETE` events for unavailable servers are now ignored
         
     | 
| 
       415 
572 
     | 
    
         
             
              - Opcode 9 packets which are received while no session currently exists are handled correctly
         
     | 
| 
       416 
     | 
    
         
            -
            - A possible regression in PM channel creation was fixed. ([#227](https://github.com/ 
     | 
| 
      
 573 
     | 
    
         
            +
            - A possible regression in PM channel creation was fixed. ([#227](https://github.com/discordrb/discordrb/issues/227) / [#228](https://github.com/discordrb/discordrb/pull/228), thanks @heimidal)
         
     | 
| 
       417 
574 
     | 
    
         | 
| 
       418 
575 
     | 
    
         
             
            ## [2.1.3] - 2016-06-11
         
     | 
| 
       419 
     | 
    
         
            -
            [2.1.3]: https://github.com/ 
     | 
| 
      
 576 
     | 
    
         
            +
            [2.1.3]: https://github.com/discordrb/discordrb/releases/tag/v2.1.3
         
     | 
| 
       420 
577 
     | 
    
         | 
| 
       421 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 578 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.1.2...v2.1.3)
         
     | 
| 
       422 
579 
     | 
    
         | 
| 
       423 
580 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       424 
     | 
    
         
            -
            - Various messages that were just printed to stdout that should have been using the `Logger` system now do ([#132](https://github.com/ 
     | 
| 
       425 
     | 
    
         
            -
            - A mistake in the documentation was fixed ([#140](https://github.com/ 
     | 
| 
       426 
     | 
    
         
            -
            - Handling of the `GUILD_MEMBER_DELETE` gateway event should now work even if, for whatever reason, Discord sends an invalid server ID ([#129](https://github.com/ 
     | 
| 
       427 
     | 
    
         
            -
            - If the processing of a particular voice packet takes too long, the user will now be warned instead of an error being raised ([#134](https://github.com/ 
     | 
| 
      
 581 
     | 
    
         
            +
            - Various messages that were just printed to stdout that should have been using the `Logger` system now do ([#132](https://github.com/discordrb/discordrb/issues/132) and [#133](https://github.com/discordrb/discordrb/pull/133), thanks @PoVa)
         
     | 
| 
      
 582 
     | 
    
         
            +
            - A mistake in the documentation was fixed ([#140](https://github.com/discordrb/discordrb/issues/140))
         
     | 
| 
      
 583 
     | 
    
         
            +
            - Handling of the `GUILD_MEMBER_DELETE` gateway event should now work even if, for whatever reason, Discord sends an invalid server ID ([#129](https://github.com/discordrb/discordrb/issues/129))
         
     | 
| 
      
 584 
     | 
    
         
            +
            - If the processing of a particular voice packet takes too long, the user will now be warned instead of an error being raised ([#134](https://github.com/discordrb/discordrb/issues/134))
         
     | 
| 
       428 
585 
     | 
    
         | 
| 
       429 
586 
     | 
    
         
             
            ## [2.1.2] - 2016-05-29
         
     | 
| 
       430 
     | 
    
         
            -
            [2.1.2]: https://github.com/ 
     | 
| 
      
 587 
     | 
    
         
            +
            [2.1.2]: https://github.com/discordrb/discordrb/releases/tag/v2.1.2
         
     | 
| 
       431 
588 
     | 
    
         | 
| 
       432 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 589 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.1.1...v2.1.2)
         
     | 
| 
       433 
590 
     | 
    
         | 
| 
       434 
591 
     | 
    
         
             
            ### Added
         
     | 
| 
       435 
592 
     | 
    
         
             
            - A reader was added (`Bot#awaits`) to read the hash of awaits, so ones that aren't necessary anymore can be deleted.
         
     | 
| 
       436 
     | 
    
         
            -
            - `Channel#prune` now uses the bulk delete endpoint which means it will be much faster and no longer rate limited ([#118](https://github.com/ 
     | 
| 
      
 593 
     | 
    
         
            +
            - `Channel#prune` now uses the bulk delete endpoint which means it will be much faster and no longer rate limited ([#118](https://github.com/discordrb/discordrb/pull/118), thanks @snapcase)
         
     | 
| 
       437 
594 
     | 
    
         | 
| 
       438 
595 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       439 
596 
     | 
    
         
             
            - A few unresolved links in the documentation were fixed.
         
     | 
| 
       440 
597 
     | 
    
         
             
            - The tracking of streamed servers was updated so that very long lists of servers should now all be processed.
         
     | 
| 
       441 
     | 
    
         
            -
            - Resolution methods now return nil if the object to resolve can't be found, which should alleviate some rare caching problems ([#124](https://github.com/ 
     | 
| 
       442 
     | 
    
         
            -
            - In the rare event that Discord sends a voice state update for a nonexistent member, there should no longer be a gateway error ([#125](https://github.com/ 
     | 
| 
       443 
     | 
    
         
            -
            - Network errors (`EPIPE` and the like) should no longer cause an exception while processing ([#127](https://github.com/ 
     | 
| 
      
 598 
     | 
    
         
            +
            - Resolution methods now return nil if the object to resolve can't be found, which should alleviate some rare caching problems ([#124](https://github.com/discordrb/discordrb/pull/124), thanks @Snazzah)
         
     | 
| 
      
 599 
     | 
    
         
            +
            - In the rare event that Discord sends a voice state update for a nonexistent member, there should no longer be a gateway error ([#125](https://github.com/discordrb/discordrb/issues/125))
         
     | 
| 
      
 600 
     | 
    
         
            +
            - Network errors (`EPIPE` and the like) should no longer cause an exception while processing ([#127](https://github.com/discordrb/discordrb/issues/127))
         
     | 
| 
       444 
601 
     | 
    
         
             
            - Uncached members in messages are now logged.
         
     | 
| 
       445 
602 
     | 
    
         | 
| 
       446 
603 
     | 
    
         
             
            ## [2.1.1] - 2016-05-08
         
     | 
| 
       447 
     | 
    
         
            -
            [2.1.1]: https://github.com/ 
     | 
| 
      
 604 
     | 
    
         
            +
            [2.1.1]: https://github.com/discordrb/discordrb/releases/tag/v2.1.1
         
     | 
| 
       448 
605 
     | 
    
         | 
| 
       449 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 606 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.1.0...v2.1.1)
         
     | 
| 
       450 
607 
     | 
    
         | 
| 
       451 
608 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       452 
     | 
    
         
            -
            - Fixed a caching error that occurred when deleting roles ([#113](https://github.com/ 
     | 
| 
       453 
     | 
    
         
            -
            - Commands should no longer be triggered with nil authors ([#114](https://github.com/ 
     | 
| 
      
 609 
     | 
    
         
            +
            - Fixed a caching error that occurred when deleting roles ([#113](https://github.com/discordrb/discordrb/issues/113))
         
     | 
| 
      
 610 
     | 
    
         
            +
            - Commands should no longer be triggered with nil authors ([#114](https://github.com/discordrb/discordrb/issues/114))
         
     | 
| 
       454 
611 
     | 
    
         | 
| 
       455 
612 
     | 
    
         
             
            ## [2.1.0] - 2016-04-30
         
     | 
| 
       456 
     | 
    
         
            -
            [2.1.0]: https://github.com/ 
     | 
| 
      
 613 
     | 
    
         
            +
            [2.1.0]: https://github.com/discordrb/discordrb/releases/tag/v2.1.0
         
     | 
| 
       457 
614 
     | 
    
         | 
| 
       458 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 615 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.0.4...v2.1.0)
         
     | 
| 
       459 
616 
     | 
    
         | 
| 
       460 
617 
     | 
    
         
             
            ### Added
         
     | 
| 
       461 
     | 
    
         
            -
            - API support for the April 29 Discord update, which was the first feature update in a while with more than a few additions to the API, was added. This includes: ([#111](https://github.com/ 
     | 
| 
      
 618 
     | 
    
         
            +
            - API support for the April 29 Discord update, which was the first feature update in a while with more than a few additions to the API, was added. This includes: ([#111](https://github.com/discordrb/discordrb/pull/111))
         
     | 
| 
       462 
619 
     | 
    
         
             
              - Members' nicknames can now be set and read (`Member#nick`) and updates to them are being tracked.
         
     | 
| 
       463 
620 
     | 
    
         
             
              - Roles now have a `mentionable?` property and a `mention` utility method.
         
     | 
| 
       464 
621 
     | 
    
         
             
              - `Message` now tracks a message's role mentions.
         
     | 
| 
       465 
622 
     | 
    
         
             
            - The internal REST rate limit handler was updated:
         
     | 
| 
       466 
     | 
    
         
            -
              - It now tracks message rate limits server wide to properly handle new bot account rate limits. ([#100](https://github.com/ 
     | 
| 
      
 623 
     | 
    
         
            +
              - It now tracks message rate limits server wide to properly handle new bot account rate limits. ([#100](https://github.com/discordrb/discordrb/issues/100))
         
     | 
| 
       467 
624 
     | 
    
         
             
              - It now keeps track of all requests, even those that are known not to be rate limited (it just won't do anything to them). This allows for more flexibility should future rate limits be added.
         
     | 
| 
       468 
     | 
    
         
            -
            - Guild sharding is now supported using the optional `shard_id` and `num_shards` to bot initializers. Read about it here: https://github.com/discordapp/discord-api-docs/issues/17 ([#98](https://github.com/ 
     | 
| 
       469 
     | 
    
         
            -
            - Commands can now require users to have specific action permissions to be able to execute them using the `:required_permissions` attribute. ([#104](https://github.com/ 
     | 
| 
       470 
     | 
    
         
            -
            - A `heartbeat` event was added that gets triggered every now and then to allow for roughly periodic actions. ([#110](https://github.com/ 
     | 
| 
       471 
     | 
    
         
            -
            - Prefixes are now more flexible in the format they can have - arrays and callables are now allowed as well. Read the documentation for more info.([#107](https://github.com/ 
     | 
| 
      
 625 
     | 
    
         
            +
            - Guild sharding is now supported using the optional `shard_id` and `num_shards` to bot initializers. Read about it here: https://github.com/discordapp/discord-api-docs/issues/17 ([#98](https://github.com/discordrb/discordrb/issues/98))
         
     | 
| 
      
 626 
     | 
    
         
            +
            - Commands can now require users to have specific action permissions to be able to execute them using the `:required_permissions` attribute. ([#104](https://github.com/discordrb/discordrb/issues/104) / [#112](https://github.com/discordrb/discordrb/pull/112))
         
     | 
| 
      
 627 
     | 
    
         
            +
            - A `heartbeat` event was added that gets triggered every now and then to allow for roughly periodic actions. ([#110](https://github.com/discordrb/discordrb/pull/110))
         
     | 
| 
      
 628 
     | 
    
         
            +
            - Prefixes are now more flexible in the format they can have - arrays and callables are now allowed as well. Read the documentation for more info.([#107](https://github.com/discordrb/discordrb/issues/107) / [#109](https://github.com/discordrb/discordrb/pull/109))
         
     | 
| 
       472 
629 
     | 
    
         | 
| 
       473 
630 
     | 
    
         
             
            ## [2.0.4] - 2016-04-19
         
     | 
| 
       474 
     | 
    
         
            -
            [2.0.4]: https://github.com/ 
     | 
| 
      
 631 
     | 
    
         
            +
            [2.0.4]: https://github.com/discordrb/discordrb/releases/tag/v2.0.4
         
     | 
| 
       475 
632 
     | 
    
         | 
| 
       476 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 633 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.0.3...v2.0.4)
         
     | 
| 
       477 
634 
     | 
    
         | 
| 
       478 
635 
     | 
    
         
             
            ### Added
         
     | 
| 
       479 
     | 
    
         
            -
            - Added a utility method `Invite#url` ([#86](https://github.com/ 
     | 
| 
      
 636 
     | 
    
         
            +
            - Added a utility method `Invite#url` ([#86](https://github.com/discordrb/discordrb/issues/86)/[#101](https://github.com/discordrb/discordrb/pull/101), thanks @PoVa)
         
     | 
| 
       480 
637 
     | 
    
         | 
| 
       481 
638 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       482 
     | 
    
         
            -
            - Fix a caching inconsistency where a server's channels and a bot's channels wouldn't be identical. This caused server channels to not update properly ([#105](https://github.com/ 
     | 
| 
       483 
     | 
    
         
            -
            - Setting avatars should now work again on Windows ([#96](https://github.com/ 
     | 
| 
       484 
     | 
    
         
            -
            - Message edit events should no longer be raised with nil authors ([#95](https://github.com/ 
     | 
| 
       485 
     | 
    
         
            -
            - Invites can now be created again ([#87](https://github.com/ 
     | 
| 
       486 
     | 
    
         
            -
            - Voice states are now preserved for chunked members, fixes an issue where a voice channel's users would ignore all voice states that occurred before the call ([#103](https://github.com/ 
     | 
| 
      
 639 
     | 
    
         
            +
            - Fix a caching inconsistency where a server's channels and a bot's channels wouldn't be identical. This caused server channels to not update properly ([#105](https://github.com/discordrb/discordrb/issues/105))
         
     | 
| 
      
 640 
     | 
    
         
            +
            - Setting avatars should now work again on Windows ([#96](https://github.com/discordrb/discordrb/issues/96))
         
     | 
| 
      
 641 
     | 
    
         
            +
            - Message edit events should no longer be raised with nil authors ([#95](https://github.com/discordrb/discordrb/issues/95))
         
     | 
| 
      
 642 
     | 
    
         
            +
            - Invites can now be created again ([#87](https://github.com/discordrb/discordrb/issues/87))
         
     | 
| 
      
 643 
     | 
    
         
            +
            - Voice states are now preserved for chunked members, fixes an issue where a voice channel's users would ignore all voice states that occurred before the call ([#103](https://github.com/discordrb/discordrb/issues/103))
         
     | 
| 
       487 
644 
     | 
    
         
             
            - Fixed some possible problems with heartbeats not being sent with unstable connections
         
     | 
| 
       488 
645 
     | 
    
         | 
| 
       489 
646 
     | 
    
         
             
            ## [2.0.3] - 2016-04-15
         
     | 
| 
       490 
     | 
    
         
            -
            [2.0.3]: https://github.com/ 
     | 
| 
      
 647 
     | 
    
         
            +
            [2.0.3]: https://github.com/discordrb/discordrb/releases/tag/v2.0.3
         
     | 
| 
       491 
648 
     | 
    
         | 
| 
       492 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 649 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.0.2...v2.0.3)
         
     | 
| 
       493 
650 
     | 
    
         | 
| 
       494 
651 
     | 
    
         
             
            ### Added
         
     | 
| 
       495 
     | 
    
         
            -
            - All examples now fully use v2 ([#92](https://github.com/ 
     | 
| 
       496 
     | 
    
         
            -
            - The message that occurs when a command is missing permission can now be changed or disabled ([#94](https://github.com/ 
     | 
| 
       497 
     | 
    
         
            -
            - The log message that occurs when you disconnect from the WebSocket is now more compact ([#90](https://github.com/ 
     | 
| 
      
 652 
     | 
    
         
            +
            - All examples now fully use v2 ([#92](https://github.com/discordrb/discordrb/pull/92), thanks @snapcase)
         
     | 
| 
      
 653 
     | 
    
         
            +
            - The message that occurs when a command is missing permission can now be changed or disabled ([#94](https://github.com/discordrb/discordrb/pull/94), thanks @snapcase)
         
     | 
| 
      
 654 
     | 
    
         
            +
            - The log message that occurs when you disconnect from the WebSocket is now more compact ([#90](https://github.com/discordrb/discordrb/issues/90))
         
     | 
| 
       498 
655 
     | 
    
         
             
            - `Bot#ignored?` now exists to check whether a user is ignored
         
     | 
| 
       499 
656 
     | 
    
         | 
| 
       500 
657 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       501 
     | 
    
         
            -
            - A problem where getting channel history would sometimes cause an exception has been fixed ([#88](https://github.com/ 
     | 
| 
       502 
     | 
    
         
            -
            - `split_message` should now behave correctly in a specific edge case ([#85](https://github.com/ 
     | 
| 
      
 658 
     | 
    
         
            +
            - A problem where getting channel history would sometimes cause an exception has been fixed ([#88](https://github.com/discordrb/discordrb/issues/88))
         
     | 
| 
      
 659 
     | 
    
         
            +
            - `split_message` should now behave correctly in a specific edge case ([#85](https://github.com/discordrb/discordrb/pull/85), thanks @AnhNhan)
         
     | 
| 
       503 
660 
     | 
    
         
             
            - DCA playback should no longer cause an error when playback ends due to a specific reason
         
     | 
| 
       504 
661 
     | 
    
         | 
| 
       505 
662 
     | 
    
         
             
            ## [2.0.2] - 2016-04-10
         
     | 
| 
       506 
     | 
    
         
            -
            [2.0.2]: https://github.com/ 
     | 
| 
      
 663 
     | 
    
         
            +
            [2.0.2]: https://github.com/discordrb/discordrb/releases/tag/v2.0.2
         
     | 
| 
       507 
664 
     | 
    
         | 
| 
       508 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 665 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.0.1...v2.0.2)
         
     | 
| 
       509 
666 
     | 
    
         | 
| 
       510 
667 
     | 
    
         
             
            ### Added
         
     | 
| 
       511 
     | 
    
         
            -
            - Added `Server#text_channels` and `#voice_channels` ([#79](https://github.com/ 
     | 
| 
       512 
     | 
    
         
            -
            - Added `Server#online_users` ([#80](https://github.com/ 
     | 
| 
       513 
     | 
    
         
            -
            - Added `Member#role?` ([#83](https://github.com/ 
     | 
| 
      
 668 
     | 
    
         
            +
            - Added `Server#text_channels` and `#voice_channels` ([#79](https://github.com/discordrb/discordrb/issues/79))
         
     | 
| 
      
 669 
     | 
    
         
            +
            - Added `Server#online_users` ([#80](https://github.com/discordrb/discordrb/issues/80))
         
     | 
| 
      
 670 
     | 
    
         
            +
            - Added `Member#role?` ([#83](https://github.com/discordrb/discordrb/issues/83))
         
     | 
| 
       514 
671 
     | 
    
         
             
            - Added three utility methods `User#online?`, `#offline?`, and `#idle?`
         
     | 
| 
       515 
672 
     | 
    
         
             
            - `Bot#send_message` can now take channel objects as well as the ID
         
     | 
| 
       516 
673 
     | 
    
         | 
| 
         @@ -522,12 +679,12 @@ As with 2.0.0, there are some breaking changes! They are, as always, highlighted 
     | 
|
| 
       522 
679 
     | 
    
         
             
            - Fixed an error where rarely a server's owner wouldn't be initialized correctly
         
     | 
| 
       523 
680 
     | 
    
         | 
| 
       524 
681 
     | 
    
         
             
            ## [2.0.1] - 2016-04-10
         
     | 
| 
       525 
     | 
    
         
            -
            [2.0.1]: https://github.com/ 
     | 
| 
      
 682 
     | 
    
         
            +
            [2.0.1]: https://github.com/discordrb/discordrb/releases/tag/v2.0.1
         
     | 
| 
       526 
683 
     | 
    
         | 
| 
       527 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 684 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.0.0...v2.0.1)
         
     | 
| 
       528 
685 
     | 
    
         | 
| 
       529 
686 
     | 
    
         
             
            ### Added
         
     | 
| 
       530 
     | 
    
         
            -
            - Added some more examples ([#75](https://github.com/ 
     | 
| 
      
 687 
     | 
    
         
            +
            - Added some more examples ([#75](https://github.com/discordrb/discordrb/pull/75), thanks @greenbigfrog)
         
     | 
| 
       531 
688 
     | 
    
         
             
            - Users can now be ignored from messages at gateway level (`Bot#ignore_user`, `Bot#unignore_user`)
         
     | 
| 
       532 
689 
     | 
    
         
             
            - `Member#add_role` and `Member#remove_role` were re-added from User - they were missing before
         
     | 
| 
       533 
690 
     | 
    
         | 
| 
         @@ -538,9 +695,9 @@ As with 2.0.0, there are some breaking changes! They are, as always, highlighted 
     | 
|
| 
       538 
695 
     | 
    
         
             
            - Fixed a bug where playing something right after connecting to voice would sometimes cause the encryption key to not be set
         
     | 
| 
       539 
696 
     | 
    
         | 
| 
       540 
697 
     | 
    
         
             
            ## [2.0.0] - 2016-04-08
         
     | 
| 
       541 
     | 
    
         
            -
            [2.0.0]: https://github.com/ 
     | 
| 
      
 698 
     | 
    
         
            +
            [2.0.0]: https://github.com/discordrb/discordrb/releases/tag/v2.0.0
         
     | 
| 
       542 
699 
     | 
    
         | 
| 
       543 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 700 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.8.1...v2.0.0)
         
     | 
| 
       544 
701 
     | 
    
         | 
| 
       545 
702 
     | 
    
         
             
            ### Added
         
     | 
| 
       546 
703 
     | 
    
         
             
            This is the first major update with some breaking changes! Those are highlighted in bold with migration advice after them. Ask in the Discord channel (see the README) if you have questions.
         
     | 
| 
         @@ -601,8 +758,8 @@ puts bot.profile.username 
     | 
|
| 
       601 
758 
     | 
    
         
             
             - The `User#discriminator` attribute now has more aliases (`#tag`, `#discord_tag`, `#discrim`)
         
     | 
| 
       602 
759 
     | 
    
         
             
             - `Permission` objects can now be created or set even without a role writer, useful to quickly get byte representations of permissions
         
     | 
| 
       603 
760 
     | 
    
         
             
             - Permission overwrites can now be defined more easily using the utility method `Channel#define_overwrite`
         
     | 
| 
       604 
     | 
    
         
            -
             - `Message`s returned at the end of commands (for example using `User#pm` or `Message#edit`) will now no longer be sent ([#66](https://github.com/ 
     | 
| 
       605 
     | 
    
         
            -
             - The `:with_text` event attribute is now aliased to `:exact_text` ([#65](https://github.com/ 
     | 
| 
      
 761 
     | 
    
         
            +
             - `Message`s returned at the end of commands (for example using `User#pm` or `Message#edit`) will now no longer be sent ([#66](https://github.com/discordrb/discordrb/issues/66))
         
     | 
| 
      
 762 
     | 
    
         
            +
             - The `:with_text` event attribute is now aliased to `:exact_text` ([#65](https://github.com/discordrb/discordrb/issues/65))
         
     | 
| 
       606 
763 
     | 
    
         
             
             - Server icons (`Server#icon=`) can now be set just like avatars (`Profile#avatar=`)
         
     | 
| 
       607 
764 
     | 
    
         
             
             - Lots of comments were added to the examples and some bugs fixed
         
     | 
| 
       608 
765 
     | 
    
         
             
             - The overall performance and memory usage was improved, especially on Ruby 2.3 (using the new frozen string literal comment)
         
     | 
| 
         @@ -613,23 +770,23 @@ puts bot.profile.username 
     | 
|
| 
       613 
770 
     | 
    
         
             
            - **Command bots no longer respond when there are spaces between the prefix and the command.** Because this behaviour may be desirable, a `spaces_allowed` attribute was added to the CommandBot initializer that can be set to true to re-enable this behaviour.
         
     | 
| 
       614 
771 
     | 
    
         
             
            - Permission calculation (`User#permission?`) has been thoroughly rewritten and should now account for edge cases like server owners and Manage Permissions.
         
     | 
| 
       615 
772 
     | 
    
         
             
            - The gateway reconnect logic now uses a correct falloff system - before it would start at 1 second between attempts and immediately jump to 120. Now the transition is more smooth.
         
     | 
| 
       616 
     | 
    
         
            -
            - Commands with aliases now show up correctly in the auto-generated help command ([#72](https://github.com/ 
     | 
| 
       617 
     | 
    
         
            -
            - The auto-generated help command can now actually be disabled by setting the corresponding attribute to nil ([#73](https://github.com/ 
     | 
| 
      
 773 
     | 
    
         
            +
            - Commands with aliases now show up correctly in the auto-generated help command ([#72](https://github.com/discordrb/discordrb/issues/72))
         
     | 
| 
      
 774 
     | 
    
         
            +
            - The auto-generated help command can now actually be disabled by setting the corresponding attribute to nil ([#73](https://github.com/discordrb/discordrb/issues/73))
         
     | 
| 
       618 
775 
     | 
    
         
             
            - Including empty containers now does nothing instead of raising an error
         
     | 
| 
       619 
776 
     | 
    
         
             
            - Command bots now obey `should_parse_self`
         
     | 
| 
       620 
777 
     | 
    
         | 
| 
       621 
778 
     | 
    
         
             
            ## [1.8.1] - 2016-03-11
         
     | 
| 
       622 
     | 
    
         
            -
            [1.8.1]: https://github.com/ 
     | 
| 
      
 779 
     | 
    
         
            +
            [1.8.1]: https://github.com/discordrb/discordrb/releases/tag/v1.8.1
         
     | 
| 
       623 
780 
     | 
    
         | 
| 
       624 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 781 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.8.0...v1.8.1)
         
     | 
| 
       625 
782 
     | 
    
         | 
| 
       626 
783 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       627 
784 
     | 
    
         
             
            * Fixed an error (caused by an undocumented API change) that would write a traceback to the console every time someone started typing in a channel invisible to the bot.
         
     | 
| 
       628 
785 
     | 
    
         | 
| 
       629 
786 
     | 
    
         
             
            ## [1.8.0] - 2016-03-11
         
     | 
| 
       630 
     | 
    
         
            -
            [1.8.0]: https://github.com/ 
     | 
| 
      
 787 
     | 
    
         
            +
            [1.8.0]: https://github.com/discordrb/discordrb/releases/tag/v1.8.0
         
     | 
| 
       631 
788 
     | 
    
         | 
| 
       632 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 789 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.5...v1.8.0)
         
     | 
| 
       633 
790 
     | 
    
         | 
| 
       634 
791 
     | 
    
         
             
            ### Added
         
     | 
| 
       635 
792 
     | 
    
         
             
            * The built-in logger has been somewhat redone.
         
     | 
| 
         @@ -648,9 +805,9 @@ puts bot.profile.username 
     | 
|
| 
       648 
805 
     | 
    
         
             
            * Users' voice channels should now always be set if they are in one
         
     | 
| 
       649 
806 
     | 
    
         | 
| 
       650 
807 
     | 
    
         
             
            ## [1.7.5] - 2016-03-03
         
     | 
| 
       651 
     | 
    
         
            -
            [1.7.5]: https://github.com/ 
     | 
| 
      
 808 
     | 
    
         
            +
            [1.7.5]: https://github.com/discordrb/discordrb/releases/tag/v1.7.5
         
     | 
| 
       652 
809 
     | 
    
         | 
| 
       653 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 810 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.4...v1.7.5)
         
     | 
| 
       654 
811 
     | 
    
         | 
| 
       655 
812 
     | 
    
         
             
            ### Changed
         
     | 
| 
       656 
813 
     | 
    
         
             
            * `Channel#send_message` and `Bot#send_message` now have an extra `tts` parameter (false by default) to specify whether the message should use TTS.
         
     | 
| 
         @@ -660,9 +817,9 @@ puts bot.profile.username 
     | 
|
| 
       660 
817 
     | 
    
         
             
            * Manual TTS using `API.send_message` will now work correctly.
         
     | 
| 
       661 
818 
     | 
    
         | 
| 
       662 
819 
     | 
    
         
             
            ## [1.7.4] - 2016-02-28
         
     | 
| 
       663 
     | 
    
         
            -
            [1.7.4]: https://github.com/ 
     | 
| 
      
 820 
     | 
    
         
            +
            [1.7.4]: https://github.com/discordrb/discordrb/releases/tag/v1.7.4
         
     | 
| 
       664 
821 
     | 
    
         | 
| 
       665 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 822 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.3...v1.7.4)
         
     | 
| 
       666 
823 
     | 
    
         | 
| 
       667 
824 
     | 
    
         
             
            ### Added
         
     | 
| 
       668 
825 
     | 
    
         
             
            * Added methods `Channel#text?` and `Channel#voice?` to check a channel's type.
         
     | 
| 
         @@ -674,27 +831,27 @@ puts bot.profile.username 
     | 
|
| 
       674 
831 
     | 
    
         
             
            * Fixed `Profile#avatar=` doing absolutely nothing.
         
     | 
| 
       675 
832 
     | 
    
         | 
| 
       676 
833 
     | 
    
         
             
            ## [1.7.3] - 2016-02-27
         
     | 
| 
       677 
     | 
    
         
            -
            [1.7.3]: https://github.com/ 
     | 
| 
      
 834 
     | 
    
         
            +
            [1.7.3]: https://github.com/discordrb/discordrb/releases/tag/v1.7.3
         
     | 
| 
       678 
835 
     | 
    
         | 
| 
       679 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 836 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.2...v1.7.3)
         
     | 
| 
       680 
837 
     | 
    
         | 
| 
       681 
838 
     | 
    
         
             
            ### Added
         
     | 
| 
       682 
839 
     | 
    
         
             
            * The server banlist can now be accessed more nicely using `Server#bans`.
         
     | 
| 
       683 
840 
     | 
    
         
             
            * Some abstractions for OAuth application creation were added - `bot.create_oauth_application` and `bot.update_oauth_application`. See the docs about how to use them.
         
     | 
| 
       684 
841 
     | 
    
         | 
| 
       685 
842 
     | 
    
         
             
            ## [1.7.2] - 2016-02-25
         
     | 
| 
       686 
     | 
    
         
            -
            [1.7.2]: https://github.com/ 
     | 
| 
      
 843 
     | 
    
         
            +
            [1.7.2]: https://github.com/discordrb/discordrb/releases/tag/v1.7.2
         
     | 
| 
       687 
844 
     | 
    
         | 
| 
       688 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 845 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.1...v1.7.2)
         
     | 
| 
       689 
846 
     | 
    
         | 
| 
       690 
847 
     | 
    
         
             
            ### Changed
         
     | 
| 
       691 
848 
     | 
    
         
             
            * The `bot` object can now be read from all events, not just from command ones.
         
     | 
| 
       692 
849 
     | 
    
         
             
            * You can now set the `filter_volume` on VoiceBot, which corresponds to the old way of doing volume handling, in case the new way is too slow for you.
         
     | 
| 
       693 
850 
     | 
    
         | 
| 
       694 
851 
     | 
    
         
             
            ## [1.7.1] - 2016-02-23
         
     | 
| 
       695 
     | 
    
         
            -
            [1.7.1]: https://github.com/ 
     | 
| 
      
 852 
     | 
    
         
            +
            [1.7.1]: https://github.com/discordrb/discordrb/releases/tag/v1.7.1
         
     | 
| 
       696 
853 
     | 
    
         | 
| 
       697 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 854 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.0...v1.7.1)
         
     | 
| 
       698 
855 
     | 
    
         | 
| 
       699 
856 
     | 
    
         
             
            ### Added
         
     | 
| 
       700 
857 
     | 
    
         
             
            * A `clear!` method was added to EventContainer that removes all events from it, so you can overwrite modules by defining them again. (It's unnecessary for CommandContainers because commands can never be duplicate.)
         
     | 
| 
         @@ -705,28 +862,28 @@ puts bot.profile.username 
     | 
|
| 
       705 
862 
     | 
    
         
             
            * Got rid of the annoying `undefined method 'game' for nil:NilClass` error that sometimes occurred on startup. (It was harmless but now it's gone entirely)
         
     | 
| 
       706 
863 
     | 
    
         | 
| 
       707 
864 
     | 
    
         
             
            ## [1.7.0] - 2016-02-23
         
     | 
| 
       708 
     | 
    
         
            -
            [1.7.0]: https://github.com/ 
     | 
| 
      
 865 
     | 
    
         
            +
            [1.7.0]: https://github.com/discordrb/discordrb/releases/tag/v1.7.0
         
     | 
| 
       709 
866 
     | 
    
         | 
| 
       710 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 867 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.6...v1.7.0)
         
     | 
| 
       711 
868 
     | 
    
         | 
| 
       712 
869 
     | 
    
         
             
            ### Added
         
     | 
| 
       713 
870 
     | 
    
         
             
            * **`bot.find` and `bot.find_user` have had their fuzzy search feature removed because it only caused problems. If you still need it, you can copy the code from the repo's history.** In addition, `find` was renamed to `find_channel` but still exists as a (deprecated) alias.
         
     | 
| 
       714 
     | 
    
         
            -
            * The in-line documentation using Yard is now complete and can be [accessed at RubyDoc](https://www.rubydoc.info/github/ 
     | 
| 
      
 871 
     | 
    
         
            +
            * The in-line documentation using Yard is now complete and can be [accessed at RubyDoc](https://www.rubydoc.info/github/discordrb/discordrb/master/). It's not quite polished yet and some things may be confusing, but it should be mostly usable.
         
     | 
| 
       715 
872 
     | 
    
         
             
            * Events and commands can now be thoroughly modularized using a system I call 'containers'. (TODO: Add a tutorial here later)
         
     | 
| 
       716 
873 
     | 
    
         
             
            * Support for the latest API changes:
         
     | 
| 
       717 
874 
     | 
    
         
             
              * `Server.leave` does something different than `Server.delete`
         
     | 
| 
       718 
875 
     | 
    
         
             
              * The WebSocket connection now uses version 3 of the protocol
         
     | 
| 
       719 
     | 
    
         
            -
            * Voice bots now support playing DCA files using the [`play_dca`](https://www.rubydoc.info/github/ 
     | 
| 
       720 
     | 
    
         
            -
            * The [volume](https://www.rubydoc.info/github/ 
     | 
| 
      
 876 
     | 
    
         
            +
            * Voice bots now support playing DCA files using the [`play_dca`](https://www.rubydoc.info/github/discordrb/discordrb/master/Discordrb%2FVoice%2FVoiceBot%3Aplay_dca) method. (TODO: Add a section to the voice tutorial)
         
     | 
| 
      
 877 
     | 
    
         
            +
            * The [volume](https://www.rubydoc.info/github/discordrb/discordrb/master/Discordrb%2FVoice%2FVoiceBot%3Avolume) of a voice bot can now be changed during playback and not only for future playbacks.
         
     | 
| 
       721 
878 
     | 
    
         
             
            * A `Channel.prune` method was added to quickly delete lots of messages from a channel. (It appears that this is something lots of bots do.)
         
     | 
| 
       722 
     | 
    
         
            -
            * [`Server#members`](https://www.rubydoc.info/github/ 
     | 
| 
       723 
     | 
    
         
            -
            * An attribute [`Server#member_count`](https://www.rubydoc.info/github/ 
     | 
| 
       724 
     | 
    
         
            -
            * An attribute [`Server#large?`](https://www.rubydoc.info/github/ 
     | 
| 
      
 879 
     | 
    
         
            +
            * [`Server#members`](https://www.rubydoc.info/github/discordrb/discordrb/master/Discordrb%2FServer%3Amembers) is now aliased to `users`.
         
     | 
| 
      
 880 
     | 
    
         
            +
            * An attribute [`Server#member_count`](https://www.rubydoc.info/github/discordrb/discordrb/master/Discordrb%2FServer%3Amember_count) was added that is accurate even if chunked members have not been added yet.
         
     | 
| 
      
 881 
     | 
    
         
            +
            * An attribute [`Server#large?`](https://www.rubydoc.info/github/discordrb/discordrb/master/Discordrb%2FServer%3Alarge) was added that is true if a server could possibly have an inaccurate list of members.
         
     | 
| 
       725 
882 
     | 
    
         
             
            * Some more specific error classes have been added to replace the RestClient generic ones.
         
     | 
| 
       726 
883 
     | 
    
         
             
            * Quickly sending a message using the `event << 'text'` syntax now works in every type of message event, not just commands.
         
     | 
| 
       727 
     | 
    
         
            -
            * You can now set the bitrate of sent audio data using `bot.voice.encoder.bitrate = 64000` (see [`Encoder#bitrate=`](https://www.rubydoc.info/github/ 
     | 
| 
       728 
     | 
    
         
            -
            * A rate limiting feature was added to commands - you can define buckets using the [`bucket`](https://www.rubydoc.info/github/ 
     | 
| 
       729 
     | 
    
         
            -
              * A [`SimpleRateLimiter`](https://www.rubydoc.info/github/ 
     | 
| 
      
 884 
     | 
    
         
            +
            * You can now set the bitrate of sent audio data using `bot.voice.encoder.bitrate = 64000` (see [`Encoder#bitrate=`](https://www.rubydoc.info/github/discordrb/discordrb/master/Discordrb/Voice/Encoder#bitrate%3D-instance_method)). Note that sent audio data will always be unaffected by voice channel bitrate settings, those only tell the client at what bitrate it should send.
         
     | 
| 
      
 885 
     | 
    
         
            +
            * A rate limiting feature was added to commands - you can define buckets using the [`bucket`](https://www.rubydoc.info/github/discordrb/discordrb/master/Discordrb%2FCommands%2FRateLimiter%3Abucket) method and use them as a parameter for [`command`](https://www.rubydoc.info/github/discordrb/discordrb/master/Discordrb%2FCommands%2FCommandContainer%3Acommand).
         
     | 
| 
      
 886 
     | 
    
         
            +
              * A [`SimpleRateLimiter`](https://www.rubydoc.info/github/discordrb/discordrb/master/Discordrb/Commands/SimpleRateLimiter) class was also added if you want rate limiting independent from commands (e. g. for events)
         
     | 
| 
       730 
887 
     | 
    
         
             
            * Connecting to the WebSocket now uses an exponential falloff system so we don't spam Discord with requests anymore.
         
     | 
| 
       731 
888 
     | 
    
         
             
            * Debug timestamps are now accurate to milliseconds.
         
     | 
| 
       732 
889 
     | 
    
         | 
| 
         @@ -735,50 +892,50 @@ puts bot.profile.username 
     | 
|
| 
       735 
892 
     | 
    
         
             
            * `break`ing from an event or command will no longer spew `LocalJumpError`s to the console.
         
     | 
| 
       736 
893 
     | 
    
         | 
| 
       737 
894 
     | 
    
         
             
            ## [1.6.6] - 2016-02-13
         
     | 
| 
       738 
     | 
    
         
            -
            [1.6.6]: https://github.com/ 
     | 
| 
      
 895 
     | 
    
         
            +
            [1.6.6]: https://github.com/discordrb/discordrb/releases/tag/v1.6.6
         
     | 
| 
       739 
896 
     | 
    
         | 
| 
       740 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 897 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.5...v1.6.6)
         
     | 
| 
       741 
898 
     | 
    
         | 
| 
       742 
899 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       743 
900 
     | 
    
         
             
            * Fixed a problem that would cause an incompatibility with Ruby 2.1
         
     | 
| 
       744 
901 
     | 
    
         
             
            * Fixed servers sometimes containing duplicate members
         
     | 
| 
       745 
902 
     | 
    
         | 
| 
       746 
903 
     | 
    
         
             
            ## [1.6.5] - 2016-02-12
         
     | 
| 
       747 
     | 
    
         
            -
            [1.6.5]: https://github.com/ 
     | 
| 
      
 904 
     | 
    
         
            +
            [1.6.5]: https://github.com/discordrb/discordrb/releases/tag/v1.6.5
         
     | 
| 
       748 
905 
     | 
    
         | 
| 
       749 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 906 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.4...v1.6.5)
         
     | 
| 
       750 
907 
     | 
    
         | 
| 
       751 
908 
     | 
    
         
             
            ### Changed
         
     | 
| 
       752 
909 
     | 
    
         
             
            * The bot will now request the users that would previously be sent all in one READY packet in multiple chunks. This improves startup time slightly and ensures compatibility with the latest Discord change, but it also means that some users won't be in server members lists until a while after creation (usually a couple seconds at most).
         
     | 
| 
       753 
910 
     | 
    
         | 
| 
       754 
911 
     | 
    
         
             
            ## [1.6.4] - 2016-02-10
         
     | 
| 
       755 
     | 
    
         
            -
            [1.6.4]: https://github.com/ 
     | 
| 
      
 912 
     | 
    
         
            +
            [1.6.4]: https://github.com/discordrb/discordrb/releases/tag/v1.6.4
         
     | 
| 
       756 
913 
     | 
    
         | 
| 
       757 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 914 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.3...v1.6.4)
         
     | 
| 
       758 
915 
     | 
    
         | 
| 
       759 
916 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       760 
917 
     | 
    
         
             
            * Fixed a bug that made the joining of servers using an invite impossible.
         
     | 
| 
       761 
918 
     | 
    
         | 
| 
       762 
919 
     | 
    
         
             
            ## [1.6.3] - 2016-02-08
         
     | 
| 
       763 
     | 
    
         
            -
            [1.6.3]: https://github.com/ 
     | 
| 
      
 920 
     | 
    
         
            +
            [1.6.3]: https://github.com/discordrb/discordrb/releases/tag/v1.6.3
         
     | 
| 
       764 
921 
     | 
    
         | 
| 
       765 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 922 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.2...v1.6.3)
         
     | 
| 
       766 
923 
     | 
    
         | 
| 
       767 
924 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       768 
925 
     | 
    
         
             
            * Fixed a bug that prevented the banning of users over the API
         
     | 
| 
       769 
926 
     | 
    
         | 
| 
       770 
927 
     | 
    
         
             
            ## [1.6.2] - 2016-02-06
         
     | 
| 
       771 
     | 
    
         
            -
            [1.6.2]: https://github.com/ 
     | 
| 
      
 928 
     | 
    
         
            +
            [1.6.2]: https://github.com/discordrb/discordrb/releases/tag/v1.6.2
         
     | 
| 
       772 
929 
     | 
    
         | 
| 
       773 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 930 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.1...v1.6.2)
         
     | 
| 
       774 
931 
     | 
    
         | 
| 
       775 
932 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       776 
933 
     | 
    
         
             
            * RbNaCl is now installed directly instead of the wrapper that also contains libsodium. This has the disadvantage that you will have to install libsodium manually but at least it's not broken on Windows anymore.
         
     | 
| 
       777 
934 
     | 
    
         | 
| 
       778 
935 
     | 
    
         
             
            ## [1.6.1] - 2016-02-04
         
     | 
| 
       779 
     | 
    
         
            -
            [1.6.1]: https://github.com/ 
     | 
| 
      
 936 
     | 
    
         
            +
            [1.6.1]: https://github.com/discordrb/discordrb/releases/tag/v1.6.1
         
     | 
| 
       780 
937 
     | 
    
         | 
| 
       781 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 938 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.0...v1.6.1)
         
     | 
| 
       782 
939 
     | 
    
         | 
| 
       783 
940 
     | 
    
         
             
            ### Changed
         
     | 
| 
       784 
941 
     | 
    
         
             
            * It's now possible to prevent the `READY` packet from being printed in debug mode, run `bot.suppress_ready_debug` once before the `bot.run` to do it.
         
     | 
| 
         @@ -787,9 +944,9 @@ puts bot.profile.username 
     | 
|
| 
       787 
944 
     | 
    
         
             
            * Token cache files with invalid JSON syntax will no longer crash the bot at login.
         
     | 
| 
       788 
945 
     | 
    
         | 
| 
       789 
946 
     | 
    
         
             
            ## [1.6.0] - 2016-02-01
         
     | 
| 
       790 
     | 
    
         
            -
            [1.6.0]: https://github.com/ 
     | 
| 
      
 947 
     | 
    
         
            +
            [1.6.0]: https://github.com/discordrb/discordrb/releases/tag/v1.6.0
         
     | 
| 
       791 
948 
     | 
    
         | 
| 
       792 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 949 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.5.4...v1.6.0)
         
     | 
| 
       793 
950 
     | 
    
         | 
| 
       794 
951 
     | 
    
         
             
            ### Added
         
     | 
| 
       795 
952 
     | 
    
         
             
            * The inline documentation using YARD was greatly improved and is now mostly usable, at least for the data classes and voice classes. It's still not complete enough to be released on GitHub, but you can build it yourself using [YARD](https://yardoc.org/).
         
     | 
| 
         @@ -818,9 +975,9 @@ puts bot.profile.username 
     | 
|
| 
       818 
975 
     | 
    
         
             
            * The `inviter` of an `Invite` will now be `nil` instead of causing an exception when it doesn't exist in the invite data.
         
     | 
| 
       819 
976 
     | 
    
         | 
| 
       820 
977 
     | 
    
         
             
            ## [1.5.4] - 2016-01-16
         
     | 
| 
       821 
     | 
    
         
            -
            [1.5.4]: https://github.com/ 
     | 
| 
      
 978 
     | 
    
         
            +
            [1.5.4]: https://github.com/discordrb/discordrb/releases/tag/v1.5.4
         
     | 
| 
       822 
979 
     | 
    
         | 
| 
       823 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 980 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.5.3...v1.5.4)
         
     | 
| 
       824 
981 
     | 
    
         | 
| 
       825 
982 
     | 
    
         
             
            ### Changed
         
     | 
| 
       826 
983 
     | 
    
         
             
            * The `opus-ruby` and `levenshtein` dependencies are now optional - if you don't need them, it won't crash immediately (only when you try to use voice / `find` with a threshold > 0, respectively)
         
     | 
| 
         @@ -830,18 +987,18 @@ puts bot.profile.username 
     | 
|
| 
       830 
987 
     | 
    
         
             
            * `websocket-client-simple`, which is required for voice, is now specified in the dependencies.
         
     | 
| 
       831 
988 
     | 
    
         | 
| 
       832 
989 
     | 
    
         
             
            ## [1.5.3] - 2016-01-11
         
     | 
| 
       833 
     | 
    
         
            -
            [1.5.3]: https://github.com/ 
     | 
| 
      
 990 
     | 
    
         
            +
            [1.5.3]: https://github.com/discordrb/discordrb/releases/tag/v1.5.3
         
     | 
| 
       834 
991 
     | 
    
         | 
| 
       835 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 992 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.5.2...v1.5.3)
         
     | 
| 
       836 
993 
     | 
    
         | 
| 
       837 
994 
     | 
    
         
             
            ### Added
         
     | 
| 
       838 
995 
     | 
    
         
             
            * Voice bot length adjustments are now configurable using `bot.voice.adjust_interval` and `bot.voice.adjust_offset` (make sure the latter is less than the first, or no adjustment will be performed at all)
         
     | 
| 
       839 
996 
     | 
    
         
             
            * Length adjustments can now be made more smooth using `bot.voice.adjust_average` (true allows for more smooth adjustments, *may* improve stutteriness but might make it worse as well)
         
     | 
| 
       840 
997 
     | 
    
         | 
| 
       841 
998 
     | 
    
         
             
            ## [1.5.2] - 2016-01-11
         
     | 
| 
       842 
     | 
    
         
            -
            [1.5.2]: https://github.com/ 
     | 
| 
      
 999 
     | 
    
         
            +
            [1.5.2]: https://github.com/discordrb/discordrb/releases/tag/v1.5.2
         
     | 
| 
       843 
1000 
     | 
    
         | 
| 
       844 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1001 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.5.1...v1.5.2)
         
     | 
| 
       845 
1002 
     | 
    
         | 
| 
       846 
1003 
     | 
    
         
             
            ### Added
         
     | 
| 
       847 
1004 
     | 
    
         
             
            * `bot.voice_connect` can now use a channel ID directly.
         
     | 
| 
         @@ -854,17 +1011,17 @@ puts bot.profile.username 
     | 
|
| 
       854 
1011 
     | 
    
         
             
            * Fix a concurrency issue where `VoiceBot` would try to read from nil
         
     | 
| 
       855 
1012 
     | 
    
         | 
| 
       856 
1013 
     | 
    
         
             
            ## [1.5.1] - 2016-01-10
         
     | 
| 
       857 
     | 
    
         
            -
            [1.5.1]: https://github.com/ 
     | 
| 
      
 1014 
     | 
    
         
            +
            [1.5.1]: https://github.com/discordrb/discordrb/releases/tag/v1.5.1
         
     | 
| 
       858 
1015 
     | 
    
         | 
| 
       859 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1016 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.5.0...v1.5.1)
         
     | 
| 
       860 
1017 
     | 
    
         | 
| 
       861 
1018 
     | 
    
         
             
            ### Added
         
     | 
| 
       862 
1019 
     | 
    
         
             
            * The connection to voice was made more reliable. I haven't experienced any issues with it myself but I got reports where `recv` worked better than `recvmsg`.
         
     | 
| 
       863 
1020 
     | 
    
         | 
| 
       864 
1021 
     | 
    
         
             
            ## [1.5.0] - 2016-01-10
         
     | 
| 
       865 
     | 
    
         
            -
            [1.5.0]: https://github.com/ 
     | 
| 
      
 1022 
     | 
    
         
            +
            [1.5.0]: https://github.com/discordrb/discordrb/releases/tag/v1.5.0
         
     | 
| 
       866 
1023 
     | 
    
         | 
| 
       867 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1024 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.8...v1.5.0)
         
     | 
| 
       868 
1025 
     | 
    
         | 
| 
       869 
1026 
     | 
    
         
             
            ### Added
         
     | 
| 
       870 
1027 
     | 
    
         
             
            * Voice support: discordrb can now connect to voice using `bot.voice_connect` and do the following things:
         
     | 
| 
         @@ -879,9 +1036,9 @@ puts bot.profile.username 
     | 
|
| 
       879 
1036 
     | 
    
         
             
            * `Bot.parse_mention` now works, it didn't work at all previously
         
     | 
| 
       880 
1037 
     | 
    
         | 
| 
       881 
1038 
     | 
    
         
             
            ## [1.4.8] - 2016-01-06
         
     | 
| 
       882 
     | 
    
         
            -
            [1.4.8]: https://github.com/ 
     | 
| 
      
 1039 
     | 
    
         
            +
            [1.4.8]: https://github.com/discordrb/discordrb/releases/tag/v1.4.8
         
     | 
| 
       883 
1040 
     | 
    
         | 
| 
       884 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1041 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.7...v1.4.8)
         
     | 
| 
       885 
1042 
     | 
    
         | 
| 
       886 
1043 
     | 
    
         
             
            ### Added
         
     | 
| 
       887 
1044 
     | 
    
         
             
            * The `User` class now has the methods `add_role` and `remove_role` which add a role to a user and remove it, respectively.
         
     | 
| 
         @@ -892,9 +1049,9 @@ puts bot.profile.username 
     | 
|
| 
       892 
1049 
     | 
    
         
             
            * When a role is deleted, the ID is now obtained correctly. (#30)
         
     | 
| 
       893 
1050 
     | 
    
         | 
| 
       894 
1051 
     | 
    
         
             
            ## [1.4.7] - 2016-01-03
         
     | 
| 
       895 
     | 
    
         
            -
            [1.4.7]: https://github.com/ 
     | 
| 
      
 1052 
     | 
    
         
            +
            [1.4.7]: https://github.com/discordrb/discordrb/releases/tag/v1.4.7
         
     | 
| 
       896 
1053 
     | 
    
         | 
| 
       897 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1054 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.6...v1.4.7)
         
     | 
| 
       898 
1055 
     | 
    
         | 
| 
       899 
1056 
     | 
    
         
             
            ### Added
         
     | 
| 
       900 
1057 
     | 
    
         
             
            * Presence event handling is now divided into two separate events; `PresenceEvent` to handle online/offline/idle statuses and `PlayingEvent` to handle users playing games.
         
     | 
| 
         @@ -905,9 +1062,9 @@ puts bot.profile.username 
     | 
|
| 
       905 
1062 
     | 
    
         
             
            * The `TypingEvent` `user` property is now initialized correctly (#29, thanks @purintai)
         
     | 
| 
       906 
1063 
     | 
    
         | 
| 
       907 
1064 
     | 
    
         
             
            ## [1.4.6] - 2015-12-25
         
     | 
| 
       908 
     | 
    
         
            -
            [1.4.6]: https://github.com/ 
     | 
| 
      
 1065 
     | 
    
         
            +
            [1.4.6]: https://github.com/discordrb/discordrb/releases/tag/v1.4.6
         
     | 
| 
       909 
1066 
     | 
    
         | 
| 
       910 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1067 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.4...v1.4.6)
         
     | 
| 
       911 
1068 
     | 
    
         | 
| 
       912 
1069 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       913 
1070 
     | 
    
         
             
            * The `user` and `server` properties of `PresenceEvent` are now initialized correctly.
         
     | 
| 
         @@ -919,9 +1076,9 @@ puts bot.profile.username 
     | 
|
| 
       919 
1076 
     | 
    
         
             
            * Discord mentions are handled in the old way again, after Discord reverted an API change.
         
     | 
| 
       920 
1077 
     | 
    
         | 
| 
       921 
1078 
     | 
    
         
             
            ## [1.4.4] - 2015-12-18
         
     | 
| 
       922 
     | 
    
         
            -
            [1.4.4]: https://github.com/ 
     | 
| 
      
 1079 
     | 
    
         
            +
            [1.4.4]: https://github.com/discordrb/discordrb/releases/tag/v1.4.4
         
     | 
| 
       923 
1080 
     | 
    
         | 
| 
       924 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1081 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.3...v1.4.4)
         
     | 
| 
       925 
1082 
     | 
    
         | 
| 
       926 
1083 
     | 
    
         
             
            ### Added
         
     | 
| 
       927 
1084 
     | 
    
         
             
            * Add `Server.leave_server` as an alias for `delete_server`
         
     | 
| 
         @@ -934,9 +1091,9 @@ puts bot.profile.username 
     | 
|
| 
       934 
1091 
     | 
    
         
             
            * The quickadders for awaits (`User.await`, `Channel.await` etc.) now add the correct awaits.
         
     | 
| 
       935 
1092 
     | 
    
         | 
| 
       936 
1093 
     | 
    
         
             
            ## [1.4.3] - 2015-12-11
         
     | 
| 
       937 
     | 
    
         
            -
            [1.4.3]: https://github.com/ 
     | 
| 
      
 1094 
     | 
    
         
            +
            [1.4.3]: https://github.com/discordrb/discordrb/releases/tag/v1.4.3
         
     | 
| 
       938 
1095 
     | 
    
         | 
| 
       939 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1096 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.2...v1.4.3)
         
     | 
| 
       940 
1097 
     | 
    
         | 
| 
       941 
1098 
     | 
    
         
             
            ### Added
         
     | 
| 
       942 
1099 
     | 
    
         
             
            * Added a method `Bot.find_user` analogous to `Bot.find`.
         
     | 
| 
         @@ -945,26 +1102,26 @@ puts bot.profile.username 
     | 
|
| 
       945 
1102 
     | 
    
         
             
            * Remove a leftover debug line (#23, thanks @VxJasonxV)
         
     | 
| 
       946 
1103 
     | 
    
         | 
| 
       947 
1104 
     | 
    
         
             
            ## [1.4.2] - 2015-12-10
         
     | 
| 
       948 
     | 
    
         
            -
            [1.4.2]: https://github.com/ 
     | 
| 
      
 1105 
     | 
    
         
            +
            [1.4.2]: https://github.com/discordrb/discordrb/releases/tag/v1.4.2
         
     | 
| 
       949 
1106 
     | 
    
         | 
| 
       950 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1107 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.1...v1.4.2)
         
     | 
| 
       951 
1108 
     | 
    
         | 
| 
       952 
1109 
     | 
    
         
             
            ### Changed
         
     | 
| 
       953 
1110 
     | 
    
         
             
            * discordrb will now send a user agent in the format requested by the Discord devs.
         
     | 
| 
       954 
1111 
     | 
    
         | 
| 
       955 
1112 
     | 
    
         
             
            ## [1.4.1] - 2015-12-07
         
     | 
| 
       956 
     | 
    
         
            -
            [1.4.1]: https://github.com/ 
     | 
| 
      
 1113 
     | 
    
         
            +
            [1.4.1]: https://github.com/discordrb/discordrb/releases/tag/v1.4.1
         
     | 
| 
       957 
1114 
     | 
    
         | 
| 
       958 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1115 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.0...v1.4.1)
         
     | 
| 
       959 
1116 
     | 
    
         | 
| 
       960 
1117 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       961 
1118 
     | 
    
         
             
            * Empty messages will now never be sent
         
     | 
| 
       962 
1119 
     | 
    
         
             
            * The command-not-found message in `CommandBot` can now be disabled properly
         
     | 
| 
       963 
1120 
     | 
    
         | 
| 
       964 
1121 
     | 
    
         
             
            ## [1.4.0] - 2015-12-04
         
     | 
| 
       965 
     | 
    
         
            -
            [1.4.0]: https://github.com/ 
     | 
| 
      
 1122 
     | 
    
         
            +
            [1.4.0]: https://github.com/discordrb/discordrb/releases/tag/v1.4.0
         
     | 
| 
       966 
1123 
     | 
    
         | 
| 
       967 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1124 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.12...v1.4.0)
         
     | 
| 
       968 
1125 
     | 
    
         | 
| 
       969 
1126 
     | 
    
         
             
            ### Added
         
     | 
| 
       970 
1127 
     | 
    
         
             
            * All methods and classes where the words "colour" or "color" are used now have had aliases added with the respective other spelling. (Internally, everything uses "colour" now).
         
     | 
| 
         @@ -984,9 +1141,9 @@ puts bot.profile.username 
     | 
|
| 
       984 
1141 
     | 
    
         
             
            * Fixed a bug where command handling would crash if the command didn't exist.
         
     | 
| 
       985 
1142 
     | 
    
         | 
| 
       986 
1143 
     | 
    
         
             
            ## [1.3.12] - 2015-11-30
         
     | 
| 
       987 
     | 
    
         
            -
            [1.3.12]: https://github.com/ 
     | 
| 
      
 1144 
     | 
    
         
            +
            [1.3.12]: https://github.com/discordrb/discordrb/releases/tag/v1.3.12
         
     | 
| 
       988 
1145 
     | 
    
         | 
| 
       989 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1146 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.11...v1.3.12)
         
     | 
| 
       990 
1147 
     | 
    
         | 
| 
       991 
1148 
     | 
    
         
             
            ### Added
         
     | 
| 
       992 
1149 
     | 
    
         
             
            * Add an attribute `Bot.should_parse_self` (false by default) that prevents the bot from raising an event if it receives a message from itself.
         
     | 
| 
         @@ -997,9 +1154,9 @@ puts bot.profile.username 
     | 
|
| 
       997 
1154 
     | 
    
         
             
            * Fix the `MessageEvent` attribute that checks whether the message is from the bot not working at all.
         
     | 
| 
       998 
1155 
     | 
    
         | 
| 
       999 
1156 
     | 
    
         
             
            ## [1.3.11] - 2015-11-29
         
     | 
| 
       1000 
     | 
    
         
            -
            [1.3.11]: https://github.com/ 
     | 
| 
      
 1157 
     | 
    
         
            +
            [1.3.11]: https://github.com/discordrb/discordrb/releases/tag/v1.3.11
         
     | 
| 
       1001 
1158 
     | 
    
         | 
| 
       1002 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1159 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.10...v1.3.11)
         
     | 
| 
       1003 
1160 
     | 
    
         | 
| 
       1004 
1161 
     | 
    
         
             
            ### Added
         
     | 
| 
       1005 
1162 
     | 
    
         
             
            * Add a user selector (`:bot`) that is usable in the `from:` `MessageEvent` attribute to check whether the message was sent by a bot.
         
     | 
| 
         @@ -1008,9 +1165,9 @@ puts bot.profile.username 
     | 
|
| 
       1008 
1165 
     | 
    
         
             
            * `Channel.private?` now checks for the server being nil instead of the `is_private` attribute provided by Discord as the latter is unreliable. (wtf)
         
     | 
| 
       1009 
1166 
     | 
    
         | 
| 
       1010 
1167 
     | 
    
         
             
            ## [1.3.10] - 2015-11-28
         
     | 
| 
       1011 
     | 
    
         
            -
            [1.3.10]: https://github.com/ 
     | 
| 
      
 1168 
     | 
    
         
            +
            [1.3.10]: https://github.com/discordrb/discordrb/releases/tag/v1.3.10
         
     | 
| 
       1012 
1169 
     | 
    
         | 
| 
       1013 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1170 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.9...v1.3.10)
         
     | 
| 
       1014 
1171 
     | 
    
         | 
| 
       1015 
1172 
     | 
    
         
             
            ### Added
         
     | 
| 
       1016 
1173 
     | 
    
         
             
            * Add a method `Channel.private?` to check for a PM channel
         
     | 
| 
         @@ -1022,9 +1179,9 @@ puts bot.profile.username 
     | 
|
| 
       1022 
1179 
     | 
    
         
             
            * The `matches_all` method would break in certain edge cases. This didn't really affect discordrb and I don't think anyone else uses that method (it's pretty useless otherwise). This has been fixed
         
     | 
| 
       1023 
1180 
     | 
    
         | 
| 
       1024 
1181 
     | 
    
         
             
            ## [1.3.9] - 2015-11-27
         
     | 
| 
       1025 
     | 
    
         
            -
            [1.3.9]: https://github.com/ 
     | 
| 
      
 1182 
     | 
    
         
            +
            [1.3.9]: https://github.com/discordrb/discordrb/releases/tag/v1.3.9
         
     | 
| 
       1026 
1183 
     | 
    
         | 
| 
       1027 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1184 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.8...v1.3.9)
         
     | 
| 
       1028 
1185 
     | 
    
         | 
| 
       1029 
1186 
     | 
    
         
             
            ### Added
         
     | 
| 
       1030 
1187 
     | 
    
         
             
            * Add awaits, a powerful way to add temporary event handlers.
         
     | 
| 
         @@ -1036,9 +1193,9 @@ puts bot.profile.username 
     | 
|
| 
       1036 
1193 
     | 
    
         
             
            * Users joining and leaving servers are now handled correctly.
         
     | 
| 
       1037 
1194 
     | 
    
         | 
| 
       1038 
1195 
     | 
    
         
             
            ## [1.3.8] - 2015-11-12
         
     | 
| 
       1039 
     | 
    
         
            -
            [1.3.8]: https://github.com/ 
     | 
| 
      
 1196 
     | 
    
         
            +
            [1.3.8]: https://github.com/discordrb/discordrb/releases/tag/v1.3.8
         
     | 
| 
       1040 
1197 
     | 
    
         | 
| 
       1041 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1198 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.7...v1.3.8)
         
     | 
| 
       1042 
1199 
     | 
    
         | 
| 
       1043 
1200 
     | 
    
         
             
            ### Added
         
     | 
| 
       1044 
1201 
     | 
    
         
             
            * Added `Bot.users` and `Bot.servers` readers to get the list of users and servers.
         
     | 
| 
         @@ -1047,17 +1204,17 @@ puts bot.profile.username 
     | 
|
| 
       1047 
1204 
     | 
    
         
             
            * POST requests to API calls that don't need a payload will now send a `nil` payload instead. This fixes the bot being unable to join any servers and various other latent problems. (#21, thanks @davidkus)
         
     | 
| 
       1048 
1205 
     | 
    
         | 
| 
       1049 
1206 
     | 
    
         
             
            ## [1.3.7] - 2015-11-07
         
     | 
| 
       1050 
     | 
    
         
            -
            [1.3.7]: https://github.com/ 
     | 
| 
      
 1207 
     | 
    
         
            +
            [1.3.7]: https://github.com/discordrb/discordrb/releases/tag/v1.3.7
         
     | 
| 
       1051 
1208 
     | 
    
         | 
| 
       1052 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1209 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.6...v1.3.7)
         
     | 
| 
       1053 
1210 
     | 
    
         | 
| 
       1054 
1211 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       1055 
1212 
     | 
    
         
             
            * Fix the command bot being included wrong, which caused crashes upon startup.
         
     | 
| 
       1056 
1213 
     | 
    
         | 
| 
       1057 
1214 
     | 
    
         
             
            ## [1.3.6] - 2015-11-07
         
     | 
| 
       1058 
     | 
    
         
            -
            [1.3.6]: https://github.com/ 
     | 
| 
      
 1215 
     | 
    
         
            +
            [1.3.6]: https://github.com/discordrb/discordrb/releases/tag/v1.3.6
         
     | 
| 
       1059 
1216 
     | 
    
         | 
| 
       1060 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1217 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.5...v1.3.6)
         
     | 
| 
       1061 
1218 
     | 
    
         | 
| 
       1062 
1219 
     | 
    
         
             
            ### Added
         
     | 
| 
       1063 
1220 
     | 
    
         
             
            * The bot can now be stopped from the script using the new method `Bot.stop`.
         
     | 
| 
         @@ -1066,9 +1223,9 @@ puts bot.profile.username 
     | 
|
| 
       1066 
1223 
     | 
    
         
             
            * Fix some wrong file requires which caused crashes sometimes.
         
     | 
| 
       1067 
1224 
     | 
    
         | 
| 
       1068 
1225 
     | 
    
         
             
            ## [1.3.5] - 2015-11-07
         
     | 
| 
       1069 
     | 
    
         
            -
            [1.3.5]: https://github.com/ 
     | 
| 
      
 1226 
     | 
    
         
            +
            [1.3.5]: https://github.com/discordrb/discordrb/releases/tag/v1.3.5
         
     | 
| 
       1070 
1227 
     | 
    
         | 
| 
       1071 
     | 
    
         
            -
            [View diff for this release.](https://github.com/ 
     | 
| 
      
 1228 
     | 
    
         
            +
            [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.4...v1.3.5)
         
     | 
| 
       1072 
1229 
     | 
    
         | 
| 
       1073 
1230 
     | 
    
         
             
            ### Added
         
     | 
| 
       1074 
1231 
     | 
    
         
             
            * The bot can now be run asynchronously using `Bot.run(:async)` to do further initialization after the bot was started.
         
     |