| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
| |
The endpoint to create a role no longer returns an empty role which
must be PATCHed, and can be completed in the initial request.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
| |
Also the dreaded `ctx <<= "something"` which is actually a mistake.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Implement command groups
* change to ref mut
* Implement framework API.
* Remove commands field
* Make it all work
* Make example use command groups
* Requested changes
* Implement adding buckets
* Add ratelimit check function
* Finish everything
* Fix voice example
* Actually fix it
* Fix doc tests
* Switch to result
* Savage examples
* Fix docs
* Fixes
* Accidental push
* 👀
* Fix an example
* fix some example
* Small cleanup
* Abstract ratelimit bucket logic
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds multiple configurations to the command builder, and adds methods
to various structs.
Context::get_current_user is a shortcut to retrieve the current user
from the cache.
Message::get_member retrieves the member object of the message, if sent
in a guild. Message::is_private checks if the message was sent in a
Group or PrivateChannel.
User::member retrieves the user's member object in a guild by Id;
Adds 6 configurations to the command builder:
- dm_only: whether the command can only be used in direct messages;
- guild_only: whether the command can only be used in guilds;
- help_available: whether the command should be displayed in the help
list;
- max_args: specify the maximum number of arguments a command must be
given;
- min_args: specify the minimum number of arguments a command must be
given;
- required_permissions: the permissions a member must have to be able
to use the command;
|
| |
|
|
| |
Additionally, flag imports behind feature flags to avoid unused imports.
|
| |
|
| |
This breaks compatibility with < 1.13, but we didn't support that anyway.
|
| |
|
|
|
|
|
|
| |
The context now exposes, through the Client, a `data` field, which can
be accessed safely across contexts. This allows for a custom "shared
state" without the need for (ab)using lazy-static.rs.
Refer to example 06 for an example on how to use shared data.
|
| |
|
|
|
| |
Add more documentation to most of the Context methods, also clarifying
which permission/s are required for each method.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
If a user account changes their profile settings, they'll receive a new
token; update the locally stored token for REST requests with this
token.
Additionally, the `Context::edit_profile` does not need mutability over
self.
Fixes #25.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Paginate the rest::get_guilds endpoint, which can be used to retrieve
the guilds after-or-before a certain guild's Id, with a limit of results
to return (100 is the max).
Example usage:
```rs
use serenity::client::rest::GuildPagination;
let target = GuildPagination::After(GuildId(81384788765712384));
let guilds = context.get_guilds(target, 50);
```
Additionally, add a method of `CurrentUser::guilds()`, to retrieve the
current user's guilds. A limit of 100 is set, as (most) users can not be
in more than 100 guilds.
|
| | |
|
| |
|
|
|
|
| |
The status routes were missing from the HTTP module (now the REST
module) rewrite, as well as the `GET /guilds/:id/members` route. In
addition, remove an unnecessary counter to the global ratelimit mutex.
|
| | |
|
| | |
|
| |
|
|
|
| |
Add documentation for some missing methods - such as Game methods - and
add more methods to the Message Builder.
|
| |
|
|
|
| |
Add documentation for Context methods, as well as brief documentation
for REST functions and model definitions.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Additionally, allow it to search the groups' and private channels' maps
in the cache. As these are usually O(1) operations, it's cheap to allow,
in comparison to the current unoptimized method of getting a guild's
channel.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The global Cache used to be an Arc<Mutex>, however the issue is that it
could only be opened for reading or writing once at a time.
With an RwLock, multiple readers can access the Cache at once, while
only one Writer may at once. This will allow users to be able to have
multiple Readers open at once, which should ease some of the pains with
working with the Cache.
Upgrade path:
Modify all uses of the CACHE from:
`CACHE.lock().unwrap()`
to
`CACHE.read().unwrap()` if reading from the Cache (most use cases), or
`CACHE.write().unwrap()` to write to it.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Re-organize the client module, creating a `gateway` submodule, and
splitting the connection into separate files in it.
The connection was a conglomeration of a number of purposes, most of
which are actually used elsewhere in the library and/or exposed to the
user. Thus, it makes sense to separate each item in a gateway-specific
module.
By splitting the client module further, this is a re-organization for
preliminary RPC support WRT the Client.
Additionally, rename the Connection struct to a Shard. The Connection
itself was not the actual connection, and was a higher-level interface
to the real connection logic. A Shard is a more accurate representation
of what it actually is.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
Rework the methods to accept strings and games directly, rather than
Optional values. Instead, use the new `reset_presence` to set a clean
status, or `set_presence` for more fine-grained control.
In addition, `Game::playing` and `Game::streaming` now accept `&str`s
rather than Strings.
|
| |
|
|
|
|
|
|
|
|
| |
For consistency with the rest of the library, rename the methods
prefixed with `find_` to `get_`.
The past logic was that items are "found", as they may or may not exist.
With get, the expectation is that it is _always_ there, i.e. over REST.
However, this is inconsistent, and "get"ting over REST can fail for
other reasons.
|
| |
|
|
|
|
|
|
| |
Fixes conditional compilation across multiple combinations of feature
targets, where it was assumed a second feature would be enabled by
something that requires a feature to be enabled.
This also fixes an EOF compilation error on no-feature builds.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
They do not work for bot users. So return a
`ClientError::InvalidOperationAsBot` if someone tries to.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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));
```
|