| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
| |
While this will use a slightly higher amount of memory, it will be
easier for users to use.
|
| |
|
|
|
| |
This will fix `ReadState`s failing to decode a `mention_count` if it is
not present, as it may be optional. Default to `0`.
|
| |
|
|
|
|
|
|
|
|
| |
Adds support for
`DELETE /guilds/:guild_id/members/:user_id/roles/:role_id` and
`PUT /guilds/:guild_id/members/:user_id/roles/:role_id`, which are
routes to add or remove individual roles to a guild member.
The `Member::add_role` and `Member::remove_role` methods will edit
in-place.
|
| |
|
|
|
| |
They do not work for bot users. So return a
`ClientError::InvalidOperationAsBot` if someone tries to.
|
| |
|
|
|
| |
from_rgb creates a `Colour` from an RGB representation. This is meant as
the "opposite" usage of `Colour::new`.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds conditional compilation for the following features, in
addition to the voice conditional compilation flag:
- extras (message builder)
- framework
- methods
- state
These 4 are enabled _by default_, while the `voice` feature flag is
disabled.
Disabling the state will allow incredibly low-memory bots.
|
| |
|
|
|
|
|
|
|
|
|
| |
Fixes decoding the following embed snippet:
```json
"author": {
"url": "https://www.facebook.com/oneplusofficial/",
"name": "OnePlus"
}
```
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a message builder to `send_message`. Often only one field - i.e.
`content` - needs to be specified, and the rest can be ignored.
This is a preliminary patch to add rich embed support to messages.
This message builder is used via:
```rust
// assuming in a context with a `channel_id` bound
context.send_message(channel_id, |m| m
.content("TTS ping!")
.tts(true));
```
|
| |
|
|
|
|
| |
When building without enabling the 'voice' feature, the voice example
would fail. Instead, feature-gate it off so that it at least compiles
with a "Voice not enabled" message.
|
| |
|
|
|
|
|
|
|
| |
When updating the State, return the old instance of removed/updated
fields where possible, so that they can be used to send to event
handlers as a "this is what it used to look like, this is what it looks
like now" type of thing.
Very descriptive, I know.
|
| |
|
|
|
|
| |
This is for a little bit of ergonomics, and is of such a minute cost
that it is worth it to just directly decode the u32's received for
Role/Embed colours into the Colour struct.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add support for the `PATCH /guilds/:guild_id/members/@me/nick` endpoint,
which allows the current user to edit their own nickname.
A user can only nickname themselves if they have the `Change Nickname`
permission.
This adds 4 methods:
- `serenity::client::http::edit_nickname`;
- `serenity::client::Context::edit_nickname`;
- `serenity::model::Guild::edit_nickname`;
- `serenity::model::LiveGuild::edit_nickname`.
`LiveGuild`'s implementation checks for whether the current user has
permission to change their own nickname.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
Create a general `internal` module, and move `prelude_internal` to
`internal::prelude`.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes the `url` field of embed authors optional, as it is not
required by the API.
Example JSON snippet object which this fixes:
```json
"author": {
"proxy_icon_url": "https://images-ext-2.discordapp.net/eyJ1cmwiOiJodHRwczovL3R3ZW1vamkubWF4Y2RuLmNvbS8zNngzNi8xZjRkMS5wbmcifQ.ALs1I_Kui5vGLvxNrWqPmAkD-xc",
"name": "FlexBot Server List - Page 1",
"icon_url": "https://twemoji.maxcdn.com/36x36/1f4d1.png"
}
```
|
| |
|
|
|
|
|
|
|
| |
The builders aren't a large enough portion of the library to deserve
their own root-level module, so move them to the `utils` module.
Additionally, split them into separate files, as the library will be
receiving more builders and the single-file pattern was getting rather
large.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
Before sending a request to Discord, ensure that a message's content on
non-HTTP functions and methods meets the required length. If it exceeds
the limit, then return a
`Error::Client(ClientError::MessageTooLong(u64))`, containing the number
of unicode code points exceeding the limit.
Note that directly using the HTTP methods does not impose this limit.
|
| |
|
|
|
|
|
|
|
| |
Add the `delete_message_reactions` endpoint
(`DELETE /channels/{}/messages/{}/reactions`) and implement a method on
the `Message` struct for easy access, `delete_reactions`.
Register the `MESSAGE_REACTION_REMOVE_ALL` event and add an event
handler.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
The missing HTTP methods are:
- get_guild_integrations: `GET /guilds/:guild_id/integrations
- get_guild_regions: `GET /guilds/:guild_id/regions`
- get_user_connections: `GET /users/@me/connections`
- get_user_dm_channels: `GET /users/@me/channels`
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Rather than completely dropping the connection, send a close code prior.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Features are handed by Discord to guilds that meet requirements which
are most likely realistically arbitrary.
The 3 features at this moment are:
- INVITE_SPLASH
- VANITY_URL
- VIP_REGIONS
On decoding of the two guild structs, map these string values to enum
variants.
|
| |
|
|
|
|
| |
Group channel IDs are mapped from the `id` key. However, the YAML
definition tried to map it to a `channel_id` field without a `from`
key. The `from` key of `id` will properly map to `channel_id`.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Messages in contexts other than MESSAGE_CREATE have a `reactions` field,
which in turn has an `emoji` field, which is mapped by the build script
to `reaction_type`. Add a `from` key to the YAML definition to perform
this name conversion.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
The command system assumed that prefixes were only one character long,
so count the total length of the prefix. In addition, the
`allow_whitespace` configuration added some difficulty in deciding where
to count as the initial position to start splitting for arguments.
Instead of fixing that, rewrite the framework to make these types of
changes easier in the future.
|
| | |
|
| | |
|
| |
|
|
|
| |
Embeds can return any combination - or a lack of - fields, so they need
to all be optional, except for 'type'.
|
| |
|
|
|
|
| |
This is a script to modify the docs in some fashion. Right now it just
adds an image to the header, but it will replace a couple of other
things, in a nicer fashion.
|
| | |
|
| | |
|
| | |
|