pub trait ArgumentConvert: Sized {
    type Err;

    // Required method
    fn convert<'life0, 'async_trait>(
        ctx: impl 'async_trait + CacheHttp,
        guild_id: Option<GuildId>,
        channel_id: Option<ChannelId>,
        s: &'life0 str
    ) -> Pin<Box<dyn Future<Output = Result<Self, Self::Err>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
}
Available on crate features client and utils only.
Expand description

Parse a value from a string in context of a received message.

This trait is a superset of std::str::FromStr. The difference is that this trait aims to support serenity-specific Discord types like Member or Message.

Trait implementations may do network requests as part of their parsing procedure.

Useful for implementing argument parsing in command frameworks.

Required Associated Types§

source

type Err

The associated error which can be returned from parsing.

Required Methods§

source

fn convert<'life0, 'async_trait>( ctx: impl 'async_trait + CacheHttp, guild_id: Option<GuildId>, channel_id: Option<ChannelId>, s: &'life0 str ) -> Pin<Box<dyn Future<Output = Result<Self, Self::Err>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Parses a string s as a command parameter of this type.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ArgumentConvert for Channel

Look up a Channel by a string case-insensitively.

Lookup are done via local guild. If in DMs, the global cache is used instead.

The cache feature needs to be enabled.

The lookup strategy is as follows (in order):

  1. Lookup by ID.
  2. Lookup by mention.
  3. Lookup by name.
source§

impl ArgumentConvert for GuildChannel

Look up a GuildChannel by a string case-insensitively.

Lookup is done by the global cache, hence the cache feature needs to be enabled.

For more information, see the ArgumentConvert implementation for Channel

source§

impl ArgumentConvert for Message

Look up a message by a string.

The lookup strategy is as follows (in order):

  1. Lookup by “{channel ID}-{message ID}” (retrieved by shift-clicking on “Copy ID”)
  2. Lookup by message ID (the message must be in the context channel)
  3. Lookup by message URL
source§

impl ArgumentConvert for Emoji

Look up a Emoji.

Requires the cache feature to be enabled.

The lookup strategy is as follows (in order):

  1. Lookup by ID.
  2. Lookup by extracting ID from the emoji.
  3. Lookup by name.
source§

impl ArgumentConvert for Guild

Available on crate feature cache only.

Look up a Guild, either by ID or by a string case-insensitively.

Requires the cache feature to be enabled.

source§

impl ArgumentConvert for Member

Look up a guild member by a string case-insensitively.

Requires the cache feature to be enabled.

The lookup strategy is as follows (in order):

  1. Lookup by ID.
  2. Lookup by mention.
  3. Lookup by name#discrim.
  4. Lookup by name
  5. Lookup by nickname
source§

impl ArgumentConvert for Role

Look up a Role by a string case-insensitively.

Requires the cache feature to be enabled.

The lookup strategy is as follows (in order):

  1. Lookup by ID
  2. Lookup by mention.
  3. Lookup by name (case-insensitive)
source§

impl ArgumentConvert for User

Look up a user by a string case-insensitively.

Requires the cache feature to be enabled. If a user is not in cache, they will not be found!

The lookup strategy is as follows (in order):

  1. Lookup by ID.
  2. Lookup by mention.
  3. Lookup by name#discrim.
  4. Lookup by name
source§

impl<T: FromStr> ArgumentConvert for T

§

type Err = <T as FromStr>::Err