discordrb 3.3.0 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +152 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
  5. data/.github/pull_request_template.md +37 -0
  6. data/.github/workflows/codeql.yml +65 -0
  7. data/.markdownlint.json +4 -0
  8. data/.rubocop.yml +39 -36
  9. data/CHANGELOG.md +874 -552
  10. data/Gemfile +2 -0
  11. data/LICENSE.txt +1 -1
  12. data/README.md +80 -86
  13. data/Rakefile +2 -0
  14. data/bin/console +1 -0
  15. data/discordrb-webhooks.gemspec +9 -6
  16. data/discordrb.gemspec +21 -18
  17. data/lib/discordrb/allowed_mentions.rb +36 -0
  18. data/lib/discordrb/api/application.rb +202 -0
  19. data/lib/discordrb/api/channel.rb +236 -47
  20. data/lib/discordrb/api/interaction.rb +54 -0
  21. data/lib/discordrb/api/invite.rb +5 -5
  22. data/lib/discordrb/api/server.rb +94 -66
  23. data/lib/discordrb/api/user.rb +17 -11
  24. data/lib/discordrb/api/webhook.rb +63 -6
  25. data/lib/discordrb/api.rb +55 -16
  26. data/lib/discordrb/await.rb +0 -1
  27. data/lib/discordrb/bot.rb +480 -93
  28. data/lib/discordrb/cache.rb +31 -24
  29. data/lib/discordrb/colour_rgb.rb +43 -0
  30. data/lib/discordrb/commands/command_bot.rb +35 -12
  31. data/lib/discordrb/commands/container.rb +21 -24
  32. data/lib/discordrb/commands/parser.rb +20 -20
  33. data/lib/discordrb/commands/rate_limiter.rb +4 -3
  34. data/lib/discordrb/container.rb +209 -20
  35. data/lib/discordrb/data/activity.rb +271 -0
  36. data/lib/discordrb/data/application.rb +50 -0
  37. data/lib/discordrb/data/attachment.rb +71 -0
  38. data/lib/discordrb/data/audit_logs.rb +345 -0
  39. data/lib/discordrb/data/channel.rb +993 -0
  40. data/lib/discordrb/data/component.rb +229 -0
  41. data/lib/discordrb/data/embed.rb +251 -0
  42. data/lib/discordrb/data/emoji.rb +82 -0
  43. data/lib/discordrb/data/integration.rb +122 -0
  44. data/lib/discordrb/data/interaction.rb +800 -0
  45. data/lib/discordrb/data/invite.rb +137 -0
  46. data/lib/discordrb/data/member.rb +372 -0
  47. data/lib/discordrb/data/message.rb +414 -0
  48. data/lib/discordrb/data/overwrite.rb +108 -0
  49. data/lib/discordrb/data/profile.rb +91 -0
  50. data/lib/discordrb/data/reaction.rb +33 -0
  51. data/lib/discordrb/data/recipient.rb +34 -0
  52. data/lib/discordrb/data/role.rb +248 -0
  53. data/lib/discordrb/data/server.rb +1004 -0
  54. data/lib/discordrb/data/user.rb +264 -0
  55. data/lib/discordrb/data/voice_region.rb +45 -0
  56. data/lib/discordrb/data/voice_state.rb +41 -0
  57. data/lib/discordrb/data/webhook.rb +238 -0
  58. data/lib/discordrb/data.rb +28 -4180
  59. data/lib/discordrb/errors.rb +46 -4
  60. data/lib/discordrb/events/bans.rb +7 -5
  61. data/lib/discordrb/events/channels.rb +3 -1
  62. data/lib/discordrb/events/guilds.rb +16 -9
  63. data/lib/discordrb/events/interactions.rb +482 -0
  64. data/lib/discordrb/events/invites.rb +125 -0
  65. data/lib/discordrb/events/members.rb +6 -2
  66. data/lib/discordrb/events/message.rb +72 -27
  67. data/lib/discordrb/events/presence.rb +35 -18
  68. data/lib/discordrb/events/raw.rb +1 -3
  69. data/lib/discordrb/events/reactions.rb +49 -4
  70. data/lib/discordrb/events/threads.rb +96 -0
  71. data/lib/discordrb/events/typing.rb +6 -4
  72. data/lib/discordrb/events/voice_server_update.rb +47 -0
  73. data/lib/discordrb/events/voice_state_update.rb +15 -10
  74. data/lib/discordrb/events/webhooks.rb +9 -6
  75. data/lib/discordrb/gateway.rb +99 -71
  76. data/lib/discordrb/id_object.rb +39 -0
  77. data/lib/discordrb/light/integrations.rb +1 -1
  78. data/lib/discordrb/light/light_bot.rb +1 -1
  79. data/lib/discordrb/logger.rb +4 -4
  80. data/lib/discordrb/paginator.rb +57 -0
  81. data/lib/discordrb/permissions.rb +159 -39
  82. data/lib/discordrb/version.rb +1 -1
  83. data/lib/discordrb/voice/encoder.rb +16 -7
  84. data/lib/discordrb/voice/network.rb +99 -47
  85. data/lib/discordrb/voice/sodium.rb +98 -0
  86. data/lib/discordrb/voice/voice_bot.rb +33 -25
  87. data/lib/discordrb/webhooks.rb +2 -0
  88. data/lib/discordrb.rb +107 -1
  89. metadata +126 -54
  90. data/.codeclimate.yml +0 -16
  91. data/.travis.yml +0 -33
  92. data/bin/travis_build_docs.sh +0 -17
  93. /data/{CONTRIBUTING.md → .github/CONTRIBUTING.md} +0 -0
data/CHANGELOG.md CHANGED
@@ -1,17 +1,191 @@
1
1
  # Changelog
2
+
2
3
  All notable changes to this project will be documented in this file.
3
4
 
4
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
5
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
7
 
