aboutsummaryrefslogtreecommitdiff
path: root/src/model
Commit message (Collapse)AuthorAgeFilesLines
...
* Default serde on a couple Ready structfieldsZeyla Hellyer2017-12-171-6/+8
| | | | | | | Have serde default on the `presences` and `private_channels` structfields of `Ready`. Some JSON serializers might leave these out when serializing if they're empty, so resolve this by simply defaulting to empty maps.
* Fix typo (#235)Lakelezz2017-12-171-1/+1
|
* Fix doc-tests and `single_zc`acdenisSK2017-12-171-1/+1
|
* Fix most clippy lints, take more refeerncesZeyla Hellyer2017-12-164-8/+9
| | | | | Fix clippy lints and subsequently accept references for more function parameters.
* Break up the model moduleZeyla Hellyer2017-12-1630-319/+391
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `model` module has historically been one giant module re-exporting all of the model types, which is somewhere around 100 types. This can be a lot to look at for a new user and somewhat overwhelming, especially with a large number of fine-grained imports from the module. The module is now neatly split up into submodules, mostly like it has been internally since the early versions of the library. The submodules are: - application - channel - error - event - gateway - guild - id - invite - misc - permissions - prelude - user - voice - webhook Each submodule contains types that are "owned" by the module. For example, the `guild` submodule contains, but not limited to, Emoji, AuditLogsEntry, Role, and Member. `channel` contains, but not limited to, Attachment, Embed, Message, and Reaction. Upgrade path: Instead of glob importing the models via `use serenity::model::*;`, instead glob import via the prelude: ```rust use serenity::model::prelude::*; ``` Instead of importing from the root model module: ```rust use serenity::model::{Guild, Message, OnlineStatus, Role, User}; ``` instead import from the submodules like so: ```rust use serenity::model::channel::Message; use serenity::model::guild::{Guild, Role}; use serenity::model::user::{OnlineStatus, User}; ```
* Revamp the internals of `Args`acdenisSK2017-12-161-3/+3
| | | | Fixes #180, however this partially breaks `single_zc` and `multiple_quoted`, but since they're minor it's better to fix them later for now.
* Fix deserialization of `Guild::application_id`Zeyla Hellyer2017-12-152-2/+4
| | | | | | | Fix the deserialization of the `Guild::application_id` structfield. Additionally, create a new ID type for it. A test has been added for this.
* Change type of a couple Guild/PartialGuild fieldsZeyla Hellyer2017-12-153-20/+44
| | | | | | Changes the types of `Guild` and `PartialGuild`'s `default_message_notifications` and `mfa_level` structfields to be a bit more type-strong.
* Add missing fields to Guild modelZeyla Hellyer2017-12-151-0/+46
| | | | | | | | Adds the following missing fields to the Guild model: - `application_id` - `explicit_content_filter` - `system_channel_id`
* Use a macro to generate FromStr implsacdenisSK2017-12-101-177/+92
|
* Merge branch 'branch-v0.4.5' into v0.5.0Zeyla Hellyer2017-12-091-2/+2
|\
| * Fix remaining deserializersZeyla Hellyer2017-12-091-2/+2
| | | | | | | | | | | | Following up on the recent commit to fix the snowflake types' deserializers, this commit fixes the rest of the library's usage of deserializers in the same manner.
| * Fix snowflake deserializerZeyla Hellyer2017-12-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes snowflake deserializers (ChannelId, UserId, etc.) by switching from a usage of `deserialize_u64` to `deserialize_any`. Our usage of `deserialize_u64` was incorrect and the erroneous behaviour was fixed in serde_json v1.0.8. We were essentially telling serde that the received type was a u64, when in fact it can be multiple types (strings, u64, or an i64 just in case). This resulted in errors like: ``` Client error: Json(ErrorImpl { code: Message("invalid type: string \"317727377985634305\", expected identifier"), line: 1, column: 100 }) ``` Due to this, simple operations such as even connecting a client failed.
* | Fix snowflake deserializerZeyla Hellyer2017-12-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes snowflake deserializers (ChannelId, UserId, etc.) by switching from a usage of `deserialize_u64` to `deserialize_any`. Our usage of `deserialize_u64` was incorrect and the erroneous behaviour was fixed in serde_json v1.0.8. We were essentially telling serde that the received type was a u64, when in fact it can be multiple types (strings, u64, or an i64 just in case). This resulted in errors like: ``` Client error: Json(ErrorImpl { code: Message("invalid type: string \"317727377985634305\", expected identifier"), line: 1, column: 100 }) ``` Due to this, simple operations such as even connecting a client failed. (cherry picked from commit 77f462ea2044ef7d2d12fd1289ea75a6a33cb5dd)
* | Fall back to `str::parse` on `ChannelId` as wellacdenisSK2017-12-061-7/+56
| | | | | | | | Also give an actual error type for `Channel` too.
* | Make the comment for the `AsRef` impl more clearacdenisSK2017-12-061-1/+3
| |
* | Use `AsRef` instead of just `&MessageId`acdenisSK2017-12-061-1/+1
| |
* | Add the `VIEW_AUDIT_LOG` permission (#229)Lakelezz2017-12-041-0/+8
| |
* | Tune down repetition with a macroacdenisSK2017-11-301-56/+31
| |
* | Convert from macro to ? (#226)Mei Boudreau2017-11-231-1/+1
| |
* | Fix no-gateway compilationZeyla Hellyer2017-11-201-3/+1
| |
* | Implement Deserialize for {,Gateway,Voice}EventZeyla Hellyer2017-11-191-149/+480
| | | | | | | | | | | | | | | | | | | | | | Implement Deserialize for `model::event::GatewayEvent` and `model::event::VoiceEvent`, and derive it for `model::event::Event`. Due to the natural potential slowness of deserializing into`Event` (attempting to deserialize into each variant until successful), a function named `model::event::deserialize_event_with_type` is provided for quickly deserializing into a known type if the dispatch type is known.
* | Add `model::Reaction::user`Zeyla Hellyer2017-11-181-3/+13
| | | | | | | | | | | | Add a `user` method to `Reaction::user`, which retrieves the User who made the reaction. This will check the cache for the user and, if either disabled or not found, falls back to hitting the REST API.
* | Add `model::Reaction::channel`Zeyla Hellyer2017-11-181-0/+15
| | | | | | | | | | | | Adds a `channel` method to `model::Reaction`, which retrieves the channel the reaction was made in from the Cache, falling back to hitting the REST API if one was not found (or the cache is disabled).
* | Alphabetize Reaction methodsZeyla Hellyer2017-11-181-14/+14
| |
* | Document that Reaction methods that hit the APIZeyla Hellyer2017-11-181-2/+8
| | | | | | | | | | | | | | Documents that the following `model::Reaction` methods hit the REST API: - `message` - `users`
* | Add a method to get a message from a reaction (#220)Maiddog2017-11-191-0/+10
| |
* | Add the new game types (#219)Mei Boudreau2017-11-161-0/+62
| |
* | Fix doc-testsacdenisSK2017-11-161-2/+1
| |
* | Implement From<EmojiId | EmojiIdentifier> for ReactionType (#217)Fenhl2017-11-131-0/+18
| |
* | Change PrivateChannel::say to use `Display` (#214)Fenhl2017-11-121-1/+1
| |
* | Re-order use statements alphabeticallyZeyla Hellyer2017-11-1120-72/+62
| |
* | Add Debug derives to more public typesthelearnerofcode2017-11-071-0/+2
| |
* | Actually, change `NeverFails` to a void enumacdenisSK2017-11-051-1/+1
| |
* | Whoops. Add a `FromStr` impl for `ReactionType`acdenisSK2017-11-044-8/+34
| |
* | Merge v0.4.3acdenisSK2017-11-046-53/+101
|\|
| * Fix doctests for a variety of feature targetsZeyla Hellyer2017-11-011-4/+4
| |
| * Fix no-client cache testsZeyla Hellyer2017-11-011-6/+6
| | | | | | | | | | There were a few doctests in the cache module that relied on the client module, so instead feature-gate the doctests.
| * Use consistent token names in examplesZeyla Hellyer2017-11-011-1/+1
| | | | | | | | | | The names of environment variable tokens in the examples differed, so this makes them all use the same name.
| * Make Member::permissions return guild permissionsZeyla Hellyer2017-10-311-11/+3
| | | | | | | | | | | | Fixes what is realistically a bug where `Member::permissions` would retrieve the permissions for the Member in the default channel of the guild. This now only returns the guild-level permissions of the member.
| * Rename `Guild::permissions_for`->`permissions_in`Zeyla Hellyer2017-10-304-7/+18
| | | | | | | | | | | | Rename `Guild::permissions_for` to `Guild::permissions_in`, deprecating `Guild::permissions_for` which is only an inline method to `permissions_in`.
| * Guild::has_perms: use Guild::member_permissionsZeyla Hellyer2017-10-301-22/+14
| | | | | | | | | | | | Make `Guild`'s internal method `has_perms` go through `Guild::member_permissions` to check permissions, since all method that use it don't need channel-specific permissions.
| * Add Guild::member_permissionsZeyla Hellyer2017-10-301-0/+51
| | | | | | | | | | | | Add a method on the Guild for calculating only a member's guild-only permissions, not including the permissions for either the default channel or any specific channel.
| * Add some docs to `BanOptions`acdenisSK2017-10-301-0/+1
| |
| * Fall back to `str::parse` if `parse_username` failsacdenisSK2017-10-241-3/+4
| |
* | `deserialize_i32` -> `deserialize_u8`acdenisSK2017-11-031-1/+1
| |
* | Make the Client return a ResultZeyla Hellyer2017-11-037-9/+20
| | | | | | | | | | | | | | | | The client now returns a Result in preparation of a future commit. Upgrade path: Handle the case of an error via pattern matching, or unwrap the Result.
* | Fix audit logs a bitacdenisSK2017-11-013-39/+82
| |
* | Add a fallback to `RoleId::from_str` as wellacdenisSK2017-10-241-7/+8
| |
* | Remove unwrapsacdenisSK2017-10-241-1/+1
| |