7
- ## Unreleased
8
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v3.3.0...HEAD)
8
+ ## [3.5.0] - 2023-07-05
9
+ [3.5.0]: https://github.com/shardlab/discordrb/releases/tag/v3.5.0
10
+
11
+ [View diff for this release.](https://github.com/shardlab/discordrb/compare/v3.4.2..v3.5.0)
12
+
13
+ ### Summary
14
+
15
+ Lots of changes, Discord is changing their API and we're trying to keep up. This release is a bit of a mess, but it's a necessary one.
16
+
17
+ ## [3.4.2] - 2020-02-05
18
+
19
+ [3.4.2]: https://github.com/shardlab/discordrb/releases/tag/v3.4.2
20
+
21
+ [View diff for this release.](https://github.com/shardlab/discordrb/compare/v3.4.1..v3.4.2)
22
+
23
+ ### Summary
24
+
25
+ I failed to update rest-client dependencies properly, and discovered that you can't republish gem versions the hard way.
26
+
27
+ ### Changed
28
+
29
+ - `rest-client` has a requirement of `>= 2.0.0` on both `discordrb` and `discordrb-webhooks`
30
+
31
+ ## [3.4.1] - 2020-02-04
32
+
33
+ [3.4.1]: https://github.com/shardlab/discordrb/releases/tag/v3.4.1
34
+
35
+ [View diff for this release.](https://github.com/shardlab/discordrb/compare/v3.4.0..v3.4.1)
36
+
37
+ ### Summary
38
+
39
+ 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!).
40
+ This micro bump fixes this, fixes a few other code issues, and adds a few minor features.
41
+
42
+ ### Added
43
+
44
+ - Added support for `competing` activity types ([#21](https://github.com/shardlab/discordrb/pull/21), thanks @kaine119)
45
+ - Support for a callable command_does_not_exist_message ([#25](https://github.com/shardlab/discordrb/pull/25), thanks @kmcphillips)
46
+
47
+ ### Fixed
48
+
49
+ - `Bot#send_temporary_message` now properly passes `message_reference` ([#17](https://github.com/shardlab/discordrb/pull/17) thanks @swarley)
50
+ - Rate limit precision is only supplied when the route requires headers ([#11](https://github.com/shardlab/discordrb/pull/11) thanks @dali546)
51
+ - Remove pointless conditional in `Invite` initializer ([#26](https://github.com/shardlab/discordrb/pull/26) thanks @swarley)
52
+ - All API methods link to their official documentation counterparts ([#12](https://github.com/shardlab/discordrb/pull/12) thanks @kaine119)
53
+ - 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)
54
+
55
+ ## [3.4.0] - 2020-12-06
56
+
57
+ [3.4.0]: https://github.com/shardlab/discordrb/releases/tag/v3.3.0
58
+
59
+ [View diff for this release.](https://github.com/shardlab/discordrb/compare/v3.4.0...v3.3.0)
60
+
61
+ ### Summary
62
+
63
+ 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.
64
+
65
+ The largest additions are that of intents support and a massive performance increase in our websocket read loop.
66
+
67
+ Intents allow you to pick and choose what types of events are fed to your bot over the gateway. An example usage would be:
68
+
69
+ ```ruby
70
+ Discordrb::Bot.new(token: 'B0T.T0K3N', intents: %i[servers server_messages])
71
+ ```
72
+
73
+ In this example, we would only recieve the following events
74
+
75
+ - GUILD_CREATE
76
+ - GUILD_UPDATE
77
+ - GUILD_DELETE
78
+ - GUILD_ROLE_CREATE
79
+ - GUILD_ROLE_UPDATE
80
+ - GUILD_ROLE_DELETE
81
+ - CHANNEL_CREATE
82
+ - CHANNEL_UPDATE
83
+ - CHANNEL_DELETE
84
+ - CHANNEL_PINS_UPDATE
85
+ - MESSAGE_CREATE
86
+ - MESSAGE_UPDATE
87
+ - MESSAGE_DELETE
88
+ - MESSAGE_DELETE_BULK
89
+
90
+ 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`.
91
+
92
+ ### Added
93
+
94
+ - `Bot#parse_mentions`, which extracts _all_ mentions found in a string ([#526](https://github.com/discordrb/discordrb/pull/526), thanks @SanksTheYokai)
95
+ - Issue and pull request templates ([#585](https://github.com/discordrb/discordrb/pull/585))
96
+ - `Server#bot` method for obtaining your bot's own `Member` on a particular server ([#597](https://github.com/discordrb/discordrb/pull/597))
97
+ - `Attachment#spoiler?`, to check if an attachment is a spoiler or not ([#603](https://github.com/discordrb/discordrb/pull/603), thanks @swarley)
98
+ - Methods on `Server` to manage the server's emoji ([#595](https://github.com/discordrb/discordrb/pull/595), thanks @swarley)
99
+ - `Paginator` utility class for wrapping paginated endpoints ([#579](https://github.com/discordrb/discordrb/pull/579))
100
+ - `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)
101
+ - `Message#server` ([#614](https://github.com/discordrb/discordrb/pull/614), thanks @swarley)
102
+ - `Channel#news?`, `Channel#store?` ([#618](https://github.com/discordrb/discordrb/pull/618), thanks @swarley)
103
+ - `Server#bot_members`, `Server#non_bot_members` ([#626](https://github.com/discordrb/discordrb/pull/626), thanks @flutterflies)
104
+ - `API.get_gateway_bot` ([#632](https://github.com/discordrb/discordrb/pull/632))
105
+ - `Channel#create_webhook` ([#637](https://github.com/discordrb/discordrb/pull/637), thanks @Chew)
106
+ - `User#dnd?` and documentation for other user status methods ([#679](https://github.com/discordrb/discordrb/pull/679), thanks @kaine119)
107
+ - `Message#link`, `Channel#link`, `Server#link` ([commit](https://github.com/shardlab/discordrb/commit/44f93948a812e06b439968c6b072c0d9b749a842), thanks @z64)
108
+ - `ReactionEvent#message_id` and `message` option for `ReactionEventHandler` ([#728](https://github.com/discordrb/discordrb/pull/728), thanks @swarley)
109
+ - `intents` option for `Bot#initialize`, `INTENTS`, and `ALL_INTENTS` for experimental intents support ([#698](https://github.com/discordrb/discordrb/pull/698), thanks @swarley)
110
+ - `reason` positional arguments for various API methods, support for new audit log events ([#682](https://github.com/discordrb/discordrb/pull/682), thanks @swarley)
111
+ - 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)
112
+ - `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)
113
+ - `with_counts` optional positional argument to `API::Server.resolve` ([#709](https://github.com/discordrb/discordrb/pull/709), thanks @swarley)
114
+ - Expose full options to `Bot#send_temporary_message` and `Respondable#send_temporary_message` ([commit](https://github.com/shardlab/discordrb/commit/d20203211603cd4c06212d99e733bf5f5b3c8f0b), thanks @Birdie0)
115
+ - `User#client_status`, `PresenceEvent#client_status`, and `client_status` option for `EventContainer#presence` ([#736](https://github.com/discordrb/discordrb/pull/736), thanks @swarley)
116
+ - `VoiceServerUpdateEvent`, and `EventContainer#voice_server_update` ([#743](https://github.com/discordrb/discordrb/pull/743), thanks @swarley)
117
+ - Invite events, `InviteCreateEvent`, `InviteDeleteEvent`, `EventContainer#invite_create`, `EventContainer#invite_delete` and `Server#splash_hash` ([#744](https://github.com/discordrb/discordrb/pull/744), thanks @swarley)
118
+ - `Message#reply!`, `Message#reply?`, `Message#referenced_message` for inline reply support ([#3](https://github.com/shardlab/discordrb/pull/3), thanks @swarley)
119
+
120
+ ### Changed
121
+
122
+ - Drop support for Ruby 2.3 (EOL) ([#583](https://github.com/discordrb/discordrb/pull/583), thanks @PanisSupraOmnia)
123
+ - **(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)
124
+ - Dependencies for `rbnacl`, `rake`, and `rspec` have been updated ([#538](https://github.com/discordrb/discordrb/pull/538), thanks @PanisSupraOmnia)
125
+ - The monolithic `data.rb` file has been split into multiple files for easier development ([#482](https://github.com/discordrb/discordrb/pull/482))
126
+ - Loosened `bundler` development dependency to allow use of `bundler` 1.x and 2.x ([#591](https://github.com/discordrb/discordrb/pull/591), thanks @PanisSupraOmnia)
127
+ - `API::Server.create_channel` and `Server#create_channel` now accepts `position` ([#592](https://github.com/discordrb/discordrb/pull/592), thanks @swarley)
128
+ - `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))
129
+ - `compress_mode` in `Bot.new` now defaults to `:large` instead of `:stream` ([#601](https://github.com/discordrb/discordrb/pull/601))
130
+ - `send_file` methods now accept `filename` to rename a file when uploading to Discord ([#605](https://github.com/discordrb/discordrb/pull/605), thanks @swarley)
131
+ - Emoji related `API` methods now accept arguments to change an emoji's role whitelist ([#595](https://github.com/discordrb/discordrb/pull/595), thanks @swarley)
132
+ - `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)
133
+ - Clarified use of `API.bot_name=` ([#622](https://github.com/discordrb/discordrb/pull/622), thanks @Daniel-Worrall)
134
+ - `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)
135
+ - `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)
136
+ - Typestrings for API that accepts discord IDs is now consistently represented as `String, Integer` ([#616](https://github.com/discordrb/discordrb/pull/616), thanks @swarley)
137
+ - 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))
138
+ - 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)
139
+ - Give up reconnecting after receiving a fatal close code ([#633](https://github.com/discordrb/discordrb/pull/633))
140
+ - Misc upgrades to RuboCop v0.68 ([#624](https://github.com/discordrb/discordrb/pull/624), thanks @PanisSupraOmnia)
141
+ - `await!` methods now accept a block to test for matching event conditions ([#635](https://github.com/discordrb/discordrb/pull/635), thanks @z64)
142
+ - Dependency updates for RuboCop v0.74, redcarpet, and simplecov ([#636](https://github.com/discordrb/discordrb/pull/636), thanks @PanisSupraOmnia)
143
+ - Update voice logic to connect to the IP address from READY ([#644](https://github.com/discordrb/discordrb/pull/644), thanks @swarley)
144
+ - Refactored use of enumerable code in `Discordrb.split_message` ([#646](https://github.com/discordrb/discordrb/pull/646), thanks @piharpi)
145
+ - **(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)
146
+ - 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)
147
+ - Added Bit for "Streaming" permission ([#660](https://github.com/discordrb/discordrb/pull/660), thanks @NCPlayz)
148
+ - Methods for Nitro boosting related information ([#638](https://github.com/discordrb/discordrb/pull/638), thanks @Chew)
149
+ - `ServerDeleteEvent#server` now returns an `Integer` ([commit](https://github.com/discordrb/discordrb/commit/bb457fe981d2b997b704ad85008ec3b185b046e8), thanks @z64)
150
+ - User activites are now represented by `ActivitySet`, from `User#activities` ([#677](https://github.com/discordrb/discordrb/pull/677), thanks @swarley)
151
+ - **(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)
152
+ - Non CDN links now use the updated domain name `https://discord.com` ([#720](https://github.com/discordrb/discordrb/pull/720), thanks @swarley)
153
+ - Additional fields are included in `Role#inspect` ([#731](https://github.com/discordrb/discordrb/pull/731), thanks @IotaSpencer)
154
+ - `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)
155
+ - Members now have the `@everyone` role ([#739](https://github.com/discordrb/discordrb/pull/739), thanks @kdance21)
156
+ - 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)
157
+ - **(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)
158
+
159
+ ### Fixed
160
+
161
+ - Permission calculation when the internal sorting of roles is unreliable ([#609](https://github.com/discordrb/discordrb/pull/609))
162
+ - `DisconnectEvent` is now raised when a gateway close frame is handled ([#611](https://github.com/discordrb/discordrb/pull/611), thanks @swarley)
163
+ - 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)
164
+ - **(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))
165
+ - `Channel#nsfw=` correctly forwards updated value to the API ([#628](https://github.com/discordrb/discordrb/pull/628))
166
+ - `Emoji#==` works correctly for unicode emoji ([#590](https://github.com/discordrb/discordrb/pull/590), thanks @soukouki)
167
+ - Attribute matching for voice state update events ([#625](https://github.com/discordrb/discordrb/pull/625), thanks @swarley)
168
+ - `Emoji#to_reaction` works correctly for unicode emoji ([#642](https://github.com/discordrb/discordrb/pull/642), thanks @z64)
169
+ - `Server#add_member_using_token` returns `nil` when user is already a member ([#643](https://github.com/discordrb/discordrb/pull/643), thanks @swarley)
170
+ - `CommandBot`'s `Integer` parser interprets all integers as base 10 ([#656](https://github.com/discordrb/discordrb/pull/656), thanks @joshleblanc)
171
+ - Broken reference link in `CommandBot#initialize` documentation ([#647](https://github.com/discordrb/discordrb/pull/647), thanks @Daniel-Worrall)
172
+ - Return the correct value for `Message#reactions?` ([#729](https://github.com/discordrb/discordrb/pull/729), thanks @swarley)
173
+ - Gateway closes with a 4000 code on `RECONNECT`, preserving the session ([#727](https://github.com/discordrb/discordrb/pull/727), thanks @swarley)
174
+ - `Emoji#mention` works correctly for unicode emojis ([#715](https://github.com/discordrb/discordrb/pull/715), thanks @swarley)
175
+ - Voice now uses gateway v4 ([#648](https://github.com/discordrb/discordrb/pull/648), thanks @swarley)
176
+ - 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)
177
+ - `Message#emoji` returns more reliably when used with other mention types ([#724](https://github.com/discordrb/discordrb/pull/724), thanks @omnilord)
178
+ - Permission calculation now properly considers overwrites ([#712](https://github.com/discordrb/discordrb/pull/712), thanks @swarley)
179
+
180
+ ### Removed
181
+
182
+ - Removed dependency on `rbnacl` in favor of our own FFI bindings ([#641](https://github.com/discordrb/discordrb/pull/641), thanks @z64)
9
183
 
10
184
  ## [3.3.0] - 2018-10-27
11
- [3.3.0]: https://github.com/meew0/discordrb/releases/tag/v3.3.0
12
185
 
13
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v3.2.1...v3.3.0)
186
+ [3.3.0]: https://github.com/discordrb/discordrb/releases/tag/v3.3.0
14
187
 
188
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.2.1...v3.3.0)
15
189
 
16
190
  ### Summary
17
191
 
@@ -27,13 +201,13 @@ Since there is a lot here, here are highlights of the more notable changes in th
27
201
  - `CommandBot` now supports a new method of "aliasing" commands with the `aliases:` keyword. It accepts an array
28
202
  of symbols of alternate command names. Currently this is supported by passing an array of symbols for the command
29
203
  name itself, but this essentially makes "copies" of the command, meaning each alias will show up in your help command.
30
- Using `aliases` instead, the library will recognize that these other names *are aliases* instead of copying the command.
204
+ Using `aliases` instead, the library will recognize that these other names _are aliases_ instead of copying the command.
31
205
  Aliases will be listed when users use `!help` with the command name, or any of its aliases. For now you may chose to use
32
206
  either style, but you cannot use both. Specifying an array for the command name is now considered deprecated.
33
207
 
34
208
  - There are now two methods of creating "awaits" in discordrb. The new style is a blocking (synchronous) method that
35
209
  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 that
210
+ i.e. `user.await!`, `message.await!`, and simply return the raised event. This system should be less confusing than
37
211
  the current asynchronous one. These blocking awaits no longer have an identifying key and only accept the event
38
212
  attributes as an argument. There is also a special reserved attribute called `timeout` that will stop waiting for
39
213
  an event and return `nil` if the given number of seconds has passed. Eventually this new system of awaits will
@@ -60,461 +234,501 @@ Thank you to all of our contributors!
60
234
 
61
235
  ### Added
62
236
 
63
- - API methods to add and remove single member roles ([#310](https://github.com/meew0/discordrb/pull/310))
64
- - **(breaking change)** API methods and abstractions for listing available voice regions ([#311](https://github.com/meew0/discordrb/pull/311))
65
- - `Server` methods to prune members and to get the number of members available for pruning ([#315](https://github.com/meew0/discordrb/pull/315))
66
- - Methods for filtering the kinds of overwrites present on a channel ([#321](https://github.com/meew0/discordrb/pull/321))
67
- - `Channel#default_channel?`, for checking if a channel is the default channel of a server ([#320](https://github.com/meew0/discordrb/pull/320), thanks @Reaver01)
237
+ - API methods to add and remove single member roles ([#310](https://github.com/discordrb/discordrb/pull/310))
238
+ - **(breaking change)** API methods and abstractions for listing available voice regions ([#311](https://github.com/discordrb/discordrb/pull/311))
239
+ - `Server` methods to prune members and to get the number of members available for pruning ([#315](https://github.com/discordrb/discordrb/pull/315))
240
+ - Methods for filtering the kinds of overwrites present on a channel ([#321](https://github.com/discordrb/discordrb/pull/321))
241
+ - `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
242
  - 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/meew0/discordrb/pull/342))
70
- - Additional objects and attributes for parsing embeds on messages ([#344](https://github.com/meew0/discordrb/pull/344), thanks @mattantonelli)
71
- - Methods for finding a members highest role, the role that is hoisting the member, or giving the member color ([#335](https://github.com/meew0/discordrb/pull/335), thanks @Snazzah)
72
- - API support for managing webhooks ([#356](https://github.com/meew0/discordrb/pull/356), thanks @Daniel-Worrall)
73
- - Support for reading and managing a channel's `nsfw` property ([#380](https://github.com/meew0/discordrb/pull/380))
74
- - The `:administrator` permissions value is aliased as `:administrate` ([#322](https://github.com/meew0/discordrb/pull/322))
75
- - Class methods on `Permissions` for easily building permissions bits values ([#322](https://github.com/meew0/discordrb/pull/322))
243
+ - Reactions can now be serialized with `#to_s` to be used in `Message#react` more easily ([#342](https://github.com/discordrb/discordrb/pull/342))
244
+ - Additional objects and attributes for parsing embeds on messages ([#344](https://github.com/discordrb/discordrb/pull/344), thanks @mattantonelli)
245
+ - 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)
246
+ - API support for managing webhooks ([#356](https://github.com/discordrb/discordrb/pull/356), thanks @Daniel-Worrall)
247
+ - Support for reading and managing a channel's `nsfw` property ([#380](https://github.com/discordrb/discordrb/pull/380))
248
+ - The `:administrator` permissions value is aliased as `:administrate` ([#322](https://github.com/discordrb/discordrb/pull/322))
249
+ - Class methods on `Permissions` for easily building permissions bits values ([#322](https://github.com/discordrb/discordrb/pull/322))
76
250
  - `Gateway#send_packet` and `Gateway#send_raw` methods to send custom data payloads to the gateway
77
251
  - Methods for reading `icon_url` and `proxy_icon_url` in `EmbedAuthor`
78
- - Methods for obtaining a server and channels invites ([#394](https://github.com/meew0/discordrb/pull/394))
79
- - Example of using awaits ([#370](https://github.com/meew0/discordrb/pull/370))
80
- - Methods on `Member` for kicking and banning ([#404](https://github.com/meew0/discordrb/pull/404))
81
- - API method and abstraction for adding members to guilds with OAuth2 tokens ([#413](https://github.com/meew0/discordrb/pull/413))
82
- - Example of using a prefix proc ([#411](https://github.com/meew0/discordrb/pull/411))
83
- - **(breaking change)** Methods for managing a server's system channel ([#437](https://github.com/meew0/discordrb/pull/437), thanks @ldelelis)
84
- - **(breaking change)** Additional error code constants ([#419](https://github.com/meew0/discordrb/pull/419), thanks @LikeLakers2)
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/meew0/discordrb/pull/360))
86
- - **(breaking change)** Additional `Server` properties for verification levels, default message notification levels, and explicit content filter settings ([#414](https://github.com/meew0/discordrb/pull/414), thanks @PixeLInc)
87
- - **(breaking change)** `nonce` is accepted in `API::Channel.create_message` ([#414](https://github.com/meew0/discordrb/pull/414), thanks @PixeLInc)
88
- - Setters for new status options (`Bot#listening=`, `Bot#watching=`) ([#432](https://github.com/meew0/discordrb/pull/432), thanks @PixeLInc)
89
- - Documentation examples for sending a file ([#409](https://github.com/meew0/discordrb/pull/409))
90
- - Respondable implements `#send_embed` ([#420](https://github.com/meew0/discordrb/pull/420))
252
+ - Methods for obtaining a server and channels invites ([#394](https://github.com/discordrb/discordrb/pull/394))
253
+ - Example of using awaits ([#370](https://github.com/discordrb/discordrb/pull/370))
254
+ - Methods on `Member` for kicking and banning ([#404](https://github.com/discordrb/discordrb/pull/404))
255
+ - API method and abstraction for adding members to guilds with OAuth2 tokens ([#413](https://github.com/discordrb/discordrb/pull/413))
256
+ - Example of using a prefix proc ([#411](https://github.com/discordrb/discordrb/pull/411))
257
+ - **(breaking change)** Methods for managing a server's system channel ([#437](https://github.com/discordrb/discordrb/pull/437), thanks @ldelelis)
258
+ - **(breaking change)** Additional error code constants ([#419](https://github.com/discordrb/discordrb/pull/419), thanks @LikeLakers2)
259
+ - 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))
260
+ - **(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)
261
+ - **(breaking change)** `nonce` is accepted in `API::Channel.create_message` ([#414](https://github.com/discordrb/discordrb/pull/414), thanks @PixeLInc)
262
+ - Setters for new status options (`Bot#listening=`, `Bot#watching=`) ([#432](https://github.com/discordrb/discordrb/pull/432), thanks @PixeLInc)
263
+ - Documentation examples for sending a file ([#409](https://github.com/discordrb/discordrb/pull/409))
264
+ - Respondable implements `#send_embed` ([#420](https://github.com/discordrb/discordrb/pull/420))
91
265
  - `Invite` now supplies `max_age` and `created_at`
92
- - `Invite` now supplies `member_count` and `online_member_count` ([#454](https://github.com/meew0/discordrb/pull/454), thanks @Snazzah)
93
- - `Server` methods for managing a server's embed (widget) settings ([#435](https://github.com/meew0/discordrb/pull/435))
94
- - **(breaking change)** Support for category channels in `Server` and `Channel` ([#415](https://github.com/meew0/discordrb/pull/415), [#477](https://github.com/meew0/discordrb/pull/477), thanks @omnilord)
95
- - `CommandBot` and commands channel whitelist can now be modified after creation ([#446](https://github.com/meew0/discordrb/pull/446), thanks @omnilord)
96
- - A `Role`'s `position` can now be sorted relative to other roles ([#445](https://github.com/meew0/discordrb/pull/445), thanks @mattantonelli)
97
- - The `return` keyword inside of commands can be used to return content to Discord ([#462](https://github.com/meew0/discordrb/pull/462), thanks @TrenchFroast)
98
- - `Emoji` now supplies `animated` ([#464](https://github.com/meew0/discordrb/pull/464), thanks @PixeLInc)
99
- - Additional instructions for installation of Ruby's devkit for Ruby 2.3+ ([#468](https://github.com/meew0/discordrb/pull/468), thanks @oct2pus)
100
- - `Server` API for retrieving a server's audit logs ([#353](https://github.com/meew0/discordrb/pull/353), thanks @Snazzah)
101
- - `EventContainer` methods for server role create, delete, and update events ([#494](https://github.com/meew0/discordrb/pull/494), thanks @Daniel-Worrall)
102
- - `PlayingEvent` now returns `details` ([#486](https://github.com/meew0/discordrb/pull/486), thanks @xTVaser)
103
- - `Role` now supplies `server` ([#505](https://github.com/meew0/discordrb/pull/505), thanks @micke)
104
- - Documentation for the `discordrb-webhooks` gem in `README.md` ([#460](https://github.com/meew0/discordrb/pull/460))
105
- - A new, synchronous awaits system available via `#await!` ([#499](https://github.com/meew0/discordrb/pull/499))
106
- - `Channel#sort_after`, for moving a channel around a server within categories easily ([#497](https://github.com/meew0/discordrb/pull/497))
107
- - The gemspec now includes a link to the changelog ([#515](https://github.com/meew0/discordrb/pull/515), thanks @ChallahuAkbar)
108
- - Commands can now be restricted by either `allowed_roles` or `required_roles` ([#469](https://github.com/meew0/discordrb/pull/469), thanks @elfenars)
109
- - `Bot#parse_mention` parses `Channel` mentions ([#525](https://github.com/meew0/discordrb/pull/525), thanks @estherbolik)
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/meew0/discordrb/pull/527), thanks @oct2pus for additional testing)
111
- - "Priority Speaker" permission bit ([#530](https://github.com/meew0/discordrb/pull/530), thanks @Chewsterchew)
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/meew0/discordrb/pull/524))
113
- - **(breaking change)** Methods for managing a `Channel`'s slowmode settings ([#573](https://github.com/meew0/discordrb/pull/573), thanks @badBlackShark)
266
+ - `Invite` now supplies `member_count` and `online_member_count` ([#454](https://github.com/discordrb/discordrb/pull/454), thanks @Snazzah)
267
+ - `Server` methods for managing a server's embed (widget) settings ([#435](https://github.com/discordrb/discordrb/pull/435))
268
+ - **(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)
269
+ - `CommandBot` and commands channel whitelist can now be modified after creation ([#446](https://github.com/discordrb/discordrb/pull/446), thanks @omnilord)
270
+ - A `Role`'s `position` can now be sorted relative to other roles ([#445](https://github.com/discordrb/discordrb/pull/445), thanks @mattantonelli)
271
+ - The `return` keyword inside of commands can be used to return content to Discord ([#462](https://github.com/discordrb/discordrb/pull/462), thanks @TrenchFroast)
272
+ - `Emoji` now supplies `animated` ([#464](https://github.com/discordrb/discordrb/pull/464), thanks @PixeLInc)
273
+ - Additional instructions for installation of Ruby's devkit for Ruby 2.3+ ([#468](https://github.com/discordrb/discordrb/pull/468), thanks @oct2pus)
274
+ - `Server` API for retrieving a server's audit logs ([#353](https://github.com/discordrb/discordrb/pull/353), thanks @Snazzah)
275
+ - `EventContainer` methods for server role create, delete, and update events ([#494](https://github.com/discordrb/discordrb/pull/494), thanks @Daniel-Worrall)
276
+ - `PlayingEvent` now returns `details` ([#486](https://github.com/discordrb/discordrb/pull/486), thanks @xTVaser)
277
+ - `Role` now supplies `server` ([#505](https://github.com/discordrb/discordrb/pull/505), thanks @micke)
278
+ - Documentation for the `discordrb-webhooks` gem in `README.md` ([#460](https://github.com/discordrb/discordrb/pull/460))
279
+ - A new, synchronous awaits system available via `#await!` ([#499](https://github.com/discordrb/discordrb/pull/499))
280
+ - `Channel#sort_after`, for moving a channel around a server within categories easily ([#497](https://github.com/discordrb/discordrb/pull/497))
281
+ - The gemspec now includes a link to the changelog ([#515](https://github.com/discordrb/discordrb/pull/515), thanks @PanisSupraOmnia)
282
+ - Commands can now be restricted by either `allowed_roles` or `required_roles` ([#469](https://github.com/discordrb/discordrb/pull/469), thanks @elfenars)
283
+ - `Bot#parse_mention` parses `Channel` mentions ([#525](https://github.com/discordrb/discordrb/pull/525), thanks @estherbolik)
284
+ - 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)
285
+ - "Priority Speaker" permission bit ([#530](https://github.com/discordrb/discordrb/pull/530), thanks @Chewsterchew)
286
+ - 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))
287
+ - **(breaking change)** Methods for managing a `Channel`'s slowmode settings ([#573](https://github.com/discordrb/discordrb/pull/573), thanks @badBlackShark)
114
288
 
115
289
  ### Changed
116
290
 
117
- - `Channel#make_invite` now accepts an argument to always return a unique invite code ([#312](https://github.com/meew0/discordrb/pull/312))
118
- - More of the API accepts objects that respond to `#resolve_id` ([#313](https://github.com/meew0/discordrb/pull/313), [#328](https://github.com/meew0/discordrb/pull/328), thanks @Likelakers2)
119
- - **(breaking change)** `Channel#history` and `API::Channel.messages` now accepts `around_id` ([#314](https://github.com/meew0/discordrb/pull/314))
120
- - **(breaking change)** `API::Server.prune_count` accepts `days` ([#315](https://github.com/meew0/discordrb/pull/315))
121
- - **(breaking change)** Methods for creating channels accept additional arguments ([#321](https://github.com/meew0/discordrb/pull/321))
122
- - `Channel` overwrite-related API now returns an `Overwrite` object ([#321](https://github.com/meew0/discordrb/pull/321))
123
- - **(breaking change)** Creating roles now accepts more parameters ([#323](https://github.com/meew0/discordrb/pull/323), thanks @Reaver01)
291
+ - `Channel#make_invite` now accepts an argument to always return a unique invite code ([#312](https://github.com/discordrb/discordrb/pull/312))
292
+ - 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)
293
+ - **(breaking change)** `Channel#history` and `API::Channel.messages` now accepts `around_id` ([#314](https://github.com/discordrb/discordrb/pull/314))
294
+ - **(breaking change)** `API::Server.prune_count` accepts `days` ([#315](https://github.com/discordrb/discordrb/pull/315))
295
+ - **(breaking change)** Methods for creating channels accept additional arguments ([#321](https://github.com/discordrb/discordrb/pull/321))
296
+ - `Channel` overwrite-related API now returns an `Overwrite` object ([#321](https://github.com/discordrb/discordrb/pull/321))
297
+ - **(breaking change)** Creating roles now accepts more parameters ([#323](https://github.com/discordrb/discordrb/pull/323), thanks @Reaver01)
124
298
  - 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/meew0/discordrb/pull/337))
126
- - `Voice::Encoder#encode_file` now accepts options for ffmpeg ([#341](https://github.com/meew0/discordrb/pull/341), thanks @oyisre)
127
- - Objects that implement `IDObject` can now be compared using more operators ([#346](https://github.com/meew0/discordrb/pull/346), thanks @mattantonelli)
128
- - Filled in permissions bit for viewing a server's audit log ([#349](https://github.com/meew0/discordrb/pull/349), thanks @Daniel-Worrall)
129
- - https://cdn.discordapp.com is now used as the base URL for CDN resources like avatars and server icons ([#358](https://github.com/meew0/discordrb/pull/358))
130
- - Reaction events raised from the bot's actions will respect `parse_self` ([#350](https://github.com/meew0/discordrb/pull/350), thanks @Daniel-Worrall)
131
- - `Webhooks::Embed#initialize` parses its `color`/`colour` argument ([#364](https://github.com/meew0/discordrb/pull/364), thanks @Daniel-Worrall)
132
- - Webhook related events can now be matched on webhook ID ([#363](https://github.com/meew0/discordrb/pull/363), thanks @Daniel-Worrall)
133
- - Discord's default user avatar URLs will now be returned when applicable ([#375](https://github.com/meew0/discordrb/pull/375))
134
- - `Cache#find_user` can now find individual users if name and discriminator is given ([#384](https://github.com/meew0/discordrb/pull/384))
135
- - `ReactionEvent` provides both `server` and `member`, if possible ([#351](https://github.com/meew0/discordrb/pull/351), thanks @Daniel-Worrall)
136
- - Installation instructions now include guides for installing with Bundler ([#386](https://github.com/meew0/discordrb/pull/386), [#405](https://github.com/meew0/discordrb/pull/405), thanks @VxJasonxV and @PixeLInc)
137
- - **(breaking change)** `default_channel` implementation is updated to reflect Discord changes ([#382](https://github.com/meew0/discordrb/pull/382), [#534](https://github.com/meew0/discordrb/pull/534))
138
- - Documentation around the conditions where our API returns `nil` is clarified ([#395](https://github.com/meew0/discordrb/pull/395), thanks @LikeLakers2)
299
+ - `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))
300
+ - `Voice::Encoder#encode_file` now accepts options for ffmpeg ([#341](https://github.com/discordrb/discordrb/pull/341), thanks @oyisre)
301
+ - Objects that implement `IDObject` can now be compared using more operators ([#346](https://github.com/discordrb/discordrb/pull/346), thanks @mattantonelli)
302
+ - Filled in permissions bit for viewing a server's audit log ([#349](https://github.com/discordrb/discordrb/pull/349), thanks @Daniel-Worrall)
303
+ - <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))
304
+ - Reaction events raised from the bot's actions will respect `parse_self` ([#350](https://github.com/discordrb/discordrb/pull/350), thanks @Daniel-Worrall)
305
+ - `Webhooks::Embed#initialize` parses its `color`/`colour` argument ([#364](https://github.com/discordrb/discordrb/pull/364), thanks @Daniel-Worrall)
306
+ - Webhook related events can now be matched on webhook ID ([#363](https://github.com/discordrb/discordrb/pull/363), thanks @Daniel-Worrall)
307
+ - Discord's default user avatar URLs will now be returned when applicable ([#375](https://github.com/discordrb/discordrb/pull/375))
308
+ - `Cache#find_user` can now find individual users if name and discriminator is given ([#384](https://github.com/discordrb/discordrb/pull/384))
309
+ - `ReactionEvent` provides both `server` and `member`, if possible ([#351](https://github.com/discordrb/discordrb/pull/351), thanks @Daniel-Worrall)
310
+ - 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)
311
+ - **(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))
312
+ - Documentation around the conditions where our API returns `nil` is clarified ([#395](https://github.com/discordrb/discordrb/pull/395), thanks @LikeLakers2)
139
313
  - 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/meew0/discordrb/pull/424), thanks @soukouki)
141
- - `Bucket#rate_limited?` now accepts an `increment` value for weighted rate limits ([#427](https://github.com/meew0/discordrb/pull/427), thanks @Lavode)
142
- - **(breaking change)** `Server#bans` now returns `Array<ServerBan>`, which contains `reason` data in addition to the user banned ([#404](https://github.com/meew0/discordrb/pull/404))
143
- - `Channel#prune` now accepts a block that can be used to filter the messages to be pruned ([#421](https://github.com/meew0/discordrb/pull/421), thanks @snapcase)
144
- - WSCS verions message is now only printed when using voice functionality ([#438](https://github.com/meew0/discordrb/pull/438), thanks @dreid)
314
+ - **(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)
315
+ - `Bucket#rate_limited?` now accepts an `increment` value for weighted rate limits ([#427](https://github.com/discordrb/discordrb/pull/427), thanks @Lavode)
316
+ - **(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))
317
+ - `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)
318
+ - WSCS verions message is now only printed when using voice functionality ([#438](https://github.com/discordrb/discordrb/pull/438), thanks @dreid)
145
319
  - **(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/meew0/discordrb/pull/476), thanks @nicolasleger)
320
+ - CI is now tested against Ruby 2.3, 2.4, and 2.5 ([#476](https://github.com/discordrb/discordrb/pull/476), thanks @nicolasleger)
147
321
  - CI now tests with YARD to validate docstrings
148
- - Specs for `Channel` are refactored ([#481](https://github.com/meew0/discordrb/pull/481), thanks @Daniel-Worrall)
149
- - Specs are refactored to not use `module` namespaces ([#520](https://github.com/meew0/discordrb/pull/520), thanks @Daniel-Worrall)
322
+ - Specs for `Channel` are refactored ([#481](https://github.com/discordrb/discordrb/pull/481), thanks @Daniel-Worrall)
323
+ - Specs are refactored to not use `module` namespaces ([#520](https://github.com/discordrb/discordrb/pull/520), thanks @Daniel-Worrall)
150
324
  - `Bot` now logs to `LOGGER.info` when the bot successfully resumes
151
- - Code climate tooling is updated ([#489](https://github.com/meew0/discordrb/pull/489), thanks @ChallahuAkbar)
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/meew0/discordrb/pull/473))
153
- - The changelog now follows the "Keep a Changelog" format ([#504](https://github.com/meew0/discordrb/pull/504), thanks @connorshea)
154
- - `Bot#run` documentation is adjusted to clarify the use of its async argument ([#521](https://github.com/meew0/discordrb/pull/521))
155
- - **(breaking change)** `Bot#join` is renamed to `Bot#accept_invite` ([#521](https://github.com/meew0/discordrb/pull/521))
156
- - `Embed#colour=`/`Embed#color=` now accepts instances of `ColourRGB`/`ColorRGB` ([#523](https://github.com/meew0/discordrb/pull/523))
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/meew0/discordrb/pull/528), thanks @cky)
158
- - Documentation clarifications around `voice_state_update`, `member_update`, and `server_create` ([#531](https://github.com/meew0/discordrb/pull/531))
159
- - URLs listed across the code base now use https, various other cleanups ([#540](https://github.com/meew0/discordrb/pull/540), thanks @ChallahuAkbar)
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/meew0/discordrb/pull/544))
161
- - Warnings about accessing cached data after server streaming times out are now clarified and printed when accessing relevant methods ([#578](https://github.com/meew0/discordrb/pull/578), thanks @connorshea)
325
+ - Code climate tooling is updated ([#489](https://github.com/discordrb/discordrb/pull/489), thanks @PanisSupraOmnia)
326
+ - `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))
327
+ - The changelog now follows the "Keep a Changelog" format ([#504](https://github.com/discordrb/discordrb/pull/504), thanks @connorshea)
328
+ - `Bot#run` documentation is adjusted to clarify the use of its async argument ([#521](https://github.com/discordrb/discordrb/pull/521))
329
+ - **(breaking change)** `Bot#join` is renamed to `Bot#accept_invite` ([#521](https://github.com/discordrb/discordrb/pull/521))
330
+ - `Embed#colour=`/`Embed#color=` now accepts instances of `ColourRGB`/`ColorRGB` ([#523](https://github.com/discordrb/discordrb/pull/523))
331
+ - `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)
332
+ - Documentation clarifications around `voice_state_update`, `member_update`, and `server_create` ([#531](https://github.com/discordrb/discordrb/pull/531))
333
+ - URLs listed across the code base now use https, various other cleanups ([#540](https://github.com/discordrb/discordrb/pull/540), thanks @PanisSupraOmnia)
334
+ - 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))
335
+ - 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
336
 
163
337
  ### Deprecated
164
338
 
165
- - The existing awaits system is deprecated in favor of a simpler, synchronous system introduced in [#499](https://github.com/meew0/discordrb/pull/499) ([#509](https://github.com/meew0/discordrb/pull/509))
339
+ - 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
340
 
167
341
  ### Removed
168
342
 
169
- - **(breaking change)** Unsupported `mentions` argument in Create Message API ([#420](https://github.com/meew0/discordrb/pull/420))
343
+ - **(breaking change)** Unsupported `mentions` argument in Create Message API ([#420](https://github.com/discordrb/discordrb/pull/420))
170
344
  - **(breaking change)** `TrueClass` is no longer an alias for `:debug` logging in `Bot#initialize`
171
345
 
172
346
  ### Fixed
173
347
 
174
- - `Errors::MessageTooLong` is now raised correctly ([#325](https://github.com/meew0/discordrb/pull/325), thanks @Daniel-Worrall)
175
- - Certain `Reaction` related events properly inherit `Event` ([#329](https://github.com/meew0/discordrb/pull/329), thanks @valeth)
176
- - Permissions calculation now takes the server's `@everyone` role permissions into consideration (additional work by [#357](https://github.com/meew0/discordrb/pull/357), thanks @mattantonelli)
177
- - `Role#members` had a typo preventing it from working ([#340](https://github.com/meew0/discordrb/pull/340))
178
- - `Message#my_reactions` now correctly returns `Array<Reaction>` ([#342](https://github.com/meew0/discordrb/pull/342))
348
+ - `Errors::MessageTooLong` is now raised correctly ([#325](https://github.com/discordrb/discordrb/pull/325), thanks @Daniel-Worrall)
349
+ - Certain `Reaction` related events properly inherit `Event` ([#329](https://github.com/discordrb/discordrb/pull/329), thanks @valeth)
350
+ - 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)
351
+ - `Role#members` had a typo preventing it from working ([#340](https://github.com/discordrb/discordrb/pull/340))
352
+ - `Message#my_reactions` now correctly returns `Array<Reaction>` ([#342](https://github.com/discordrb/discordrb/pull/342))
179
353
  - 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/meew0/discordrb/pull/367), thanks @Snazzah)
181
- - Corrected implementation of the `reason` parameter in various API ([#372](https://github.com/meew0/discordrb/pull/372))
182
- - `CommandBot`'s advanced functionality properly handles empty strings in certain settings ([#379](https://github.com/meew0/discordrb/pull/379), thanks @LikeLakers2)
183
- - Rate limit headers are processed correctly when running into certain API exceptions ([#440](https://github.com/meew0/discordrb/pull/440), thanks @unleashy)
184
- - Typos preventing `ArgumentError` from being raised when processing `arg_types` ([#400](https://github.com/meew0/discordrb/pull/400), thanks @Daniel-Worrall)
354
+ - Documentation for `TypingEvent` is now more accurate ([#367](https://github.com/discordrb/discordrb/pull/367), thanks @Snazzah)
355
+ - Corrected implementation of the `reason` parameter in various API ([#372](https://github.com/discordrb/discordrb/pull/372))
356
+ - `CommandBot`'s advanced functionality properly handles empty strings in certain settings ([#379](https://github.com/discordrb/discordrb/pull/379), thanks @LikeLakers2)
357
+ - Rate limit headers are processed correctly when running into certain API exceptions ([#440](https://github.com/discordrb/discordrb/pull/440), thanks @unleashy)
358
+ - Typos preventing `ArgumentError` from being raised when processing `arg_types` ([#400](https://github.com/discordrb/discordrb/pull/400), thanks @Daniel-Worrall)
185
359
  - `Server#create_role` correctly accepts a `ColourRGB`/`ColorRGB` via `#combined`
186
360
  - `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/meew0/discordrb/pull/391))
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/meew0/discordrb/pull/431))
189
- - Bulk deleting messages properly filters out messages older than two weeks ([#439](https://github.com/meew0/discordrb/pull/439), thanks @Emberwalker)
190
- - Rate limiting when certain API errors occur are handled properly ([#440](https://github.com/meew0/discordrb/pull/440), thanks @unleashy)
191
- - Querying the cache for an unknown member no longer adds `nil` elements, which caused unexpected behavior ([#456](https://github.com/meew0/discordrb/pull/456))
192
- - Logging behaves correctly when token is an empty string ([#449](https://github.com/meew0/discordrb/pull/449), thanks @Daniel-Worrall)
193
- - Several typos in documentation ([#444](https://github.com/meew0/discordrb/pull/444), thanks @ToppleKek)
361
+ - 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))
362
+ - 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))
363
+ - Bulk deleting messages properly filters out messages older than two weeks ([#439](https://github.com/discordrb/discordrb/pull/439), thanks @Emberwalker)
364
+ - Rate limiting when certain API errors occur are handled properly ([#440](https://github.com/discordrb/discordrb/pull/440), thanks @unleashy)
365
+ - Querying the cache for an unknown member no longer adds `nil` elements, which caused unexpected behavior ([#456](https://github.com/discordrb/discordrb/pull/456))
366
+ - Logging behaves correctly when token is an empty string ([#449](https://github.com/discordrb/discordrb/pull/449), thanks @Daniel-Worrall)
367
+ - Several typos in documentation ([#444](https://github.com/discordrb/discordrb/pull/444), thanks @ToppleKek)
194
368
  - 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/meew0/discordrb/pull/478), thanks @Daniel-Worrall and @swarley)
369
+ - `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
370
  - `EmbedAuthor` sets the correct instance variable for `proxy_icon_url`
197
- - `ReactionEvent` correctly returns the server on which it occurred ([#484](https://github.com/meew0/discordrb/pull/484), thanks @charagarlnad)
198
- - `ServerRoleCreateEvent` no longer fails to match when supplying a `name` attribute ([#493](https://github.com/meew0/discordrb/pull/493), [#506](https://github.com/meew0/discordrb/pull/506), thanks @Daniel-Worrall and @micke)
199
- - `PlayingEvent` now correctly returns `server` ([#486](https://github.com/meew0/discordrb/pull/486), thanks @xTVaser)
200
- - Roles will no longer be cached twice when using `Server#create_role` ([#488](https://github.com/meew0/discordrb/pull/488))
201
- - Race condition when creating event handlers inside of other event handlers ([#514](https://github.com/meew0/discordrb/pull/514))
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/meew0/discordrb/pull/517), thanks @unleashy)
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/meew0/discordrb/pull/535))
204
- - `end_with` attribute in `MessageEventHandler` now accepts group-less regular expressions without throwing exceptions ([#571](https://github.com/meew0/discordrb/pull/571), thanks @badBlackShark)
205
- - `PresenceEvent` is correctly raised when dispatched ([#574](https://github.com/meew0/discordrb/pull/574))
206
- - `Attachment#initialize` correctly sets `@id` instance variable ([#575](https://github.com/meew0/discordrb/pull/575), thanks @kandayo)
371
+ - `ReactionEvent` correctly returns the server on which it occurred ([#484](https://github.com/discordrb/discordrb/pull/484), thanks @charagarlnad)
372
+ - `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)
373
+ - `PlayingEvent` now correctly returns `server` ([#486](https://github.com/discordrb/discordrb/pull/486), thanks @xTVaser)
374
+ - Roles will no longer be cached twice when using `Server#create_role` ([#488](https://github.com/discordrb/discordrb/pull/488))
375
+ - Race condition when creating event handlers inside of other event handlers ([#514](https://github.com/discordrb/discordrb/pull/514))
376
+ - 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)
377
+ - 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))
378
+ - `end_with` attribute in `MessageEventHandler` now accepts group-less regular expressions without throwing exceptions ([#571](https://github.com/discordrb/discordrb/pull/571), thanks @badBlackShark)
379
+ - `PresenceEvent` is correctly raised when dispatched ([#574](https://github.com/discordrb/discordrb/pull/574))
380
+ - `Attachment#initialize` correctly sets `@id` instance variable ([#575](https://github.com/discordrb/discordrb/pull/575), thanks @kandayo)
207
381
 
208
382
  ## [3.2.1] - 2017-02-18
209
- [3.2.1]: https://github.com/meew0/discordrb/releases/tag/v3.2.1
210
383
 
211
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v3.2.0.1...v3.2.1)
384
+ [3.2.1]: https://github.com/discordrb/discordrb/releases/tag/v3.2.1
385
+
386
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.2.0.1...v3.2.1)
212
387
 
213
388
  ### Changed
389
+
214
390
  - `Bot#stop` and `Gateway#stop` now explicitly return `nil`, for more convenient use in commands
215
391
  - 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/meew0/discordrb/pull/313), thanks @LikeLakers2)
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/meew0/discordrb/issues/309))
392
+ - 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)
393
+ - 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
394
 
219
395
  ### Fixed
396
+
220
397
  - 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/meew0/discordrb/issues/316))
398
+ - Fixed a bug that caused issues when playing short files ([#326](https://github.com/discordrb/discordrb/issues/316))
222
399
 
223
400
  ## [3.2.0.1] - 2017-01-29
224
- [3.2.0.1]: https://github.com/meew0/discordrb/releases/tag/v3.2.0.1
225
401
 
226
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v3.2.0...v3.2.0.1)
402
+ [3.2.0.1]: https://github.com/discordrb/discordrb/releases/tag/v3.2.0.1
403
+
404
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.2.0...v3.2.0.1)
227
405
 
228
406
  ### Fixed
407
+
229
408
  - Attempt to fix an issue that causes a strange problem with dependencies when installing discordrb
230
409
 
231
410
  ## [3.2.0] - 2017-01-29
232
- [3.2.0]: https://github.com/meew0/discordrb/releases/tag/v3.2.0
233
411
 
234
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v3.1.1...v3.2.0)
412
+ [3.2.0]: https://github.com/discordrb/discordrb/releases/tag/v3.2.0
413
+
414
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.1.1...v3.2.0)
235
415
 
236
416
  ### Added
417
+
237
418
  - Various parts of gateway error handling were improved, leading to significant stability improvements:
238
419
  - A long standing bug was fixed that prevented resumes in most cases, which caused unnecessary reconnections.
239
420
  - The error handler that handles problems with sending the raw data over TCP now catches errors more broadly.
240
421
  - 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
422
  - Received heartbeats are now properly handled again
242
423
  - 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/meew0/discordrb/pull/285), thanks @Daniel-Worrall)
424
+ - Adding, updating or deleting custom emoji is now supported ([#285](https://github.com/discordrb/discordrb/pull/285), thanks @Daniel-Worrall)
244
425
  - 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/meew0/discordrb/issues/293) / [#304](https://github.com/meew0/discordrb/pull/304), thanks @LikeLakers2)
246
- - Added type checking and conversion for commands ([#298](https://github.com/meew0/discordrb/pull/298), thanks @ohtaavi)
247
- - 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/meew0/discordrb/pull/262), thanks @z64), added to messages ([#266](https://github.com/meew0/discordrb/pull/266), thanks @z64), and listened for using gateway events as well as internal handlers ([#300](https://github.com/meew0/discordrb/issues/300)).
249
- - Game types and stream URLs are now cached ([#297](https://github.com/meew0/discordrb/issues/297))
250
- - The default non-streaming game was changed to be `0` instead of `nil` ([#277](https://github.com/meew0/discordrb/pull/277), thanks @zeyla)
426
+ - `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)
427
+ - Added type checking and conversion for commands ([#298](https://github.com/discordrb/discordrb/pull/298), thanks @ohtaavi)
428
+ - Bulk deleting messages now checks for message age (see also [discord/discord-api-docs#208](https://github.com/discord/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.
429
+ - 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)).
430
+ - Game types and stream URLs are now cached ([#297](https://github.com/discordrb/discordrb/issues/297))
431
+ - The default non-streaming game was changed to be `0` instead of `nil` ([#277](https://github.com/discordrb/discordrb/pull/277), thanks @zeyla)
251
432
  - 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/meew0/discordrb/pull/268), thanks @greenbigfrog)
433
+ - Permission overwrites can now be deleted from channels ([#268](https://github.com/discordrb/discordrb/pull/268), thanks @greenbigfrog)
253
434
  - 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/meew0/discordrb/pull/270), thanks @VxJasonxV)
255
- - Message authors can now be `User` objects if a `Member` object could not be found or created ([#290](https://github.com/meew0/discordrb/issues/290))
256
- - Added two new events, `unknown` ([#288](https://github.com/meew0/discordrb/issues/288)) and `raw`, that are raised for unknown dispatches and all dispatches, respectively.
257
- - Bots can now be set to fully ignore other bots ([#257](https://github.com/meew0/discordrb/pull/257), thanks @greenbigfrog)
435
+ - Typing events are now respondable, so you can call `#respond` on them for example ([#270](https://github.com/discordrb/discordrb/pull/270), thanks @VxJasonxV)
436
+ - 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))
437
+ - 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.
438
+ - Bots can now be set to fully ignore other bots ([#257](https://github.com/discordrb/discordrb/pull/257), thanks @greenbigfrog)
258
439
  - 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/meew0/discordrb/pull/275), thanks @FormalHellhound)
260
- - Updated the command example to no longer include user-specific stuff ([#260](https://github.com/meew0/discordrb/issues/260))
440
+ - The default help command no longer shows commands the user can't use ([#275](https://github.com/discordrb/discordrb/pull/275), thanks @FormalHellhound)
441
+ - Updated the command example to no longer include user-specific stuff ([#260](https://github.com/discordrb/discordrb/issues/260))
261
442
  - `Server#role` now resolves IDs, so they can be passed as strings if necessary.
262
443
 
263
444
  ### Fixed
445
+
264
446
  - Fixed bots' shard settings being ignored in certain cases
265
447
  - 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/meew0/discordrb/pull/302), thanks @LikeLakers2)
267
- - Cached channel data is now updated properly on change ([#272](https://github.com/meew0/discordrb/issues/272))
268
- - Users' avatars are now updated properly on change ([#265](https://github.com/meew0/discordrb/pull/265), thanks @Roughsketch)
269
- - Fixed voice state tracking for newly created channels ([#292](https://github.com/meew0/discordrb/issues/292))
270
- - Fixed event attribute handling for PlayingEvent ([#303](https://github.com/meew0/discordrb/pull/303), thanks @sven-strothoff)
271
- - Getting specific emoji by ID no longer fails to resolve non-cached emoji ([#283](https://github.com/meew0/discordrb/pull/283), thanks @greenbigfrog)
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/meew0/discordrb/issues/301))
448
+ - Fixed some specific REST methods that were broken by the API module refactor ([#302](https://github.com/discordrb/discordrb/pull/302), thanks @LikeLakers2)
449
+ - Cached channel data is now updated properly on change ([#272](https://github.com/discordrb/discordrb/issues/272))
450
+ - Users' avatars are now updated properly on change ([#265](https://github.com/discordrb/discordrb/pull/265), thanks @Roughsketch)
451
+ - Fixed voice state tracking for newly created channels ([#292](https://github.com/discordrb/discordrb/issues/292))
452
+ - Fixed event attribute handling for PlayingEvent ([#303](https://github.com/discordrb/discordrb/pull/303), thanks @sven-strothoff)
453
+ - Getting specific emoji by ID no longer fails to resolve non-cached emoji ([#283](https://github.com/discordrb/discordrb/pull/283), thanks @greenbigfrog)
454
+ - 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
455
  - 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/meew0/discordrb/issues/276))
275
- - Fixed some specific log messages not being called properly ([#263](https://github.com/meew0/discordrb/pull/263), thanks @Roughsketch)
456
+ - Fixed error handling for messages over the character limit ([#276](https://github.com/discordrb/discordrb/issues/276))
457
+ - Fixed some specific log messages not being called properly ([#263](https://github.com/discordrb/discordrb/pull/263), thanks @Roughsketch)
276
458
  - Fixed some edge case bugs in the default help command:
277
459
  - 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/meew0/discordrb/issues/308))
460
+ - 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
461
  - Fixed a slight formatting mistake
280
462
  - Quoted command arguments in `advanced_functionality` are no longer split by newline
281
463
  - Fixed a specific edge case in command chain handling where handling commands with the same name as the chain delimiter was broken
282
464
 
283
465
  ## [3.1.1] - 2016-10-21
284
- [3.1.1]: https://github.com/meew0/discordrb/releases/tag/v3.1.1
285
466
 
286
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v3.1.0...v3.1.1)
467
+ [3.1.1]: https://github.com/discordrb/discordrb/releases/tag/v3.1.1
468
+
469
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.1.0...v3.1.1)
287
470
 
288
471
  ### Fixed
289
- - An oversight where a `GUILD_DELETE` dispatch would cause an internal error was fixed. ([#256](https://github.com/meew0/discordrb/pull/256), thanks @greenbigfrog)
472
+
473
+ - 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
474
 
291
475
  ## [3.1.0] - 2016-10-20
292
- [3.1.0]: https://github.com/meew0/discordrb/releases/tag/v3.1.0
293
476
 
294
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v3.0.2...v3.1.0)
477
+ [3.1.0]: https://github.com/discordrb/discordrb/releases/tag/v3.1.0
478
+
479
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.0.2...v3.1.0)
295
480
 
296
481
  ### Added
297
- - Emoji handling support ([#226](https://github.com/meew0/discordrb/pull/226), thanks @greenbigfrog)
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/meew0/discordrb/pull/249), thanks @Xzanth)
299
- - The bulk deletion endpoint is now exposed directly using the `Channel#delete_messages` method ([#235](https://github.com/meew0/discordrb/pull/235), thanks @z64)
300
- - The internal settings fields for user statuses that cause statuses to persist across restarts can now be modified ([#233](https://github.com/meew0/discordrb/pull/233), thanks @Daniel-Worrall)
301
- - A few examples have been added to the docs ([#250](https://github.com/meew0/discordrb/pull/250), thanks @SunDwarf)
482
+
483
+ - Emoji handling support ([#226](https://github.com/discordrb/discordrb/pull/226), thanks @greenbigfrog)
484
+ - 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)
485
+ - The bulk deletion endpoint is now exposed directly using the `Channel#delete_messages` method ([#235](https://github.com/discordrb/discordrb/pull/235), thanks @z64)
486
+ - 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)
487
+ - A few examples have been added to the docs ([#250](https://github.com/discordrb/discordrb/pull/250), thanks @SunDwarf)
302
488
  - The specs have been improved; they're still not exhaustive by far but there are at least slightly more now.
303
489
 
304
490
  ### Fixed
305
- - Fixed an important bug that caused the logger not to work in some cases. ([#243](https://github.com/meew0/discordrb/pull/243), thanks @Daniel-Worrall)
491
+
492
+ - 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
493
  - Fixed logger token redaction.
307
- - `unavailable_servers` should no longer crash the bot due to being nil in some cases ([#244](https://github.com/meew0/discordrb/pull/244), thanks @Daniel-Worrall)
308
- - `Profile#on` for member resolution is now no longer overwritten by an alias for `#online` ([#247](https://github.com/meew0/discordrb/pull/247), thanks @Daniel-Worrall)
309
- - A `CommandBot` without any commands should no longer crash when receiving a message that triggers it ([#242](https://github.com/meew0/discordrb/issues/242))
494
+ - `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)
495
+ - `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)
496
+ - 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
497
  - Changing nicknames works again, it has apparently been broken in 3.0.0.
311
498
 
312
499
  ## [3.0.2] - 2016-10-07
313
- [3.0.2]: https://github.com/meew0/discordrb/releases/tag/v3.0.2
314
500
 
315
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v3.0.1...v3.0.2)
501
+ [3.0.2]: https://github.com/discordrb/discordrb/releases/tag/v3.0.2
502
+
503
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.0.1...v3.0.2)
316
504
 
317
505
  ### Changed
318
- - A small change to how CommandBot parameter lists are formatted ([#240](https://github.com/meew0/discordrb/pull/240), thanks @FormalHellhound)
506
+
507
+ - A small change to how CommandBot parameter lists are formatted ([#240](https://github.com/discordrb/discordrb/pull/240), thanks @FormalHellhound)
319
508
 
320
509
  ### Fixed
321
- - Setting properties on a channel (e.g. `Channel#topic=`) works again ([#238](https://github.com/meew0/discordrb/issues/238) / [#239](https://github.com/meew0/discordrb/pull/239), thanks @Daniel-Worrall)
510
+
511
+ - 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
512
 
323
513
  ## [3.0.1] - 2016-10-01
324
- [3.0.1]: https://github.com/meew0/discordrb/releases/tag/v3.0.1
325
514
 
326
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v3.0.0...v3.0.1)
515
+ [3.0.1]: https://github.com/discordrb/discordrb/releases/tag/v3.0.1
516
+
517
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v3.0.0...v3.0.1)
327
518
 
328
519
  A tiny update to support webhook-sent messages properly!
329
520
 
330
521
  ### Added
522
+
331
523
  - Added the utility methods `Message#webhook?` and `User#webhook?` to check whether a message or a user belongs to a webhook
332
524
  - Added `Message#webhook_id` to get the ID of the sending webhook for webhook messages
333
525
  - Added the `webhook_commands` parameter to CommandBot that, if false (default true), prevents webhook-sent messages from being parsed and handled as commands.
334
526
 
335
527
  ### Fixed
528
+
336
529
  - Fixed webhook-sent messages being ignored because their author couldn't be resolved.
337
530
  - Fixed a minor performance problem where a CommandBot would create unnecessarily create redundant objects for every received message.
338
531
 
339
532
  ## [3.0.0] - 2016-09-30
340
- [3.0.0]: https://github.com/meew0/discordrb/releases/tag/v3.0.0
341
533
 
342
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v2.1.3...v3.0.0)
534
+ [3.0.0]: https://github.com/discordrb/discordrb/releases/tag/v3.0.0
535
+
536
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.1.3...v3.0.0)
343
537
 
344
538
  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
539
 
346
540
  As with 2.0.0, there are some breaking changes! They are, as always, highlighted in bold.
347
541
 
348
542
  ### Added
543
+
349
544
  - **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
545
  - 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
- - **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/meew0/discordrb/pull/211), thanks @Daniel-Worrall)
546
+ - **User login using email and password has been removed**. Use a user token instead, see also [here](https://github.com/discord/discord-api-docs/issues/69#issuecomment-223886862).
547
+ - 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
548
  - **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
549
  - 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/meew0/discordrb/pull/203), thanks @depl0y)
356
- - **Calling `users` on a text channel will now only return users who have permission to read it** ([#186](https://github.com/meew0/discordrb/issues/186))
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/meew0/discordrb/pull/206), thanks @SnazzyPine25)
358
- - A variety of new functionality has been added to `Server` and `Channel` objects ([#181](https://github.com/meew0/discordrb/pull/181), thanks @SnazzyPine25):
550
+ - **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)
551
+ - **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))
552
+ - 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)
553
+ - A variety of new functionality has been added to `Server` and `Channel` objects ([#181](https://github.com/discordrb/discordrb/pull/181), thanks @SnazzyPine25):
359
554
  - Bitrate and user limit can now be read and set for voice channels
360
555
  - Server integrations can now be read
361
556
  - Server features and verification level can now be read
362
557
  - 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/meew0/discordrb/issues/145) / [#146](https://github.com/meew0/discordrb/pull/146), thanks @hlaaftana)
558
+ - 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
559
  - Support for the new available statuses:
365
560
  - `Bot#dnd` to make the bot show up as DnD (red dot)
366
561
  - `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/meew0/discordrb/pull/128) and [#143](https://github.com/meew0/discordrb/pull/143), thanks @SnazzyPine25 and @barkerja)
368
- - You can now set a message to be sent when a `CommandBot`'s command fails with a `NoPermission` error ([#200](https://github.com/meew0/discordrb/pull/200), thanks @PoVa)
369
- - There is now an optional field to list the parameters a command can accept ([#201](https://github.com/meew0/discordrb/pull/201), thanks @FormalHellhound)
370
- - Commands can now have an array of roles set that are required to be able to use it ([#178](https://github.com/meew0/discordrb/pull/178), thanks @PoVa)
371
- - Methods like `CommandEvent#<<` for quickly responding to an event are now available in `MessageEvent` too ([#154](https://github.com/meew0/discordrb/pull/154), thanks @hlaaftana)
372
- - Temporary messages, that automatically delete after some time, can now be sent to channels ([#136](https://github.com/meew0/discordrb/issues/136) / [#139](https://github.com/meew0/discordrb/pull/139), thanks @unleashy)
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/meew0/discordrb/pull/130), thanks @SnazzyPine25)
374
- - There is now a `Channel#load_message` method to get a single message by its ID ([#174](https://github.com/meew0/discordrb/pull/174), thanks @z64)
375
- - `Channel#define_overwrite` can now be used with a `Profile` object, together with some internal changes ([#232](https://github.com/meew0/discordrb/issues/232))
376
- - There are now endpoint methods to list a server's channels and channel invites ([#197](https://github.com/meew0/discordrb/pull/197))
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/meew0/discordrb/pull/223), thanks @z64)
562
+ - 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)
563
+ - 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)
564
+ - There is now an optional field to list the parameters a command can accept ([#201](https://github.com/discordrb/discordrb/pull/201), thanks @FormalHellhound)
565
+ - 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)
566
+ - 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)
567
+ - 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)
568
+ - 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)
569
+ - 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)
570
+ - `Channel#define_overwrite` can now be used with a `Profile` object, together with some internal changes ([#232](https://github.com/discordrb/discordrb/issues/232))
571
+ - There are now endpoint methods to list a server's channels and channel invites ([#197](https://github.com/discordrb/discordrb/pull/197))
572
+ - 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
573
  - Role mentionability can now be set using `Role#mentionable=`
379
- - The current bot's OAuth application can now be read ([#175](https://github.com/meew0/discordrb/pull/175), thanks @SnazzyPine25)
380
- - You can now mute and deafen other members ([#157](https://github.com/meew0/discordrb/pull/157), thanks @SnazzyPine25)
381
- - The internal `Logger` now supports writing to a file instead of STDOUT ([#171](https://github.com/meew0/discordrb/issues/171))
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/meew0/discordrb/pull/217), thanks @PoVa)
383
- - Roles can now have their permissions bitfield set directly ([#177](https://github.com/meew0/discordrb/issues/177))
384
- - The `Bot#invite_url` method now supports adding permission bits into the generated URL ([#218](https://github.com/meew0/discordrb/pull/218), thanks @PoVa)
385
- - A utility method `User#send_file` has been added to directly send a file to a user in PM ([#168](https://github.com/meew0/discordrb/issues/168) / [#172](https://github.com/meew0/discordrb/pull/172), thanks @SnazzyPine25)
386
- - You can now get the list of members that have a particular role assigned using `Role#members` ([#147](https://github.com/meew0/discordrb/pull/147), thanks @hlaaftana)
387
- - You can now check whether a `VoiceBot` is playing right now using `#playing?` ([#137](https://github.com/meew0/discordrb/pull/137), thanks @SnazzyPine25)
388
- - You can now get the channel a `VoiceBot` is playing on ([#138](https://github.com/meew0/discordrb/pull/138), thanks @snapcase)
389
- - The permissions bit map has been updated for emoji, "Administrator" and nickname changes ([#180](https://github.com/meew0/discordrb/pull/180), thanks @megumisonoda)
574
+ - The current bot's OAuth application can now be read ([#175](https://github.com/discordrb/discordrb/pull/175), thanks @SnazzyPine25)
575
+ - You can now mute and deafen other members ([#157](https://github.com/discordrb/discordrb/pull/157), thanks @SnazzyPine25)
576
+ - The internal `Logger` now supports writing to a file instead of STDOUT ([#171](https://github.com/discordrb/discordrb/issues/171))
577
+ - 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)
578
+ - Roles can now have their permissions bitfield set directly ([#177](https://github.com/discordrb/discordrb/issues/177))
579
+ - The `Bot#invite_url` method now supports adding permission bits into the generated URL ([#218](https://github.com/discordrb/discordrb/pull/218), thanks @PoVa)
580
+ - 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)
581
+ - 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)
582
+ - You can now check whether a `VoiceBot` is playing right now using `#playing?` ([#137](https://github.com/discordrb/discordrb/pull/137), thanks @SnazzyPine25)
583
+ - You can now get the channel a `VoiceBot` is playing on ([#138](https://github.com/discordrb/discordrb/pull/138), thanks @snapcase)
584
+ - The permissions bit map has been updated for emoji, "Administrator" and nickname changes ([#180](https://github.com/discordrb/discordrb/pull/180), thanks @megumisonoda)
390
585
  - A method `Bot#connected?` has been added to check whether the bot is currently connected to the gateway.
391
586
  - 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/meew0/discordrb/issues/225) / [#231](https://github.com/meew0/discordrb/pull/231), thanks @Daniel-Worrall)
393
- - 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).
587
+ - 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)
588
+ - 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/discord/discord-api-docs/issues/108).
394
589
  - Rogue presences, i.e. presences without an associated cached member, now print a log message instead of being completely ignored
395
590
  - A variety of aliases have been added to existing methods.
396
591
  - An example to show off voice sending has been added to the repo, and existing examples have been improved.
397
592
  - A large amount of fixes and clarifications have been made to the docs.
398
593
 
399
594
  ### Fixed
595
+
400
596
  - 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/meew0/discordrb/issues/169) / [#170](https://github.com/meew0/discordrb/issues/170) / [#191](https://github.com/meew0/discordrb/pull/191), thanks @stoodfarback)
597
+ - 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
598
  - 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/meew0/discordrb/pull/210), thanks @megumisonoda)
404
- - Voice state handling has been completely redone, fixing a variety of caching issues. ([#159](https://github.com/meew0/discordrb/issues/159))
405
- - Getting a voice channel's users no longer does a chunk request ([#142](https://github.com/meew0/discordrb/issues/142))
599
+ - 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)
600
+ - Voice state handling has been completely redone, fixing a variety of caching issues. ([#159](https://github.com/discordrb/discordrb/issues/159))
601
+ - Getting a voice channel's users no longer does a chunk request ([#142](https://github.com/discordrb/discordrb/issues/142))
406
602
  - `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/meew0/discordrb/issues/215))
408
- - Gateway errors should no longer spam the console ([#141](https://github.com/meew0/discordrb/issues/141) / [#148](https://github.com/meew0/discordrb/pull/148), thanks @meew0)
603
+ - 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))
604
+ - 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
605
  - Role hoisting (both setting and reading it) should now work properly
410
606
  - 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/meew0/discordrb/pull/183), thanks @Apexal)
607
+ - Voice states with a nil channel should no longer crash when accessed ([#183](https://github.com/discordrb/discordrb/pull/183), thanks @Apexal)
412
608
  - 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
609
  - 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
610
  - `GUILD_DELETE` events for unavailable servers are now ignored
415
611
  - 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/meew0/discordrb/issues/227) / [#228](https://github.com/meew0/discordrb/pull/228), thanks @heimidal)
612
+ - 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
613
 
418
614
  ## [2.1.3] - 2016-06-11
419
- [2.1.3]: https://github.com/meew0/discordrb/releases/tag/v2.1.3
420
615
 
421
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v2.1.2...v2.1.3)
616
+ [2.1.3]: https://github.com/discordrb/discordrb/releases/tag/v2.1.3
617
+
618
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.1.2...v2.1.3)
422
619
 
423
620
  ### Fixed
424
- - Various messages that were just printed to stdout that should have been using the `Logger` system now do ([#132](https://github.com/meew0/discordrb/issues/132) and [#133](https://github.com/meew0/discordrb/pull/133), thanks @PoVa)
425
- - A mistake in the documentation was fixed ([#140](https://github.com/meew0/discordrb/issues/140))
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/meew0/discordrb/issues/129))
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/meew0/discordrb/issues/134))
621
+
622
+ - 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)
623
+ - A mistake in the documentation was fixed ([#140](https://github.com/discordrb/discordrb/issues/140))
624
+ - 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))
625
+ - 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
626
 
429
627
  ## [2.1.2] - 2016-05-29
430
- [2.1.2]: https://github.com/meew0/discordrb/releases/tag/v2.1.2
431
628
 
432
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v2.1.1...v2.1.2)
629
+ [2.1.2]: https://github.com/discordrb/discordrb/releases/tag/v2.1.2
630
+
631
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.1.1...v2.1.2)
433
632
 
434
633
  ### Added
634
+
435
635
  - 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/meew0/discordrb/pull/118), thanks @snapcase)
636
+ - `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
637
 
438
638
  ### Fixed
639
+
439
640
  - A few unresolved links in the documentation were fixed.
440
641
  - 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/meew0/discordrb/pull/124), thanks @Snazzah)
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/meew0/discordrb/issues/125))
443
- - Network errors (`EPIPE` and the like) should no longer cause an exception while processing ([#127](https://github.com/meew0/discordrb/issues/127))
642
+ - 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)
643
+ - 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))
644
+ - Network errors (`EPIPE` and the like) should no longer cause an exception while processing ([#127](https://github.com/discordrb/discordrb/issues/127))
444
645
  - Uncached members in messages are now logged.
445
646
 
446
647
  ## [2.1.1] - 2016-05-08
447
- [2.1.1]: https://github.com/meew0/discordrb/releases/tag/v2.1.1
448
648
 
449
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v2.1.0...v2.1.1)
649
+ [2.1.1]: https://github.com/discordrb/discordrb/releases/tag/v2.1.1
650
+
651
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.1.0...v2.1.1)
450
652
 
451
653
  ### Fixed
452
- - Fixed a caching error that occurred when deleting roles ([#113](https://github.com/meew0/discordrb/issues/113))
453
- - Commands should no longer be triggered with nil authors ([#114](https://github.com/meew0/discordrb/issues/114))
654
+
655
+ - Fixed a caching error that occurred when deleting roles ([#113](https://github.com/discordrb/discordrb/issues/113))
656
+ - Commands should no longer be triggered with nil authors ([#114](https://github.com/discordrb/discordrb/issues/114))
454
657
 
455
658
  ## [2.1.0] - 2016-04-30
456
- [2.1.0]: https://github.com/meew0/discordrb/releases/tag/v2.1.0
457
659
 
458
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v2.0.4...v2.1.0)
660
+ [2.1.0]: https://github.com/discordrb/discordrb/releases/tag/v2.1.0
661
+
662
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.0.4...v2.1.0)
459
663
 
460
664
  ### 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/meew0/discordrb/pull/111))
665
+
666
+ - 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
667
  - Members' nicknames can now be set and read (`Member#nick`) and updates to them are being tracked.
463
668
  - Roles now have a `mentionable?` property and a `mention` utility method.
464
669
  - `Message` now tracks a message's role mentions.
465
670
  - 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/meew0/discordrb/issues/100))
671
+ - 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
672
  - 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/meew0/discordrb/issues/98))
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/meew0/discordrb/issues/104) / [#112](https://github.com/meew0/discordrb/pull/112))
470
- - A `heartbeat` event was added that gets triggered every now and then to allow for roughly periodic actions. ([#110](https://github.com/meew0/discordrb/pull/110))
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/meew0/discordrb/issues/107) / [#109](https://github.com/meew0/discordrb/pull/109))
673
+ - Guild sharding is now supported using the optional `shard_id` and `num_shards` to bot initializers. Read about it here: <https://github.com/discord/discord-api-docs/issues/17> ([#98](https://github.com/discordrb/discordrb/issues/98))
674
+ - 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))
675
+ - 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))
676
+ - 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
677
 
473
678
  ## [2.0.4] - 2016-04-19
474
- [2.0.4]: https://github.com/meew0/discordrb/releases/tag/v2.0.4
475
679
 
476
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v2.0.3...v2.0.4)
680
+ [2.0.4]: https://github.com/discordrb/discordrb/releases/tag/v2.0.4
681
+
682
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.0.3...v2.0.4)
477
683
 
478
684
  ### Added
479
- - Added a utility method `Invite#url` ([#86](https://github.com/meew0/discordrb/issues/86)/[#101](https://github.com/meew0/discordrb/pull/101), thanks @PoVa)
685
+
686
+ - 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
687
 
481
688
  ### 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/meew0/discordrb/issues/105))
483
- - Setting avatars should now work again on Windows ([#96](https://github.com/meew0/discordrb/issues/96))
484
- - Message edit events should no longer be raised with nil authors ([#95](https://github.com/meew0/discordrb/issues/95))
485
- - Invites can now be created again ([#87](https://github.com/meew0/discordrb/issues/87))
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/meew0/discordrb/issues/103))
689
+
690
+ - 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))
691
+ - Setting avatars should now work again on Windows ([#96](https://github.com/discordrb/discordrb/issues/96))
692
+ - Message edit events should no longer be raised with nil authors ([#95](https://github.com/discordrb/discordrb/issues/95))
693
+ - Invites can now be created again ([#87](https://github.com/discordrb/discordrb/issues/87))
694
+ - 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
695
  - Fixed some possible problems with heartbeats not being sent with unstable connections
488
696
 
489
697
  ## [2.0.3] - 2016-04-15
490
- [2.0.3]: https://github.com/meew0/discordrb/releases/tag/v2.0.3
491
698
 
492
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v2.0.2...v2.0.3)
699
+ [2.0.3]: https://github.com/discordrb/discordrb/releases/tag/v2.0.3
700
+
701
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.0.2...v2.0.3)
493
702
 
494
703
  ### Added
495
- - All examples now fully use v2 ([#92](https://github.com/meew0/discordrb/pull/92), thanks @snapcase)
496
- - The message that occurs when a command is missing permission can now be changed or disabled ([#94](https://github.com/meew0/discordrb/pull/94), thanks @snapcase)
497
- - The log message that occurs when you disconnect from the WebSocket is now more compact ([#90](https://github.com/meew0/discordrb/issues/90))
704
+
705
+ - All examples now fully use v2 ([#92](https://github.com/discordrb/discordrb/pull/92), thanks @snapcase)
706
+ - 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)
707
+ - The log message that occurs when you disconnect from the WebSocket is now more compact ([#90](https://github.com/discordrb/discordrb/issues/90))
498
708
  - `Bot#ignored?` now exists to check whether a user is ignored
499
709
 
500
710
  ### Fixed
501
- - A problem where getting channel history would sometimes cause an exception has been fixed ([#88](https://github.com/meew0/discordrb/issues/88))
502
- - `split_message` should now behave correctly in a specific edge case ([#85](https://github.com/meew0/discordrb/pull/85), thanks @AnhNhan)
711
+
712
+ - A problem where getting channel history would sometimes cause an exception has been fixed ([#88](https://github.com/discordrb/discordrb/issues/88))
713
+ - `split_message` should now behave correctly in a specific edge case ([#85](https://github.com/discordrb/discordrb/pull/85), thanks @AnhNhan)
503
714
  - DCA playback should no longer cause an error when playback ends due to a specific reason
504
715
 
505
716
  ## [2.0.2] - 2016-04-10
506
- [2.0.2]: https://github.com/meew0/discordrb/releases/tag/v2.0.2
507
717
 
508
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v2.0.1...v2.0.2)
718
+ [2.0.2]: https://github.com/discordrb/discordrb/releases/tag/v2.0.2
719
+
720
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.0.1...v2.0.2)
509
721
 
510
722
  ### Added
511
- - Added `Server#text_channels` and `#voice_channels` ([#79](https://github.com/meew0/discordrb/issues/79))
512
- - Added `Server#online_users` ([#80](https://github.com/meew0/discordrb/issues/80))
513
- - Added `Member#role?` ([#83](https://github.com/meew0/discordrb/issues/83))
723
+
724
+ - Added `Server#text_channels` and `#voice_channels` ([#79](https://github.com/discordrb/discordrb/issues/79))
725
+ - Added `Server#online_users` ([#80](https://github.com/discordrb/discordrb/issues/80))
726
+ - Added `Member#role?` ([#83](https://github.com/discordrb/discordrb/issues/83))
514
727
  - Added three utility methods `User#online?`, `#offline?`, and `#idle?`
515
728
  - `Bot#send_message` can now take channel objects as well as the ID
516
729
 
517
730
  ### Fixed
731
+
518
732
  - Removing the bot from a server will no longer result in a gateway message error
519
733
  - Fixed an exception raised if a previously unavailable guild goes online after the stream timeout
520
734
  - `server_create` will no longer be raised for newly available guilds
@@ -522,62 +736,72 @@ As with 2.0.0, there are some breaking changes! They are, as always, highlighted
522
736
  - Fixed an error where rarely a server's owner wouldn't be initialized correctly
523
737
 
524
738
  ## [2.0.1] - 2016-04-10
525
- [2.0.1]: https://github.com/meew0/discordrb/releases/tag/v2.0.1
526
739
 
527
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v2.0.0...v2.0.1)
740
+ [2.0.1]: https://github.com/discordrb/discordrb/releases/tag/v2.0.1
741
+
742
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v2.0.0...v2.0.1)
528
743
 
529
744
  ### Added
530
- - Added some more examples ([#75](https://github.com/meew0/discordrb/pull/75), thanks @greenbigfrog)
745
+
746
+ - Added some more examples ([#75](https://github.com/discordrb/discordrb/pull/75), thanks @greenbigfrog)
531
747
  - Users can now be ignored from messages at gateway level (`Bot#ignore_user`, `Bot#unignore_user`)
532
748
  - `Member#add_role` and `Member#remove_role` were re-added from User - they were missing before
533
749
 
534
750
  ### Fixed
751
+
535
752
  - Fixed some typos in the documentation
536
753
  - If a server is actually unavailable it will no longer spam the console with timeout messages
537
754
  - VoiceBot now sends five frames of silence after finishing a track. This fixes an issue where the sound from the last track would bleed over into the new one due to interpolation.
538
755
  - Fixed a bug where playing something right after connecting to voice would sometimes cause the encryption key to not be set
539
756
 
540
757
  ## [2.0.0] - 2016-04-08
541
- [2.0.0]: https://github.com/meew0/discordrb/releases/tag/v2.0.0
542
758
 
543
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.8.1...v2.0.0)
759
+ [2.0.0]: https://github.com/discordrb/discordrb/releases/tag/v2.0.0
760
+
761
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.8.1...v2.0.0)
544
762
 
545
763
  ### Added
764
+
546
765
  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.
547
766
 
548
767
  - **Bot initializers now only use named parameters.** This shouldn't be a hard change to adjust to, but everyone will have to do it. Here's some examples:
549
- ```rb
550
- # Previously
551
- bot = Discordrb::Bot.new 'email@example.com', 'hunter2', true
552
-
553
- # Now
554
- bot = Discordrb::Bot.new email: 'email@example.com', password: 'hunter2', log_mode: :debug
555
- ```
556
- ```rb
557
- # Previously
558
- bot = Discordrb::Bot.new :token, 'TOKEN HERE'
559
-
560
- # Now
561
- bot = Discordrb::Bot.new token: 'TOKEN HERE', application_id: 163456789123456789
562
- ```
563
- ```rb
564
- # Previously
565
- bot = Discordrb::Commands::CommandBot.new :token, 'TOKEN HERE', '!', nil, {advanced_functionality: false}
566
-
567
- # Now
568
- bot = Discordrb::Commands::CommandBot.new token: 'TOKEN HERE', application_id: 163456789123456789, prefix: '!', advanced_functionality: false
569
- ```
570
- - Connecting to multiple voice channels at once (only available with bot accounts) is now supported. **This means `bot.voice` now takes the server ID as the parameter**. For a seamless switch, the utility method `MessageEvent#voice` was added - simply replace `bot.voice` with `event.voice` in all instances.
571
- - **The `Member` and `Recipient` classes were split off from `User`**. Members are users on servers and recipients are partners in private messages. Since both are delegates to `User`, most things will work as before, but most notably roles were changed to no longer be by ID (for example, instead of `event.author.roles(event.server.id)`, you'd just use `event.author.roles` instead).
572
- - **All previously deprecated methods were removed.** This includes:
573
- - `Server#afk_channel_id=` (use `afk_channel=`, it works with the ID too)
574
- - `Channel#is_private` (use `private?` instead, it's more reliable with edge cases like Twitch subscriber-only channels)
575
- - `Bot#find` (use `find_channel` instead, it does the exact same thing without confusion with `find_user`)
576
- - **`Server` is now used instead of `Guild` in all external methods and classes.** Previously, all the events regarding roles and such were called `GuildRoleXYZEvent`, now they're all called `ServerRoleXYZEvent` for consistency with other attributes and methods.
577
- - **`advanced_functionality` is now disabled by default.** If you absolutely need it, you can easily re-enable it by just setting that parameter in the CommandBot initializer, but for most people that didn't need it this will fix some bugs with mentions in commands and such.
578
- - **`User#bot?` was renamed to `User#current_bot?`** with the addition of the `User#bot_account?` reader to check for bot account-ness (the "BOT" tag visible on Discord)
579
- - Member chunks will no longer automatically be requested on startup, but rather once they're actually needed (`event.server.members`). This is both a performance change (much faster startup for large bots especially) and an important API compliance one - this is what the Discord devs have requested.
580
- - Initial support for bots that have no WebSocket connection was started. This is useful for web apps that need to get information on something without having to run something in the background all the time. A tutorial on these will be coming soon, in the meantime, use this short example:
768
+
769
+ ```rb
770
+ # Previously
771
+ bot = Discordrb::Bot.new 'email@example.com', 'hunter2', true
772
+
773
+ # Now
774
+ bot = Discordrb::Bot.new email: 'email@example.com', password: 'hunter2', log_mode: :debug
775
+ ```
776
+
777
+ ```rb
778
+ # Previously
779
+ bot = Discordrb::Bot.new :token, 'TOKEN HERE'
780
+
781
+ # Now
782
+ bot = Discordrb::Bot.new token: 'TOKEN HERE', application_id: 163456789123456789
783
+ ```
784
+
785
+ ```rb
786
+ # Previously
787
+ bot = Discordrb::Commands::CommandBot.new :token, 'TOKEN HERE', '!', nil, {advanced_functionality: false}
788
+
789
+ # Now
790
+ bot = Discordrb::Commands::CommandBot.new token: 'TOKEN HERE', application_id: 163456789123456789, prefix: '!', advanced_functionality: false
791
+ ```
792
+
793
+ - Connecting to multiple voice channels at once (only available with bot accounts) is now supported. **This means `bot.voice` now takes the server ID as the parameter**. For a seamless switch, the utility method `MessageEvent#voice` was added - simply replace `bot.voice` with `event.voice` in all instances.
794
+ - **The `Member` and `Recipient` classes were split off from `User`**. Members are users on servers and recipients are partners in private messages. Since both are delegates to `User`, most things will work as before, but most notably roles were changed to no longer be by ID (for example, instead of `event.author.roles(event.server.id)`, you'd just use `event.author.roles` instead).
795
+ - **All previously deprecated methods were removed.** This includes:
796
+ - `Server#afk_channel_id=` (use `afk_channel=`, it works with the ID too)
797
+ - `Channel#is_private` (use `private?` instead, it's more reliable with edge cases like Twitch subscriber-only channels)
798
+ - `Bot#find` (use `find_channel` instead, it does the exact same thing without confusion with `find_user`)
799
+ - **`Server` is now used instead of `Guild` in all external methods and classes.** Previously, all the events regarding roles and such were called `GuildRoleXYZEvent`, now they're all called `ServerRoleXYZEvent` for consistency with other attributes and methods.
800
+ - **`advanced_functionality` is now disabled by default.** If you absolutely need it, you can easily re-enable it by just setting that parameter in the CommandBot initializer, but for most people that didn't need it this will fix some bugs with mentions in commands and such.
801
+ - **`User#bot?` was renamed to `User#current_bot?`** with the addition of the `User#bot_account?` reader to check for bot account-ness (the "BOT" tag visible on Discord)
802
+ - Member chunks will no longer automatically be requested on startup, but rather once they're actually needed (`event.server.members`). This is both a performance change (much faster startup for large bots especially) and an important API compliance one - this is what the Discord devs have requested.
803
+ - Initial support for bots that have no WebSocket connection was started. This is useful for web apps that need to get information on something without having to run something in the background all the time. A tutorial on these will be coming soon, in the meantime, use this short example:
804
+
581
805
  ```rb
582
806
  require 'discordrb'
583
807
  require 'discordrb/light'
@@ -585,490 +809,588 @@ require 'discordrb/light'
585
809
  bot = Discordrb::Light::LightBot.new 'token here'
586
810
  puts bot.profile.username
587
811
  ```
588
- - OAuth bot accounts are now better supported using a method `Bot#invite_url` to get a bot's invite URL and sending tokens using the new `Bot` prefix.
589
- - discordrb now fully uses [websocket-client-simple](https://github.com/shokai/websocket-client-simple) (a.k.a. WSCS) instead of Faye::WebSocket, this means that the annoying OpenSSL library thing won't have to be done anymore.
590
- - The new version of the Discord gateway (v4) is supported and used by default. This should bring more stability and possibly slight performance improvements.
591
- - Some older v3 features that weren't supported before are now:
592
- - Compressed ready packets (should decrease network overhead for very large bots)
593
- - Discord rate limits are now supported better - the client will never send a message if it knows it's going to be rate limited, instead it's going to wait for the correct time.
594
- - Requests will now automatically be retried if a 502 (cloudflare error) is received.
595
- - `MessageEditEvent`s now have a whole message instead of just the ID to allow for checking the content of edited messages.
596
- - `Message`s now have an `attachments` array with files attached to the message.
597
- - `ReadyEvent` and `DisconnectEvent` now have the bot as a readable attribute - useful for container-based bots that don't have a way to get them otherwise.
598
- - `Bot#find_channel` can now parse channel mentions and search for specific types of channels (text or voice).
599
- - `Server#create_channel` can now create voice channels.
600
- - A utility function `User#distinct` was added to get the distinct representation of a user (i.e. name + discrim, for example "meew0#9811")
601
- - The `User#discriminator` attribute now has more aliases (`#tag`, `#discord_tag`, `#discrim`)
602
- - `Permission` objects can now be created or set even without a role writer, useful to quickly get byte representations of permissions
603
- - 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/meew0/discordrb/issues/66))
605
- - The `:with_text` event attribute is now aliased to `:exact_text` ([#65](https://github.com/meew0/discordrb/issues/65))
606
- - Server icons (`Server#icon=`) can now be set just like avatars (`Profile#avatar=`)
607
- - Lots of comments were added to the examples and some bugs fixed
608
- - The overall performance and memory usage was improved, especially on Ruby 2.3 (using the new frozen string literal comment)
609
- - The documentation was slightly improved.
812
+
813
+ - OAuth bot accounts are now better supported using a method `Bot#invite_url` to get a bot's invite URL and sending tokens using the new `Bot` prefix.
814
+ - discordrb now fully uses [websocket-client-simple](https://github.com/shokai/websocket-client-simple) (a.k.a. WSCS) instead of Faye::WebSocket, this means that the annoying OpenSSL library thing won't have to be done anymore.
815
+ - The new version of the Discord gateway (v4) is supported and used by default. This should bring more stability and possibly slight performance improvements.
816
+ - Some older v3 features that weren't supported before are now:
817
+ - Compressed ready packets (should decrease network overhead for very large bots)
818
+ - Discord rate limits are now supported better - the client will never send a message if it knows it's going to be rate limited, instead it's going to wait for the correct time.
819
+ - Requests will now automatically be retried if a 502 (cloudflare error) is received.
820
+ - `MessageEditEvent`s now have a whole message instead of just the ID to allow for checking the content of edited messages.
821
+ - `Message`s now have an `attachments` array with files attached to the message.
822
+ - `ReadyEvent` and `DisconnectEvent` now have the bot as a readable attribute - useful for container-based bots that don't have a way to get them otherwise.
823
+ - `Bot#find_channel` can now parse channel mentions and search for specific types of channels (text or voice).
824
+ - `Server#create_channel` can now create voice channels.
825
+ - A utility function `User#distinct` was added to get the distinct representation of a user (i.e. name + discrim, for example "meew0#9811")
826
+ - The `User#discriminator` attribute now has more aliases (`#tag`, `#discord_tag`, `#discrim`)
827
+ - `Permission` objects can now be created or set even without a role writer, useful to quickly get byte representations of permissions
828
+ - Permission overwrites can now be defined more easily using the utility method `Channel#define_overwrite`
829
+ - `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))
830
+ - The `:with_text` event attribute is now aliased to `:exact_text` ([#65](https://github.com/discordrb/discordrb/issues/65))
831
+ - Server icons (`Server#icon=`) can now be set just like avatars (`Profile#avatar=`)
832
+ - Lots of comments were added to the examples and some bugs fixed
833
+ - The overall performance and memory usage was improved, especially on Ruby 2.3 (using the new frozen string literal comment)
834
+ - The documentation was slightly improved.
610
835
 
611
836
  ### Fixed
612
- - A *lot* of latent bugs with caching were fixed. This doesn't really have a noticeable effect, it just means better stability and reliability as a whole.
837
+
838
+ - A _lot_ of latent bugs with caching were fixed. This doesn't really have a noticeable effect, it just means better stability and reliability as a whole.
613
839
  - **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
840
  - Permission calculation (`User#permission?`) has been thoroughly rewritten and should now account for edge cases like server owners and Manage Permissions.
615
841
  - 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/meew0/discordrb/issues/72))
617
- - The auto-generated help command can now actually be disabled by setting the corresponding attribute to nil ([#73](https://github.com/meew0/discordrb/issues/73))
842
+ - Commands with aliases now show up correctly in the auto-generated help command ([#72](https://github.com/discordrb/discordrb/issues/72))
843
+ - 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
844
  - Including empty containers now does nothing instead of raising an error
619
845
  - Command bots now obey `should_parse_self`
620
846
 
621
847
  ## [1.8.1] - 2016-03-11
622
- [1.8.1]: https://github.com/meew0/discordrb/releases/tag/v1.8.1
623
848
 
624
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.8.0...v1.8.1)
849
+ [1.8.1]: https://github.com/discordrb/discordrb/releases/tag/v1.8.1
850
+
851
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.8.0...v1.8.1)
625
852
 
626
853
  ### Fixed
627
- * 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.
854
+
855
+ - 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
856
 
629
857
  ## [1.8.0] - 2016-03-11
630
- [1.8.0]: https://github.com/meew0/discordrb/releases/tag/v1.8.0
631
858
 
632
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.7.5...v1.8.0)
859
+ [1.8.0]: https://github.com/discordrb/discordrb/releases/tag/v1.8.0
860
+
861
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.5...v1.8.0)
633
862
 
634
863
  ### Added
635
- * The built-in logger has been somewhat redone.
636
- * It now has a fancy mode, settable using `Discordrb::LOGGER.fancy = true/false`, that makes use of ANSI escape codes to prettify the log output.
637
- * It now supports more things than just `debug`, there's also `warn`, `error`, `good`, `info`, `in`, and `out`.
638
- * You now have finer control over what gets output, using `Discordrb::LOGGER.mode=` which accepts one of `:debug`, `:verbose`, `:normal`, `:quiet`, `:silent`.
639
- * You can now log in with just a token by setting the email parameter to `:token` and the password to the token you want to log in with.
640
- * DCA playback now supports `DCA1`.
641
- * All data classes (now generalized using the `IDObject` mixin) have a `creation_date` parameter that specifies when the object was created.
642
- * `Channel#mention` was added that mentions a channel analogous to `User#mention`.
643
- * The aliases `tag` and `discord_tag` have been added to the discriminator because that's what Discord calls them now.
864
+
865
+ - The built-in logger has been somewhat redone.
866
+ - It now has a fancy mode, settable using `Discordrb::LOGGER.fancy = true/false`, that makes use of ANSI escape codes to prettify the log output.
867
+ - It now supports more things than just `debug`, there's also `warn`, `error`, `good`, `info`, `in`, and `out`.
868
+ - You now have finer control over what gets output, using `Discordrb::LOGGER.mode=` which accepts one of `:debug`, `:verbose`, `:normal`, `:quiet`, `:silent`.
869
+ - You can now log in with just a token by setting the email parameter to `:token` and the password to the token you want to log in with.
870
+ - DCA playback now supports `DCA1`.
871
+ - All data classes (now generalized using the `IDObject` mixin) have a `creation_date` parameter that specifies when the object was created.
872
+ - `Channel#mention` was added that mentions a channel analogous to `User#mention`.
873
+ - The aliases `tag` and `discord_tag` have been added to the discriminator because that's what Discord calls them now.
644
874
 
645
875
  ### Fixed
646
- * A problem some users had where voice playback would leak FFmpeg processes has been fixed.
647
- * The VWS internal thread now has a name in debug messages (`vws-i`)
648
- * Users' voice channels should now always be set if they are in one
876
+
877
+ - A problem some users had where voice playback would leak FFmpeg processes has been fixed.
878
+ - The VWS internal thread now has a name in debug messages (`vws-i`)
879
+ - Users' voice channels should now always be set if they are in one
649
880
 
650
881
  ## [1.7.5] - 2016-03-03
651
- [1.7.5]: https://github.com/meew0/discordrb/releases/tag/v1.7.5
652
882
 
653
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.7.4...v1.7.5)
883
+ [1.7.5]: https://github.com/discordrb/discordrb/releases/tag/v1.7.5
884
+
885
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.4...v1.7.5)
654
886
 
655
887
  ### Changed
656
- * `Channel#send_message` and `Bot#send_message` now have an extra `tts` parameter (false by default) to specify whether the message should use TTS.
888
+
889
+ - `Channel#send_message` and `Bot#send_message` now have an extra `tts` parameter (false by default) to specify whether the message should use TTS.
657
890
 
658
891
  ### Fixed
659
- * Attempting to `p` a data class, especially a `User` or `Profile`, should no longer lock up the interpreter due to very deep recursion.
660
- * Manual TTS using `API.send_message` will now work correctly.
892
+
893
+ - Attempting to `p` a data class, especially a `User` or `Profile`, should no longer lock up the interpreter due to very deep recursion.
894
+ - Manual TTS using `API.send_message` will now work correctly.
661
895
 
662
896
  ## [1.7.4] - 2016-02-28
663
- [1.7.4]: https://github.com/meew0/discordrb/releases/tag/v1.7.4
664
897
 
665
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.7.3...v1.7.4)
898
+ [1.7.4]: https://github.com/discordrb/discordrb/releases/tag/v1.7.4
899
+
900
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.3...v1.7.4)
666
901
 
667
902
  ### Added
668
- * Added methods `Channel#text?` and `Channel#voice?` to check a channel's type.
669
- * Frequently allocated strings have been turned into symbols or frozen constants, this should improve performance slightly.
903
+
904
+ - Added methods `Channel#text?` and `Channel#voice?` to check a channel's type.
905
+ - Frequently allocated strings have been turned into symbols or frozen constants, this should improve performance slightly.
670
906
 
671
907
  ### Fixed
672
- * `VoiceBot#destroy` will now properly disconnect you and should no longer cause segfaults.
673
- * Fixed a bug where you couldn't set any settings on a role created using `Server#create_role`.
674
- * Fixed `Profile#avatar=` doing absolutely nothing.
908
+
909
+ - `VoiceBot#destroy` will now properly disconnect you and should no longer cause segfaults.
910
+ - Fixed a bug where you couldn't set any settings on a role created using `Server#create_role`.
911
+ - Fixed `Profile#avatar=` doing absolutely nothing.
675
912
 
676
913
  ## [1.7.3] - 2016-02-27
677
- [1.7.3]: https://github.com/meew0/discordrb/releases/tag/v1.7.3
678
914
 
679
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.7.2...v1.7.3)
915
+ [1.7.3]: https://github.com/discordrb/discordrb/releases/tag/v1.7.3
916
+
917
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.2...v1.7.3)
680
918
 
681
919
  ### Added
682
- * The server banlist can now be accessed more nicely using `Server#bans`.
683
- * 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.
920
+
921
+ - The server banlist can now be accessed more nicely using `Server#bans`.
922
+ - 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
923
 
685
924
  ## [1.7.2] - 2016-02-25
686
- [1.7.2]: https://github.com/meew0/discordrb/releases/tag/v1.7.2
687
925
 
688
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.7.1...v1.7.2)
926
+ [1.7.2]: https://github.com/discordrb/discordrb/releases/tag/v1.7.2
927
+
928
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.1...v1.7.2)
689
929
 
690
930
  ### Changed
691
- * The `bot` object can now be read from all events, not just from command ones.
692
- * 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.
931
+
932
+ - The `bot` object can now be read from all events, not just from command ones.
933
+ - 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
934
 
694
935
  ## [1.7.1] - 2016-02-23
695
- [1.7.1]: https://github.com/meew0/discordrb/releases/tag/v1.7.1
696
936
 
697
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.7.0...v1.7.1)
937
+ [1.7.1]: https://github.com/discordrb/discordrb/releases/tag/v1.7.1
938
+
939
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.7.0...v1.7.1)
698
940
 
699
941
  ### Added
700
- * 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.)
942
+
943
+ - 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.)
701
944
 
702
945
  ### Fixed
703
- * The tokens will now be verified correctly when obtained from the cache. (I messed up last time)
704
- * Events of the same type in different containers will now be merged correctly when including both containers.
705
- * 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)
946
+
947
+ - The tokens will now be verified correctly when obtained from the cache. (I messed up last time)
948
+ - Events of the same type in different containers will now be merged correctly when including both containers.
949
+ - 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
950
 
707
951
  ## [1.7.0] - 2016-02-23
708
- [1.7.0]: https://github.com/meew0/discordrb/releases/tag/v1.7.0
709
952
 
710
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.6.6...v1.7.0)
953
+ [1.7.0]: https://github.com/discordrb/discordrb/releases/tag/v1.7.0
954
+
955
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.6...v1.7.0)
711
956
 
712
957
  ### Added
713
- * **`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/meew0/discordrb/master/). It's not quite polished yet and some things may be confusing, but it should be mostly usable.
715
- * Events and commands can now be thoroughly modularized using a system I call 'containers'. (TODO: Add a tutorial here later)
716
- * Support for the latest API changes:
717
- * `Server.leave` does something different than `Server.delete`
718
- * 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/meew0/discordrb/master/Discordrb%2FVoice%2FVoiceBot%3Aplay_dca) method. (TODO: Add a section to the voice tutorial)
720
- * The [volume](https://www.rubydoc.info/github/meew0/discordrb/master/Discordrb%2FVoice%2FVoiceBot%3Avolume) of a voice bot can now be changed during playback and not only for future playbacks.
721
- * 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/meew0/discordrb/master/Discordrb%2FServer%3Amembers) is now aliased to `users`.
723
- * An attribute [`Server#member_count`](https://www.rubydoc.info/github/meew0/discordrb/master/Discordrb%2FServer%3Amember_count) was added that is accurate even if chunked members have not been added yet.
724
- * An attribute [`Server#large?`](https://www.rubydoc.info/github/meew0/discordrb/master/Discordrb%2FServer%3Alarge) was added that is true if a server could possibly have an inaccurate list of members.
725
- * Some more specific error classes have been added to replace the RestClient generic ones.
726
- * 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/meew0/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.
728
- * A rate limiting feature was added to commands - you can define buckets using the [`bucket`](https://www.rubydoc.info/github/meew0/discordrb/master/Discordrb%2FCommands%2FRateLimiter%3Abucket) method and use them as a parameter for [`command`](https://www.rubydoc.info/github/meew0/discordrb/master/Discordrb%2FCommands%2FCommandContainer%3Acommand).
729
- * A [`SimpleRateLimiter`](https://www.rubydoc.info/github/meew0/discordrb/master/Discordrb/Commands/SimpleRateLimiter) class was also added if you want rate limiting independent from commands (e. g. for events)
730
- * Connecting to the WebSocket now uses an exponential falloff system so we don't spam Discord with requests anymore.
731
- * Debug timestamps are now accurate to milliseconds.
958
+
959
+ - **`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.
960
+ - 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.
961
+ - Events and commands can now be thoroughly modularized using a system I call 'containers'. (TODO: Add a tutorial here later)
962
+ - Support for the latest API changes:
963
+ - `Server.leave` does something different than `Server.delete`
964
+ - The WebSocket connection now uses version 3 of the protocol
965
+ - 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)
966
+ - 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.
967
+ - 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.)
968
+ - [`Server#members`](https://www.rubydoc.info/github/discordrb/discordrb/master/Discordrb%2FServer%3Amembers) is now aliased to `users`.
969
+ - 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.
970
+ - 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.
971
+ - Some more specific error classes have been added to replace the RestClient generic ones.
972
+ - Quickly sending a message using the `event << 'text'` syntax now works in every type of message event, not just commands.
973
+ - 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.
974
+ - 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).
975
+ - 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)
976
+ - Connecting to the WebSocket now uses an exponential falloff system so we don't spam Discord with requests anymore.
977
+ - Debug timestamps are now accurate to milliseconds.
732
978
 
733
979
  ### Fixed
734
- * The token cacher will now detect whether a cached token has been invalidated due to a password change.
735
- * `break`ing from an event or command will no longer spew `LocalJumpError`s to the console.
980
+
981
+ - The token cacher will now detect whether a cached token has been invalidated due to a password change.
982
+ - `break`ing from an event or command will no longer spew `LocalJumpError`s to the console.
736
983
 
737
984
  ## [1.6.6] - 2016-02-13
738
- [1.6.6]: https://github.com/meew0/discordrb/releases/tag/v1.6.6
739
985
 
740
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.6.5...v1.6.6)
986
+ [1.6.6]: https://github.com/discordrb/discordrb/releases/tag/v1.6.6
987
+
988
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.5...v1.6.6)
741
989
 
742
990
  ### Fixed
743
- * Fixed a problem that would cause an incompatibility with Ruby 2.1
744
- * Fixed servers sometimes containing duplicate members
991
+
992
+ - Fixed a problem that would cause an incompatibility with Ruby 2.1
993
+ - Fixed servers sometimes containing duplicate members
745
994
 
746
995
  ## [1.6.5] - 2016-02-12
747
- [1.6.5]: https://github.com/meew0/discordrb/releases/tag/v1.6.5
748
996
 
749
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.6.4...v1.6.5)
997
+ [1.6.5]: https://github.com/discordrb/discordrb/releases/tag/v1.6.5
998
+
999
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.4...v1.6.5)
750
1000
 
751
1001
  ### Changed
752
- * 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).
1002
+
1003
+ - 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
1004
 
754
1005
  ## [1.6.4] - 2016-02-10
755
- [1.6.4]: https://github.com/meew0/discordrb/releases/tag/v1.6.4
756
1006
 
757
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.6.3...v1.6.4)
1007
+ [1.6.4]: https://github.com/discordrb/discordrb/releases/tag/v1.6.4
1008
+
1009
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.3...v1.6.4)
758
1010
 
759
1011
  ### Fixed
760
- * Fixed a bug that made the joining of servers using an invite impossible.
1012
+
1013
+ - Fixed a bug that made the joining of servers using an invite impossible.
761
1014
 
762
1015
  ## [1.6.3] - 2016-02-08
763
- [1.6.3]: https://github.com/meew0/discordrb/releases/tag/v1.6.3
764
1016
 
765
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.6.2...v1.6.3)
1017
+ [1.6.3]: https://github.com/discordrb/discordrb/releases/tag/v1.6.3
1018
+
1019
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.2...v1.6.3)
766
1020
 
767
1021
  ### Fixed
768
- * Fixed a bug that prevented the banning of users over the API
1022
+
1023
+ - Fixed a bug that prevented the banning of users over the API
769
1024
 
770
1025
  ## [1.6.2] - 2016-02-06
771
- [1.6.2]: https://github.com/meew0/discordrb/releases/tag/v1.6.2
772
1026
 
773
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.6.1...v1.6.2)
1027
+ [1.6.2]: https://github.com/discordrb/discordrb/releases/tag/v1.6.2
1028
+
1029
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.1...v1.6.2)
774
1030
 
775
1031
  ### Fixed
776
- * 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.
1032
+
1033
+ - 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
1034
 
778
1035
  ## [1.6.1] - 2016-02-04
779
- [1.6.1]: https://github.com/meew0/discordrb/releases/tag/v1.6.1
780
1036
 
781
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.6.0...v1.6.1)
1037
+ [1.6.1]: https://github.com/discordrb/discordrb/releases/tag/v1.6.1
1038
+
1039
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.6.0...v1.6.1)
782
1040
 
783
1041
  ### Changed
784
- * 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.
1042
+
1043
+ - 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.
785
1044
 
786
1045
  ### Fixed
787
- * Token cache files with invalid JSON syntax will no longer crash the bot at login.
1046
+
1047
+ - Token cache files with invalid JSON syntax will no longer crash the bot at login.
788
1048
 
789
1049
  ## [1.6.0] - 2016-02-01
790
- [1.6.0]: https://github.com/meew0/discordrb/releases/tag/v1.6.0
791
1050
 
792
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.5.4...v1.6.0)
1051
+ [1.6.0]: https://github.com/discordrb/discordrb/releases/tag/v1.6.0
1052
+
1053
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.5.4...v1.6.0)
793
1054
 
794
1055
  ### Added
795
- * 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/).
796
- * It's now possible to encrypt sent voice data using an optional parameter in `voice_connect`. The encryption uses RbNaCl's [SecretBox](https://github.com/cryptosphere/rbnacl/wiki/Secret-Key-Encryption#algorithm-details) and is enabled by default.
797
- * The [new library comparison](https://discordapi.com/unofficial/comparison.html) is now fully supported, barring voice receive and multi-send: (#39)
798
- * `bot.invite` will create an `Invite` object from a code containing information about it.
799
- * `server.move(user, channel)` will move a user to a different voice channel.
800
- * The events `bot.message_edit` and `bot.message_delete` are now available for message editing and deletion. Note that Discord doesn't provide the content of edited/deleted messages, so you'll have to implement message caching yourself if you really need it.
801
- * The events `bot.user_ban` and `bot.user_unban` are now available for users getting banned/unbanned from servers.
802
- * A bot's name can now be sent using `bot.name=`. This data will be sent to Discord with the user-agent and it might be used for cool statistics in the future.
803
- * Discord server ownership transfer is now implemented using the writer `server.owner=`. (#41)
804
- * `CommandBot`s can now have command aliases by simply using an array of symbols as the command name.
805
- * A utility method `server.default_channel` was implemented that returns the default text channel of a server, usually called #general. (An alias `general_channel` is available too.)
806
- * Tokens will no longer appear in debug output, so you're safe sending output logs to other people.
807
- * A reader `server.owner` that returns the server's owner as a `User` was added. Previously, users had to manually get the `User` object using `bot.user`.
808
- * Most methods that accept IDs or data objects now also accept `Integer`s or `String`s containing the IDs now. This is implemented by adding a method `resolve_id` to all objects that could potentially contain an ID. (Note that this change is not complete yet and I might have missed some methods.) (#40)
809
- * The writer `server.afk_channel_id=` is now deprecated as its functionality is now covered by `server.afk_channel=`.
810
- * A new reader `user.avatar_url` was added that returns the full image URL to a user's avatar.
811
- * To avoid confusion with `avatar_url`, the reader `user.avatar` was renamed to `avatar_id`. (`user.avatar` still exists but is now deprecated.)
812
- * Symbols are now used instead of strings as hash keys in all methods that send JSON data to somewhere. This might improve performance slightly.
1056
+
1057
+ - 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/).
1058
+ - It's now possible to encrypt sent voice data using an optional parameter in `voice_connect`. The encryption uses RbNaCl's [SecretBox](https://github.com/cryptosphere/rbnacl/wiki/Secret-Key-Encryption#algorithm-details) and is enabled by default.
1059
+ - The [new library comparison](https://discordapi.com/unofficial/comparison.html) is now fully supported, barring voice receive and multi-send: (#39)
1060
+ - `bot.invite` will create an `Invite` object from a code containing information about it.
1061
+ - `server.move(user, channel)` will move a user to a different voice channel.
1062
+ - The events `bot.message_edit` and `bot.message_delete` are now available for message editing and deletion. Note that Discord doesn't provide the content of edited/deleted messages, so you'll have to implement message caching yourself if you really need it.
1063
+ - The events `bot.user_ban` and `bot.user_unban` are now available for users getting banned/unbanned from servers.
1064
+ - A bot's name can now be sent using `bot.name=`. This data will be sent to Discord with the user-agent and it might be used for cool statistics in the future.
1065
+ - Discord server ownership transfer is now implemented using the writer `server.owner=`. (#41)
1066
+ - `CommandBot`s can now have command aliases by simply using an array of symbols as the command name.
1067
+ - A utility method `server.default_channel` was implemented that returns the default text channel of a server, usually called #general. (An alias `general_channel` is available too.)
1068
+ - Tokens will no longer appear in debug output, so you're safe sending output logs to other people.
1069
+ - A reader `server.owner` that returns the server's owner as a `User` was added. Previously, users had to manually get the `User` object using `bot.user`.
1070
+ - Most methods that accept IDs or data objects now also accept `Integer`s or `String`s containing the IDs now. This is implemented by adding a method `resolve_id` to all objects that could potentially contain an ID. (Note that this change is not complete yet and I might have missed some methods.) (#40)
1071
+ - The writer `server.afk_channel_id=` is now deprecated as its functionality is now covered by `server.afk_channel=`.
1072
+ - A new reader `user.avatar_url` was added that returns the full image URL to a user's avatar.
1073
+ - To avoid confusion with `avatar_url`, the reader `user.avatar` was renamed to `avatar_id`. (`user.avatar` still exists but is now deprecated.)
1074
+ - Symbols are now used instead of strings as hash keys in all methods that send JSON data to somewhere. This might improve performance slightly.
813
1075
 
814
1076
  ### Fixed
815
- * Fixed the reader `server.afk_channel_id` not containing a value sometimes.
816
- * An issue was fixed where attempting to create a `Server` object from a stub server that didn't contain any role data would cause an exception.
817
- * The `Invite` `server` property will now be initialized directly from the invite data instead of the channel the invite is to, to prevent it being `nil` when the invite channel was stubbed.
818
- * The `inviter` of an `Invite` will now be `nil` instead of causing an exception when it doesn't exist in the invite data.
1077
+
1078
+ - Fixed the reader `server.afk_channel_id` not containing a value sometimes.
1079
+ - An issue was fixed where attempting to create a `Server` object from a stub server that didn't contain any role data would cause an exception.
1080
+ - The `Invite` `server` property will now be initialized directly from the invite data instead of the channel the invite is to, to prevent it being `nil` when the invite channel was stubbed.
1081
+ - The `inviter` of an `Invite` will now be `nil` instead of causing an exception when it doesn't exist in the invite data.
819
1082
 
820
1083
  ## [1.5.4] - 2016-01-16
821
- [1.5.4]: https://github.com/meew0/discordrb/releases/tag/v1.5.4
822
1084
 
823
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.5.3...v1.5.4)
1085
+ [1.5.4]: https://github.com/discordrb/discordrb/releases/tag/v1.5.4
1086
+
1087
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.5.3...v1.5.4)
824
1088
 
825
1089
  ### Changed
826
- * 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)
1090
+
1091
+ - 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)
827
1092
 
828
1093
  ### Fixed
829
- * Voice volume can now be properly set when using avconv (#37, thanks @purintai)
830
- * `websocket-client-simple`, which is required for voice, is now specified in the dependencies.
1094
+
1095
+ - Voice volume can now be properly set when using avconv (#37, thanks @purintai)
1096
+ - `websocket-client-simple`, which is required for voice, is now specified in the dependencies.
831
1097
 
832
1098
  ## [1.5.3] - 2016-01-11
833
- [1.5.3]: https://github.com/meew0/discordrb/releases/tag/v1.5.3
834
1099
 
835
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.5.2...v1.5.3)
1100
+ [1.5.3]: https://github.com/discordrb/discordrb/releases/tag/v1.5.3
1101
+
1102
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.5.2...v1.5.3)
836
1103
 
837
1104
  ### Added
838
- * 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
- * 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)
1105
+
1106
+ - 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)
1107
+ - 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
1108
 
841
1109
  ## [1.5.2] - 2016-01-11
842
- [1.5.2]: https://github.com/meew0/discordrb/releases/tag/v1.5.2
843
1110
 
844
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.5.1...v1.5.2)
1111
+ [1.5.2]: https://github.com/discordrb/discordrb/releases/tag/v1.5.2
1112
+
1113
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.5.1...v1.5.2)
845
1114
 
846
1115
  ### Added
847
- * `bot.voice_connect` can now use a channel ID directly.
848
- * A reader `bot.volume` now exists for the corresponding writer.
849
- * The attribute `bot.encoder.use_avconv` was added that makes the bot use avconv instead of ffmpeg (for those on Ubuntu 14.x)
850
- * The PBKDF2 iteration count for token caching was increased to 300,000 for extra security.
1116
+
1117
+ - `bot.voice_connect` can now use a channel ID directly.
1118
+ - A reader `bot.volume` now exists for the corresponding writer.
1119
+ - The attribute `bot.encoder.use_avconv` was added that makes the bot use avconv instead of ffmpeg (for those on Ubuntu 14.x)
1120
+ - The PBKDF2 iteration count for token caching was increased to 300,000 for extra security.
851
1121
 
852
1122
  ### Fixed
853
- * Fix a bug where `play_file` wouldn't properly accept string file paths (#36, thanks @purintai)
854
- * Fix a concurrency issue where `VoiceBot` would try to read from nil
1123
+
1124
+ - Fix a bug where `play_file` wouldn't properly accept string file paths (#36, thanks @purintai)
1125
+ - Fix a concurrency issue where `VoiceBot` would try to read from nil
855
1126
 
856
1127
  ## [1.5.1] - 2016-01-10
857
- [1.5.1]: https://github.com/meew0/discordrb/releases/tag/v1.5.1
858
1128
 
859
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.5.0...v1.5.1)
1129
+ [1.5.1]: https://github.com/discordrb/discordrb/releases/tag/v1.5.1
1130
+
1131
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.5.0...v1.5.1)
860
1132
 
861
1133
  ### Added
862
- * 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`.
1134
+
1135
+ - 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
1136
 
864
1137
  ## [1.5.0] - 2016-01-10
865
- [1.5.0]: https://github.com/meew0/discordrb/releases/tag/v1.5.0
866
1138
 
867
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.4.8...v1.5.0)
1139
+ [1.5.0]: https://github.com/discordrb/discordrb/releases/tag/v1.5.0
1140
+
1141
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.8...v1.5.0)
868
1142
 
869
1143
  ### Added
870
- * Voice support: discordrb can now connect to voice using `bot.voice_connect` and do the following things:
871
- * Play files and URLs using `VoiceBot.play_file`
872
- * Play arbitrary streams using `VoiceBot.play_io`
873
- * Set the volume of future playbacks using `VoiceBot.volume=`
874
- * Pause and resume playback (`VoiceBot.pause` and `VoiceBot.continue`)
875
- * Authentication tokens are now cached and no login request will be made if a cached token is found. This is mostly to reduce strain on Discord's servers.
1144
+
1145
+ - Voice support: discordrb can now connect to voice using `bot.voice_connect` and do the following things:
1146
+ - Play files and URLs using `VoiceBot.play_file`
1147
+ - Play arbitrary streams using `VoiceBot.play_io`
1148
+ - Set the volume of future playbacks using `VoiceBot.volume=`
1149
+ - Pause and resume playback (`VoiceBot.pause` and `VoiceBot.continue`)
1150
+ - Authentication tokens are now cached and no login request will be made if a cached token is found. This is mostly to reduce strain on Discord's servers.
876
1151
 
877
1152
  ### Fixed
878
- * Some latent ID casting errors were fixed - those would probably never have been noticed anyway, but they're fixed now.
879
- * `Bot.parse_mention` now works, it didn't work at all previously
1153
+
1154
+ - Some latent ID casting errors were fixed - those would probably never have been noticed anyway, but they're fixed now.
1155
+ - `Bot.parse_mention` now works, it didn't work at all previously
880
1156
 
881
1157
  ## [1.4.8] - 2016-01-06
882
- [1.4.8]: https://github.com/meew0/discordrb/releases/tag/v1.4.8
883
1158
 
884
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.4.7...v1.4.8)
1159
+ [1.4.8]: https://github.com/discordrb/discordrb/releases/tag/v1.4.8
1160
+
1161
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.7...v1.4.8)
885
1162
 
886
1163
  ### Added
887
- * The `User` class now has the methods `add_role` and `remove_role` which add a role to a user and remove it, respectively.
888
- * All data classes now have a useful `==` implementation.
889
- * **The `Game` class and all references to it were removed**. Games are now only identified by their name.
1164
+
1165
+ - The `User` class now has the methods `add_role` and `remove_role` which add a role to a user and remove it, respectively.
1166
+ - All data classes now have a useful `==` implementation.
1167
+ - **The `Game` class and all references to it were removed**. Games are now only identified by their name.
890
1168
 
891
1169
  ### Fixed
892
- * When a role is deleted, the ID is now obtained correctly. (#30)
1170
+
1171
+ - When a role is deleted, the ID is now obtained correctly. (#30)
893
1172
 
894
1173
  ## [1.4.7] - 2016-01-03
895
- [1.4.7]: https://github.com/meew0/discordrb/releases/tag/v1.4.7
896
1174
 
897
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.4.6...v1.4.7)
1175
+ [1.4.7]: https://github.com/discordrb/discordrb/releases/tag/v1.4.7
1176
+
1177
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.6...v1.4.7)
898
1178
 
899
1179
  ### Added
900
- * Presence event handling is now divided into two separate events; `PresenceEvent` to handle online/offline/idle statuses and `PlayingEvent` to handle users playing games.
901
- * The `user` property of `MessageEvent` is now automatically resolved to the cached user, so you can modify roles instantly without having to resolve it yourself.
902
- * `Message` now has a useful `to_s` method that just returns the content.
1180
+
1181
+ - Presence event handling is now divided into two separate events; `PresenceEvent` to handle online/offline/idle statuses and `PlayingEvent` to handle users playing games.
1182
+ - The `user` property of `MessageEvent` is now automatically resolved to the cached user, so you can modify roles instantly without having to resolve it yourself.
1183
+ - `Message` now has a useful `to_s` method that just returns the content.
903
1184
 
904
1185
  ### Fixed
905
- * The `TypingEvent` `user` property is now initialized correctly (#29, thanks @purintai)
1186
+
1187
+ - The `TypingEvent` `user` property is now initialized correctly (#29, thanks @purintai)
906
1188
 
907
1189
  ## [1.4.6] - 2015-12-25
908
- [1.4.6]: https://github.com/meew0/discordrb/releases/tag/v1.4.6
909
1190
 
910
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.4.4...v1.4.6)
1191
+ [1.4.6]: https://github.com/discordrb/discordrb/releases/tag/v1.4.6
1192
+
1193
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.4...v1.4.6)
911
1194
 
912
1195
  ### Fixed
913
- * The `user` and `server` properties of `PresenceEvent` are now initialized correctly.
1196
+
1197
+ - The `user` and `server` properties of `PresenceEvent` are now initialized correctly.
914
1198
 
915
1199
  ## 1.4.5
1200
+
916
1201
  <!-- This was never tagged in the git repo -->
1202
+
917
1203
  ### Changed
918
- * The `Bot.game` property can now be set to an arbitrary string.
919
- * Discord mentions are handled in the old way again, after Discord reverted an API change.
1204
+
1205
+ - The `Bot.game` property can now be set to an arbitrary string.
1206
+ - Discord mentions are handled in the old way again, after Discord reverted an API change.
920
1207
 
921
1208
  ## [1.4.4] - 2015-12-18
922
- [1.4.4]: https://github.com/meew0/discordrb/releases/tag/v1.4.4
923
1209
 
924
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.4.3...v1.4.4)
1210
+ [1.4.4]: https://github.com/discordrb/discordrb/releases/tag/v1.4.4
1211
+
1212
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.3...v1.4.4)
925
1213
 
926
1214
  ### Added
927
- * Add `Server.leave_server` as an alias for `delete_server`
928
- * Use the new Discord mention format (mentions array). **Reverted in 1.4.5**
929
- * Discord rate limited API calls are now handled correctly - discordrb will try again after the specified time.
930
- * Debug logging is now handled by a separate `Logger` class
1215
+
1216
+ - Add `Server.leave_server` as an alias for `delete_server`
1217
+ - Use the new Discord mention format (mentions array). **Reverted in 1.4.5**
1218
+ - Discord rate limited API calls are now handled correctly - discordrb will try again after the specified time.
1219
+ - Debug logging is now handled by a separate `Logger` class
931
1220
 
932
1221
  ### Fixed
933
- * Message timestamps are now parsed correctly.
934
- * The quickadders for awaits (`User.await`, `Channel.await` etc.) now add the correct awaits.
1222
+
1223
+ - Message timestamps are now parsed correctly.
1224
+ - The quickadders for awaits (`User.await`, `Channel.await` etc.) now add the correct awaits.
935
1225
 
936
1226
  ## [1.4.3] - 2015-12-11
937
- [1.4.3]: https://github.com/meew0/discordrb/releases/tag/v1.4.3
938
1227
 
939
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.4.2...v1.4.3)
1228
+ [1.4.3]: https://github.com/discordrb/discordrb/releases/tag/v1.4.3
1229
+
1230
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.2...v1.4.3)
940
1231
 
941
1232
  ### Added
942
- * Added a method `Bot.find_user` analogous to `Bot.find`.
1233
+
1234
+ - Added a method `Bot.find_user` analogous to `Bot.find`.
943
1235
 
944
1236
  ### Fixed
945
- * Remove a leftover debug line (#23, thanks @VxJasonxV)
1237
+
1238
+ - Remove a leftover debug line (#23, thanks @VxJasonxV)
946
1239
 
947
1240
  ## [1.4.2] - 2015-12-10
948
- [1.4.2]: https://github.com/meew0/discordrb/releases/tag/v1.4.2
949
1241
 
950
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.4.1...v1.4.2)
1242
+ [1.4.2]: https://github.com/discordrb/discordrb/releases/tag/v1.4.2
1243
+
1244
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.1...v1.4.2)
951
1245
 
952
1246
  ### Changed
953
- * discordrb will now send a user agent in the format requested by the Discord devs.
1247
+
1248
+ - discordrb will now send a user agent in the format requested by the Discord devs.
954
1249
 
955
1250
  ## [1.4.1] - 2015-12-07
956
- [1.4.1]: https://github.com/meew0/discordrb/releases/tag/v1.4.1
957
1251
 
958
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.4.0...v1.4.1)
1252
+ [1.4.1]: https://github.com/discordrb/discordrb/releases/tag/v1.4.1
1253
+
1254
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.4.0...v1.4.1)
959
1255
 
960
1256
  ### Fixed
961
- * Empty messages will now never be sent
962
- * The command-not-found message in `CommandBot` can now be disabled properly
1257
+
1258
+ - Empty messages will now never be sent
1259
+ - The command-not-found message in `CommandBot` can now be disabled properly
963
1260
 
964
1261
  ## [1.4.0] - 2015-12-04
965
- [1.4.0]: https://github.com/meew0/discordrb/releases/tag/v1.4.0
966
1262
 
967
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.3.12...v1.4.0)
1263
+ [1.4.0]: https://github.com/discordrb/discordrb/releases/tag/v1.4.0
1264
+
1265
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.12...v1.4.0)
968
1266
 
969
1267
  ### Added
970
- * 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).
971
- * discordrb now supports everything on the Discord API comparison, except for voice (see also #22)
972
- * Roles can now be created, edited and deleted and their permissions modified.
973
- * There is now a method to get a channel's message history.
974
- * The bot's user profile can now be edited.
975
- * Servers can now be created, edited and deleted.
976
- * The user can now display a "typing" message in a channel.
977
- * Invites can now be created and deleted, and an `Invite` class was made to represent them.
978
- * Command and event handling is now threaded, with each command/event handler execution in a separate thread.
979
- * Debug messages now specify the current thread's name.
980
- * discordrb now handles created/updated/deleted servers properly with events added to handle them.
981
- * The list of games handled by Discord will now be updated automatically.
1268
+
1269
+ - 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).
1270
+ - discordrb now supports everything on the Discord API comparison, except for voice (see also #22)
1271
+ - Roles can now be created, edited and deleted and their permissions modified.
1272
+ - There is now a method to get a channel's message history.
1273
+ - The bot's user profile can now be edited.
1274
+ - Servers can now be created, edited and deleted.
1275
+ - The user can now display a "typing" message in a channel.
1276
+ - Invites can now be created and deleted, and an `Invite` class was made to represent them.
1277
+ - Command and event handling is now threaded, with each command/event handler execution in a separate thread.
1278
+ - Debug messages now specify the current thread's name.
1279
+ - discordrb now handles created/updated/deleted servers properly with events added to handle them.
1280
+ - The list of games handled by Discord will now be updated automatically.
982
1281
 
983
1282
  ### Fixed
984
- * Fixed a bug where command handling would crash if the command didn't exist.
1283
+
1284
+ - Fixed a bug where command handling would crash if the command didn't exist.
985
1285
 
986
1286
  ## [1.3.12] - 2015-11-30
987
- [1.3.12]: https://github.com/meew0/discordrb/releases/tag/v1.3.12
988
1287
 
989
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.3.11...v1.3.12)
1288
+ [1.3.12]: https://github.com/discordrb/discordrb/releases/tag/v1.3.12
1289
+
1290
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.11...v1.3.12)
990
1291
 
991
1292
  ### Added
992
- * 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.
993
- * `User.bot?` and `Message.from_bot?` were implemented to check whether the user is the bot or the message was sent by it.
994
- * Add an event for private messages specifically (`Bot.pm` and `PrivateMessageEvent`)
1293
+
1294
+ - 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.
1295
+ - `User.bot?` and `Message.from_bot?` were implemented to check whether the user is the bot or the message was sent by it.
1296
+ - Add an event for private messages specifically (`Bot.pm` and `PrivateMessageEvent`)
995
1297
 
996
1298
  ### Fixed
997
- * Fix the `MessageEvent` attribute that checks whether the message is from the bot not working at all.
1299
+
1300
+ - Fix the `MessageEvent` attribute that checks whether the message is from the bot not working at all.
998
1301
 
999
1302
  ## [1.3.11] - 2015-11-29
1000
- [1.3.11]: https://github.com/meew0/discordrb/releases/tag/v1.3.11
1001
1303
 
1002
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.3.10...v1.3.11)
1304
+ [1.3.11]: https://github.com/discordrb/discordrb/releases/tag/v1.3.11
1305
+
1306
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.10...v1.3.11)
1003
1307
 
1004
1308
  ### Added
1005
- * Add a user selector (`:bot`) that is usable in the `from:` `MessageEvent` attribute to check whether the message was sent by a bot.
1309
+
1310
+ - Add a user selector (`:bot`) that is usable in the `from:` `MessageEvent` attribute to check whether the message was sent by a bot.
1006
1311
 
1007
1312
  ### Fixed
1008
- * `Channel.private?` now checks for the server being nil instead of the `is_private` attribute provided by Discord as the latter is unreliable. (wtf)
1313
+
1314
+ - `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
1315
 
1010
1316
  ## [1.3.10] - 2015-11-28
1011
- [1.3.10]: https://github.com/meew0/discordrb/releases/tag/v1.3.10
1012
1317
 
1013
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.3.9...v1.3.10)
1318
+ [1.3.10]: https://github.com/discordrb/discordrb/releases/tag/v1.3.10
1319
+
1320
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.9...v1.3.10)
1014
1321
 
1015
1322
  ### Added
1016
- * Add a method `Channel.private?` to check for a PM channel
1017
- * Add a `MessageEvent` attribute (`:private`) to check whether a message was sent in a PM channel
1018
- * Add various aliases to `MessageEvent` attributes
1019
- * Allow regexes to check for strings in `MessageEvent` attributes
1323
+
1324
+ - Add a method `Channel.private?` to check for a PM channel
1325
+ - Add a `MessageEvent` attribute (`:private`) to check whether a message was sent in a PM channel
1326
+ - Add various aliases to `MessageEvent` attributes
1327
+ - Allow regexes to check for strings in `MessageEvent` attributes
1020
1328
 
1021
1329
  ### Fixed
1022
- * 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
1330
+
1331
+ - 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
1332
 
1024
1333
  ## [1.3.9] - 2015-11-27
1025
- [1.3.9]: https://github.com/meew0/discordrb/releases/tag/v1.3.9
1026
1334
 
1027
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.3.8...v1.3.9)
1335
+ [1.3.9]: https://github.com/discordrb/discordrb/releases/tag/v1.3.9
1336
+
1337
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.8...v1.3.9)
1028
1338
 
1029
1339
  ### Added
1030
- * Add awaits, a powerful way to add temporary event handlers.
1031
- * Add a `Bot.find` method to fuzzy-search for channels.
1032
- * Add methods to kick, ban and unban users.
1340
+
1341
+ - Add awaits, a powerful way to add temporary event handlers.
1342
+ - Add a `Bot.find` method to fuzzy-search for channels.
1343
+ - Add methods to kick, ban and unban users.
1033
1344
 
1034
1345
  ### Fixed
1035
- * Permission overrides now work correctly for private channels (i. e. they don't exist at all)
1036
- * Users joining and leaving servers are now handled correctly.
1346
+
1347
+ - Permission overrides now work correctly for private channels (i. e. they don't exist at all)
1348
+ - Users joining and leaving servers are now handled correctly.
1037
1349
 
1038
1350
  ## [1.3.8] - 2015-11-12
1039
- [1.3.8]: https://github.com/meew0/discordrb/releases/tag/v1.3.8
1040
1351
 
1041
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.3.7...v1.3.8)
1352
+ [1.3.8]: https://github.com/discordrb/discordrb/releases/tag/v1.3.8
1353
+
1354
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.7...v1.3.8)
1042
1355
 
1043
1356
  ### Added
1044
- * Added `Bot.users` and `Bot.servers` readers to get the list of users and servers.
1357
+
1358
+ - Added `Bot.users` and `Bot.servers` readers to get the list of users and servers.
1045
1359
 
1046
1360
  ### Fixed
1047
- * 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)
1361
+
1362
+ - 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
1363
 
1049
1364
  ## [1.3.7] - 2015-11-07
1050
- [1.3.7]: https://github.com/meew0/discordrb/releases/tag/v1.3.7
1051
1365
 
1052
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.3.6...v1.3.7)
1366
+ [1.3.7]: https://github.com/discordrb/discordrb/releases/tag/v1.3.7
1367
+
1368
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.6...v1.3.7)
1053
1369
 
1054
1370
  ### Fixed
1055
- * Fix the command bot being included wrong, which caused crashes upon startup.
1371
+
1372
+ - Fix the command bot being included wrong, which caused crashes upon startup.
1056
1373
 
1057
1374
  ## [1.3.6] - 2015-11-07
1058
- [1.3.6]: https://github.com/meew0/discordrb/releases/tag/v1.3.6
1059
1375
 
1060
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.3.5...v1.3.6)
1376
+ [1.3.6]: https://github.com/discordrb/discordrb/releases/tag/v1.3.6
1377
+
1378
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.5...v1.3.6)
1061
1379
 
1062
1380
  ### Added
1063
- * The bot can now be stopped from the script using the new method `Bot.stop`.
1381
+
1382
+ - The bot can now be stopped from the script using the new method `Bot.stop`.
1064
1383
 
1065
1384
  ### Fixed
1066
- * Fix some wrong file requires which caused crashes sometimes.
1385
+
1386
+ - Fix some wrong file requires which caused crashes sometimes.
1067
1387
 
1068
1388
  ## [1.3.5] - 2015-11-07
1069
- [1.3.5]: https://github.com/meew0/discordrb/releases/tag/v1.3.5
1070
1389
 
1071
- [View diff for this release.](https://github.com/meew0/discordrb/compare/v1.3.4...v1.3.5)
1390
+ [1.3.5]: https://github.com/discordrb/discordrb/releases/tag/v1.3.5
1391
+
1392
+ [View diff for this release.](https://github.com/discordrb/discordrb/compare/v1.3.4...v1.3.5)
1072
1393
 
1073
1394
  ### Added
1074
- * The bot can now be run asynchronously using `Bot.run(:async)` to do further initialization after the bot was started.
1395
+
1396
+ - The bot can now be run asynchronously using `Bot.run(:async)` to do further initialization after the bot was started.