Struct serenity::model::guild::Guild[][src]

#[non_exhaustive]
pub struct Guild {
Show fields pub afk_channel_id: Option<ChannelId>, pub afk_timeout: u64, pub application_id: Option<ApplicationId>, pub channels: HashMap<ChannelId, GuildChannel>, pub default_message_notifications: DefaultMessageNotificationLevel, pub emojis: HashMap<EmojiId, Emoji>, pub explicit_content_filter: ExplicitContentFilter, pub features: Vec<String>, pub icon: Option<String>, pub id: GuildId, pub joined_at: DateTime<Utc>, pub large: bool, pub member_count: u64, pub members: HashMap<UserId, Member>, pub mfa_level: MfaLevel, pub name: String, pub owner_id: UserId, pub presences: HashMap<UserId, Presence>, pub region: String, pub roles: HashMap<RoleId, Role>, pub splash: Option<String>, pub discovery_splash: Option<String>, pub system_channel_id: Option<ChannelId>, pub system_channel_flags: SystemChannelFlags, pub rules_channel_id: Option<ChannelId>, pub public_updates_channel_id: Option<ChannelId>, pub verification_level: VerificationLevel, pub voice_states: HashMap<UserId, VoiceState>, pub description: Option<String>, pub premium_tier: PremiumTier, pub premium_subscription_count: u64, pub banner: Option<String>, pub vanity_url_code: Option<String>, pub preferred_locale: String, pub welcome_screen: Option<GuildWelcomeScreen>, pub approximate_member_count: Option<u64>, pub approximate_presence_count: Option<u64>, pub nsfw: bool, pub max_video_channel_users: Option<u64>, pub max_presences: Option<u64>, pub max_members: Option<u64>, pub widget_enabled: Option<bool>, pub widget_channel_id: Option<ChannelId>,
}
Expand description

Information about a Discord guild, such as channels, emojis, etc.

Fields (Non-exhaustive)

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct {{ .. }} syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
afk_channel_id: Option<ChannelId>
Expand description

Id of a voice channel that’s considered the AFK channel.

afk_timeout: u64
Expand description

The amount of seconds a user can not show any activity in a voice channel before being moved to an AFK channel – if one exists.

application_id: Option<ApplicationId>
Expand description

Application ID of the guild creator if it is bot-created.

channels: HashMap<ChannelId, GuildChannel>
Expand description

All voice and text channels contained within a guild.

This contains all channels regardless of permissions (i.e. the ability of the bot to read from or connect to them).

default_message_notifications: DefaultMessageNotificationLevel
Expand description

Indicator of whether notifications for all messages are enabled by default in the guild.

emojis: HashMap<EmojiId, Emoji>
Expand description

All of the guild’s custom emojis.

explicit_content_filter: ExplicitContentFilter
Expand description

Default explicit content filter level.

features: Vec<String>
Expand description

The guild features. More information available at discord documentation.

The following is a list of known features:

  • ANIMATED_ICON
  • BANNER
  • COMMERCE
  • COMMUNITY
  • DISCOVERABLE
  • FEATURABLE
  • INVITE_SPLASH
  • MEMBER_VERIFICATION_GATE_ENABLED
  • NEWS
  • PARTNERED
  • PREVIEW_ENABLED
  • VANITY_URL
  • VERIFIED
  • VIP_REGIONS
  • WELCOME_SCREEN_ENABLED
icon: Option<String>
Expand description

The hash of the icon used by the guild.

In the client, this appears on the guild list on the left-hand side.

id: GuildId
Expand description

The unique Id identifying the guild.

This is equivilant to the Id of the default role (@everyone) and also that of the default channel (typically #general).

joined_at: DateTime<Utc>
Expand description

The date that the current user joined the guild.

large: bool
Expand description

Indicator of whether the guild is considered “large” by Discord.

member_count: u64
Expand description

The number of members in the guild.

members: HashMap<UserId, Member>
Expand description

Users who are members of the guild.

Members might not all be available when the ReadyEvent is received if the Self::member_count is greater than the LARGE_THRESHOLD set by the library.

mfa_level: MfaLevel
Expand description

Indicator of whether the guild requires multi-factor authentication for Roles or Users with moderation permissions.

name: String
Expand description

The name of the guild.

owner_id: UserId
Expand description

The Id of the User who owns the guild.

presences: HashMap<UserId, Presence>
Expand description

A mapping of Users’ Ids to their current presences.

Note: This will be empty unless the “guild presences” privileged intent is enabled.

region: String
👎 Deprecated:

Regions are now set per voice channel instead of globally.

Expand description

The region that the voice servers that the guild uses are located in.

roles: HashMap<RoleId, Role>
Expand description

A mapping of the guild’s roles.

splash: Option<String>
Expand description

An identifying hash of the guild’s splash icon.

If the InviteSplash feature is enabled, this can be used to generate a URL to a splash image.

discovery_splash: Option<String>
Expand description

An identifying hash of the guild discovery’s splash icon.

Note: Only present for guilds with the DISCOVERABLE feature.

system_channel_id: Option<ChannelId>
Expand description

The ID of the channel to which system messages are sent.

system_channel_flags: SystemChannelFlags
Expand description

System channel flags.

rules_channel_id: Option<ChannelId>
Expand description

The id of the channel where rules and/or guidelines are displayed.

Note: Only available on COMMUNITY guild, see Self::features.

public_updates_channel_id: Option<ChannelId>
Expand description

The id of the channel where admins and moderators of Community guilds receive notices from Discord.

Note: Only available on COMMUNITY guild, see Self::features.

verification_level: VerificationLevel
Expand description

Indicator of the current verification level of the guild.

voice_states: HashMap<UserId, VoiceState>
Expand description

A mapping of Users to their current voice state.

description: Option<String>
Expand description

The server’s description, if it has one.

premium_tier: PremiumTier
Expand description

The server’s premium boosting level.

premium_subscription_count: u64
Expand description

The total number of users currently boosting this server.

banner: Option<String>
Expand description

The guild’s banner, if it has one.

vanity_url_code: Option<String>
Expand description

The vanity url code for the guild, if it has one.

preferred_locale: String
Expand description

The preferred locale of this guild only set if guild has the “DISCOVERABLE” feature, defaults to en-US.

welcome_screen: Option<GuildWelcomeScreen>
Expand description

The welcome screen of the guild.

Note: Only available on COMMUNITY guild, see Self::features.

approximate_member_count: Option<u64>
Expand description

Approximate number of members in this guild.

approximate_presence_count: Option<u64>
Expand description

Approximate number of non-offline members in this guild.

nsfw: bool
Expand description

Whether or not this guild is designated as NSFW. See discord support article.

max_video_channel_users: Option<u64>
Expand description

The maximum amount of users in a video channel.

max_presences: Option<u64>
Expand description

The maximum number of presences for the guild. The default value is currently 25000.

Note: It is in effect when it is None.

max_members: Option<u64>
Expand description

The maximum number of members for the guild.

widget_enabled: Option<bool>
Expand description

Whether or not the guild widget is enabled.

widget_channel_id: Option<ChannelId>
Expand description

The channel id that the widget will generate an invite to, or null if set to no invite

Implementations

impl Guild[src]

pub async fn default_channel(&self, uid: UserId) -> Option<&GuildChannel>[src]

Returns the “default” channel of the guild for the passed user id. (This returns the first channel that can be read by the user, if there isn’t one, returns None)

pub async fn default_channel_guaranteed(&self) -> Option<&GuildChannel>[src]

Returns the guaranteed “default” channel of the guild. (This returns the first channel that can be read by everyone, if there isn’t one, returns None)

Note: This is very costly if used in a server with lots of channels, members, or both.

pub async fn channel_id_from_name(
    &self,
    cache: impl AsRef<Cache>,
    name: impl AsRef<str>
) -> Option<ChannelId>
[src]

pub async fn ban(
    &self,
    cache_http: impl CacheHttp,
    user: impl Into<UserId>,
    dmd: u8
) -> Result<()>
[src]

Ban a User from the guild, deleting a number of days’ worth of messages (dmd) between the range 0 and 7.

Refer to the documentation for Guild::ban for more information.

Note: Requires the Ban Members permission.

Examples

Ban a member and remove all messages they’ve sent in the last 4 days:

// assumes a `user` and `guild` have already been bound
let _ = guild.ban(user, 4);

Errors

Returns a ModelError::DeleteMessageDaysAmount if the number of days’ worth of messages to delete is over the maximum.

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have permission to perform bans, or may return a ModelError::Hierarchy if the member to be banned has a higher role than the current user.

Otherwise returns Error::Http if the member cannot be banned.

pub async fn ban_with_reason(
    &self,
    cache_http: impl CacheHttp,
    user: impl Into<UserId>,
    dmd: u8,
    reason: impl AsRef<str>
) -> Result<()>
[src]

Ban a User from the guild with a reason. Refer to Self::ban to further documentation.

Errors

In addition to the possible reasons Self::ban may return an error, an Error::ExceededLimit may also be returned if the reason is too long.

pub fn banner_url(&self) -> Option<String>[src]

Returns the formatted URL of the guild’s banner image, if one exists.

pub async fn bans(&self, cache_http: impl CacheHttp) -> Result<Vec<Ban>>[src]

Retrieves a list of Bans for the guild.

Note: Requires the Ban Members permission.

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have permission to perform bans.

pub async fn audit_logs(
    &self,
    http: impl AsRef<Http>,
    action_type: Option<u8>,
    user_id: Option<UserId>,
    before: Option<AuditLogEntryId>,
    limit: Option<u8>
) -> Result<AuditLogs>
[src]

Retrieves a list of AuditLogs for the guild.

Note: Requires the View Audit Log permission.

Errors

Returns Error::Http if the current user does not have permission to view the audit log, or if an invalid value is given.

pub async fn channels(
    &self,
    http: impl AsRef<Http>
) -> Result<HashMap<ChannelId, GuildChannel>>
[src]

Gets all of the guild’s channels over the REST API.

Errors

Returns Error::Http if the guild is currently unavailable.

pub async fn create(
    http: impl AsRef<Http>,
    name: &str,
    region: Region,
    icon: Option<&str>
) -> Result<PartialGuild>
[src]

Creates a guild with the data provided.

Only a PartialGuild will be immediately returned, and a full Guild will be received over a Shard.

Note: This endpoint is usually only available for user accounts. Refer to Discord’s information for the endpoint here for more information. If you require this as a bot, re-think what you are doing and if it really needs to be doing this.

Examples

Create a guild called "test" in the US West region with no icon:

use serenity::model::{Guild, Region};

let _guild = Guild::create_guild(&http, "test", Region::UsWest, None).await;

Errors

Returns Error::Http if the current user cannot create a Guild.

pub async fn create_channel(
    &self,
    cache_http: impl CacheHttp,
    f: impl FnOnce(&mut CreateChannel) -> &mut CreateChannel
) -> Result<GuildChannel>
[src]

Creates a new Channel in the guild.

Note: Requires the Manage Channels permission.

Examples

use serenity::model::ChannelType;

// assuming a `guild` has already been bound

let _ = guild
    .create_channel(&http, |c| c.name("my-test-channel").kind(ChannelType::Text))
    .await;

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have permission to manage channels.

Otherwise will return Error::Http if the current user lacks permission.

pub async fn create_emoji(
    &self,
    http: impl AsRef<Http>,
    name: &str,
    image: &str
) -> Result<Emoji>
[src]

Creates an emoji in the guild with a name and base64-encoded image. The utils::read_image function is provided for you as a simple method to read an image and encode it into base64, if you are reading from the filesystem.

The name of the emoji must be at least 2 characters long and can only contain alphanumeric characters and underscores.

Requires the Manage Emojis permission.

Examples

See the EditProfile::avatar example for an in-depth example as to how to read an image from the filesystem and encode it as base64. Most of the example can be applied similarly for this method.

Errors

Returns Error::Http if the current user lacks permission.

pub async fn create_integration<I>(
    &self,
    http: impl AsRef<Http>,
    integration_id: impl Into<IntegrationId>,
    kind: &str
) -> Result<()>
[src]

Creates an integration for the guild.

Requires the Manage Guild permission.

Errors

Returns Error::Http if the current user lacks permission.

pub async fn create_application_command<F>(
    &self,
    http: impl AsRef<Http>,
    f: F
) -> Result<ApplicationCommand> where
    F: FnOnce(&mut CreateApplicationCommand) -> &mut CreateApplicationCommand
[src]

This is supported on crate feature unstable_discord_api only.

Creates a guild specific ApplicationCommand

Note: Unlike global ApplicationCommands, guild commands will update instantly.

Errors

Returns the same possible errors as create_global_application_command.

pub async fn create_application_commands<F>(
    &self,
    http: impl AsRef<Http>,
    f: F
) -> Result<Vec<ApplicationCommand>> where
    F: FnOnce(&mut CreateApplicationCommands) -> &mut CreateApplicationCommands
[src]

This is supported on crate feature unstable_discord_api only.

Same as create_application_command, but allows to create more than one command per call.

pub async fn create_application_command_permission<F>(
    &self,
    http: impl AsRef<Http>,
    command_id: CommandId,
    f: F
) -> Result<ApplicationCommandPermission> where
    F: FnOnce(&mut CreateApplicationCommandPermissionsData) -> &mut CreateApplicationCommandPermissionsData
[src]

This is supported on crate feature unstable_discord_api only.

Creates a guild specific ApplicationCommandPermission.

Note: It will update instantly.

pub async fn create_application_commands_permissions<F>(
    &self,
    http: impl AsRef<Http>,
    f: F
) -> Result<Vec<ApplicationCommandPermission>> where
    F: FnOnce(&mut CreateApplicationCommandsPermissions) -> &mut CreateApplicationCommandsPermissions
[src]

This is supported on crate feature unstable_discord_api only.

Same as create_application_command_permission but allows to create more than one permission per call.

pub async fn get_application_commands(
    &self,
    http: impl AsRef<Http>
) -> Result<Vec<ApplicationCommand>>
[src]

This is supported on crate feature unstable_discord_api only.

Get all guild application commands.

pub async fn get_application_command(
    &self,
    http: impl AsRef<Http>,
    command_id: CommandId
) -> Result<ApplicationCommand>
[src]

This is supported on crate feature unstable_discord_api only.

Get a specific guild application command by its Id.

pub async fn edit_application_command<F>(
    &self,
    http: impl AsRef<Http>,
    command_id: CommandId,
    f: F
) -> Result<ApplicationCommand> where
    F: FnOnce(&mut CreateApplicationCommand) -> &mut CreateApplicationCommand
[src]

This is supported on crate feature unstable_discord_api only.

Edit guild application command by its Id.

pub async fn delete_application_command(
    &self,
    http: impl AsRef<Http>,
    command_id: CommandId
) -> Result<()>
[src]

This is supported on crate feature unstable_discord_api only.

Delete guild application command by its Id.

pub async fn get_application_commands_permissions(
    &self,
    http: impl AsRef<Http>
) -> Result<Vec<ApplicationCommandPermission>>
[src]

This is supported on crate feature unstable_discord_api only.

Get all guild application commands permissions only.

pub async fn get_application_command_permissions(
    &self,
    http: impl AsRef<Http>,
    command_id: CommandId
) -> Result<ApplicationCommandPermission>
[src]

This is supported on crate feature unstable_discord_api only.

Get permissions for specific guild application command by its Id.

pub async fn create_role<F>(
    &self,
    cache_http: impl CacheHttp,
    f: F
) -> Result<Role> where
    F: FnOnce(&mut EditRole) -> &mut EditRole
[src]

Creates a new role in the guild with the data set, if any.

Note: Requires the Manage Roles permission.

Examples

Create a role which can be mentioned, with the name ‘test’:

// assuming a `guild` has been bound

let role = guild.create_role(&http, |r| r.hoist(true).name("role")).await;

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have permission to manage roles.

Otherwise will return Error::Http if the current user does not have permission.

pub async fn delete(&self, cache_http: impl CacheHttp) -> Result<PartialGuild>[src]

Deletes the current guild if the current user is the owner of the guild.

Note: Requires the current user to be the owner of the guild.

Errors

If the cache is enabled, then returns a ModelError::InvalidUser if the current user is not the guild owner.

Otherwise returns Error::Http if the current user is not the owner of the guild.

pub async fn delete_emoji(
    &self,
    http: impl AsRef<Http>,
    emoji_id: impl Into<EmojiId>
) -> Result<()>
[src]

Deletes an Emoji from the guild.

Requires the Manage Emojis permission.

Errors

Returns Error::Http if the current user lacks permission.

pub async fn delete_integration(
    &self,
    http: impl AsRef<Http>,
    integration_id: impl Into<IntegrationId>
) -> Result<()>
[src]

Deletes an integration by Id from the guild.

Requires the Manage Guild permission.

Errors

Returns an Error::Http if the current user lacks permission, or if an Integration with that Id does not exist.

pub async fn delete_role(
    &self,
    http: impl AsRef<Http>,
    role_id: impl Into<RoleId>
) -> Result<()>
[src]

Deletes a Role by Id from the guild.

Also see Role::delete if you have the cache and model features enabled.

Requires the Manage Roles permission.

Errors

Returns Error::Http if the current user lacks permission to delete the role.

pub async fn edit<F>(&mut self, cache_http: impl CacheHttp, f: F) -> Result<()> where
    F: FnOnce(&mut EditGuild) -> &mut EditGuild
[src]

Edits the current guild with new data where specified.

Refer to EditGuild’s documentation for a full list of methods.

Note: Requires the current user to have the Manage Guild permission.

Examples

Change a guild’s icon using a file name “icon.png”:

use serenity::utils;

// We are using read_image helper function from utils.
let base64_icon = utils::read_image("./icon.png")
    .expect("Failed to read image");

guild.edit(|g| g.icon(base64_icon));

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have permission to edit the guild.

Otherwise will return Error::Http if the current user does not have permission.

pub async fn edit_emoji(
    &self,
    http: impl AsRef<Http>,
    emoji_id: impl Into<EmojiId>,
    name: &str
) -> Result<Emoji>
[src]

Edits an Emoji’s name in the guild.

Also see Emoji::edit if you have the cache and model features enabled.

Requires the Manage Emojis permission.

Errors

Returns Error::Http if the current user lacks permission.

pub async fn edit_member<F>(
    &self,
    http: impl AsRef<Http>,
    user_id: impl Into<UserId>,
    f: F
) -> Result<Member> where
    F: FnOnce(&mut EditMember) -> &mut EditMember
[src]

Edits the properties of member of the guild, such as muting or nicknaming them. Returns the new member.

Refer to EditMember’s documentation for a full list of methods and permission restrictions.

Examples

Mute a member and set their roles to just one role with a predefined Id:

guild.edit_member(user_id, |m| m.mute(true).roles(&vec![role_id]));

Errors

Returns Error::Http if the current user lacks the necessary permissions.

pub async fn edit_nickname(
    &self,
    cache_http: impl CacheHttp,
    new_nickname: Option<&str>
) -> Result<()>
[src]

Edits the current user’s nickname for the guild.

Pass None to reset the nickname.

Note: Requires the Change Nickname permission.

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have permission to change their own nickname.

Otherwise will return Error::Http if the current user lacks permission.

pub async fn edit_role<F>(
    &self,
    http: impl AsRef<Http>,
    role_id: impl Into<RoleId>,
    f: F
) -> Result<Role> where
    F: FnOnce(&mut EditRole) -> &mut EditRole
[src]

Edits a role, optionally setting its fields.

Requires the Manage Roles permission.

Examples

Make a role hoisted:

guild.edit_role(&context, RoleId(7), |r| r.hoist(true));

Errors

Returns Error::Http if the current user lacks permission.

pub async fn edit_role_position(
    &self,
    http: impl AsRef<Http>,
    role_id: impl Into<RoleId>,
    position: u64
) -> Result<Vec<Role>>
[src]

Edits the order of Roles Requires the Manage Roles permission.

Examples

Change the order of a role:

use serenity::model::id::RoleId;
guild.edit_role_position(&context, RoleId(8), 2);

Errors

Returns Error::Http if the current user lacks permission.

pub async fn edit_welcome_screen<F>(
    &self,
    http: impl AsRef<Http>,
    f: F
) -> Result<GuildWelcomeScreen> where
    F: FnOnce(&mut EditGuildWelcomeScreen) -> &mut EditGuildWelcomeScreen
[src]

Edits the GuildWelcomeScreen.

Errors

Returns an Error::Http if some mandatory fields are not provided.

pub async fn edit_widget<F>(
    &self,
    http: impl AsRef<Http>,
    f: F
) -> Result<GuildWidget> where
    F: FnOnce(&mut EditGuildWidget) -> &mut EditGuildWidget
[src]

Edits the GuildWidget.

Errors

Returns an Error::Http if the bot does not have the MANAGE_GUILD permission.

pub async fn get(
    http: impl AsRef<Http>,
    guild_id: impl Into<GuildId>
) -> Result<PartialGuild>
[src]

Gets a partial amount of guild data by its Id.

Note: This will not be a Guild, as the REST API does not send all data with a guild retrieval.

Errors

Returns an Error::Http if the current user is not in the guild.

pub async fn greater_member_hierarchy(
    &self,
    cache: impl AsRef<Cache>,
    lhs_id: impl Into<UserId>,
    rhs_id: impl Into<UserId>
) -> Option<UserId>
[src]

Returns which of two Users has a higher Member hierarchy.

Hierarchy is essentially who has the Role with the highest position.

Returns None if at least one of the given users’ member instances is not present. Returns None if the users have the same hierarchy, as neither are greater than the other.

If both user IDs are the same, None is returned. If one of the users is the guild owner, their ID is returned.

pub fn icon_url(&self) -> Option<String>[src]

Returns the formatted URL of the guild’s icon, if one exists.

This will produce a WEBP image URL, or GIF if the guild has a GIF icon.

pub async fn emojis(&self, http: impl AsRef<Http>) -> Result<Vec<Emoji>>[src]

Gets all Emojis of this guild via HTTP.

Errors

Returns Error::Http if the guild is unavailable

pub async fn emoji(
    &self,
    http: impl AsRef<Http>,
    emoji_id: EmojiId
) -> Result<Emoji>
[src]

Gets an Emoji of this guild by its ID via HTTP.

Errors

Returns an Error::Http if an emoji with that Id does not exist in the guild, or if the guild is unavailable.

May also return Error::Json if there is an error in deserialzing the API response.

pub async fn integrations(
    &self,
    http: impl AsRef<Http>
) -> Result<Vec<Integration>>
[src]

Gets all integration of the guild.

Note: Requires the Manage Guild permission.

Errors

Returns Error::Http if the current user does not have permission to see integrations.

May also return Error::Json if there is an error in deserializing the API response.

pub async fn invites(
    &self,
    cache_http: impl CacheHttp
) -> Result<Vec<RichInvite>>
[src]

Retrieves the active invites for the guild.

Note: Requires the Manage Guild permission.

Errors

If the cache is enabled, returns ModelError::InvalidPermissions if the current user does not have permission to see invites.

Otherwise will return Error::Http if the current user does not have permission.

pub fn is_large(&self) -> bool[src]

Checks if the guild is ‘large’. A guild is considered large if it has more than 250 members.

pub async fn kick(
    &self,
    http: impl AsRef<Http>,
    user_id: impl Into<UserId>
) -> Result<()>
[src]

Kicks a Member from the guild.

Requires the Kick Members permission.

Errors

Returns Error::Http if the member cannot be kicked by the current user.

pub async fn kick_with_reason(
    &self,
    http: impl AsRef<Http>,
    user_id: impl Into<UserId>,
    reason: &str
) -> Result<()>
[src]

Errors

In addition to the reasons Self::kick may return an error, may also return an error if the reason is too long.

pub async fn leave(&self, http: impl AsRef<Http>) -> Result<()>[src]

Leaves the guild.

Errors

May return an Error::Http if the current user cannot leave the guild, or currently is not in the guild.

pub async fn member(
    &self,
    cache_http: impl CacheHttp,
    user_id: impl Into<UserId>
) -> Result<Member>
[src]

Gets a user’s Member for the guild by Id.

Errors

Returns an Error::Http if the user is not in the guild or if the guild is otherwise unavailable.

pub async fn members(
    &self,
    http: impl AsRef<Http>,
    limit: Option<u64>,
    after: impl Into<Option<UserId>>
) -> Result<Vec<Member>>
[src]

Gets a list of the guild’s members.

Optionally pass in the limit to limit the number of results. Minimum value is 1, maximum and default value is 1000.

Optionally pass in after to offset the results by a User’s Id.

Errors

Returns an Error::Http if the API returns an error, may also return Error::NotInRange if the input is not within range.

pub fn members_with_status(&self, status: OnlineStatus) -> Vec<&Member>[src]

Gets a list of all the members (satisfying the status provided to the function) in this guild.

pub fn member_named(&self, name: &str) -> Option<&Member>[src]

Retrieves the first Member found that matches the name - with an optional discriminator - provided.

Searching with a discriminator given is the most precise form of lookup, as no two people can share the same username and discriminator.

If a member can not be found by username or username#discriminator, then a search will be done for the nickname. When searching by nickname, the hash (#) and everything after it is included in the search.

The following are valid types of searches:

  • username: “zey”
  • username and discriminator: “zey#5479”

pub async fn members_starting_with(
    &self,
    prefix: &str,
    case_sensitive: bool,
    sorted: bool
) -> Vec<(&Member, String)>
[src]

Retrieves all Member that start with a given String.

sorted decides whether the best early match of the prefix should be the criteria to sort the result. For the prefix “zey” and the unsorted result:

  • “zeya”, “zeyaa”, “zeyla”, “zeyzey”, “zeyzeyzey” It would be sorted:
  • “zeya”, “zeyaa”, “zeyla”, “zeyzey”, “zeyzeyzey”

Locking: First collects a Member’s User-name by read-locking all inner Users, and then sorts. This ensures that no name is being changed after being sorted in the originally correct position. However, since the read-locks are dropped after borrowing the name, the names might have been changed by the user, the sorted list cannot account for this.

pub async fn members_containing(
    &self,
    substring: &str,
    case_sensitive: bool,
    sorted: bool
) -> Vec<(&Member, String)>
[src]

Retrieves all Member containing a given String as either username or nick, with a priority on username.

If the substring is “yla”, following results are possible:

  • “zeyla”, “meiyla”, “yladenisyla” If ‘case_sensitive’ is false, the following are not found:
  • “zeYLa”, “meiyLa”, “LYAdenislyA”

sorted decides whether the best early match of the search-term should be the criteria to sort the result. It will look at the account name first, if that does not fit the search-criteria substring, the display-name will be considered. For the substring “zey” and the unsorted result:

  • “azey”, “zey”, “zeyla”, “zeylaa”, “zeyzeyzey” It would be sorted:
  • “zey”, “azey”, “zeyla”, “zeylaa”, “zeyzeyzey”

Note: Due to two fields of a Member being candidates for the searched field, setting sorted to true will result in an overhead, as both fields have to be considered again for sorting.

Locking: First collects a Member’s User-name by read-locking all inner Users, and then sorts. This ensures that no name is being changed after being sorted in the originally correct position. However, since the read-locks are dropped after borrowing the name, the names might have been changed by the user, the sorted list cannot account for this.

pub async fn members_username_containing(
    &self,
    substring: &str,
    case_sensitive: bool,
    sorted: bool
) -> Vec<(&Member, String)>
[src]

Retrieves a tuple of Members containing a given String in their username as the first field and the name used for sorting as the second field.

If the substring is “yla”, following results are possible:

  • “zeyla”, “meiyla”, “yladenisyla” If ‘case_sensitive’ is false, the following are not found:
  • “zeYLa”, “meiyLa”, “LYAdenislyA”

sort decides whether the best early match of the search-term should be the criteria to sort the result. For the substring “zey” and the unsorted result:

  • “azey”, “zey”, “zeyla”, “zeylaa”, “zeyzeyzey” It would be sorted:
  • “zey”, “azey”, “zeyla”, “zeylaa”, “zeyzeyzey”

Locking: First collects a Member’s User-name by read-locking all inner Users, and then sorts. This ensures that no name is being changed after being sorted in the originally correct position. However, since the read-locks are dropped after borrowing the name, the names might have been changed by the user, the sorted list cannot account for this.

pub async fn members_nick_containing(
    &self,
    substring: &str,
    case_sensitive: bool,
    sorted: bool
) -> Vec<(&Member, String)>
[src]

Retrieves all Member containing a given String in their nick.

If the substring is “yla”, following results are possible:

  • “zeyla”, “meiyla”, “yladenisyla” If ‘case_sensitive’ is false, the following are not found:
  • “zeYLa”, “meiyLa”, “LYAdenislyA”

sort decides whether the best early match of the search-term should be the criteria to sort the result. For the substring “zey” and the unsorted result:

  • “azey”, “zey”, “zeyla”, “zeylaa”, “zeyzeyzey” It would be sorted:
  • “zey”, “azey”, “zeyla”, “zeylaa”, “zeyzeyzey”

Note: Instead of panicing, when sorting does not find a nick, the username will be used (this should never happen).

Locking: First collects a Member’s nick directly or by read-locking all inner Users (in case of no nick, see note above), and then sorts. This ensures that no name is being changed after being sorted in the originally correct position. However, since the read-locks are dropped after borrowing the name, the names might have been changed by the user, the sorted list cannot account for this.

pub async fn member_permissions(
    &self,
    cache_http: impl CacheHttp,
    user_id: impl Into<UserId>
) -> Result<Permissions>
[src]

Calculate a Member’s permissions in the guild.

If member caching is enabled the cache will be checked first. If not found it will resort to an http request.

Cache is still required to look up roles.

Errors

See Guild::member.

pub async fn move_member(
    &self,
    http: impl AsRef<Http>,
    user_id: impl Into<UserId>,
    channel_id: impl Into<ChannelId>
) -> Result<Member>
[src]

Moves a member to a specific voice channel.

Requires the Move Members permission.

Errors

Returns an Error::Http if the current user lacks permission, or if the member is not currently in a voice channel for this Guild.

pub fn user_permissions_in(
    &self,
    channel: &GuildChannel,
    member: &Member
) -> Result<Permissions>
[src]

Calculate a Member’s permissions in a given channel in the guild.

Errors

Returns Error::Model if the Member has a non-existent role for some reason.

pub fn role_permissions_in(
    &self,
    channel: &GuildChannel,
    role: &Role
) -> Result<Permissions>
[src]

Calculate a Role’s permissions in a given channel in the guild.

Errors

Will return an Error::Model if the Role or Channel is not from this Guild.

pub async fn prune_count(
    &self,
    cache_http: impl CacheHttp,
    days: u16
) -> Result<GuildPrune>
[src]

Retrieves the count of the number of Members that would be pruned with the number of given days.

See the documentation on GuildPrune for more information.

Note: Requires the Kick Members permission.

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have permission to kick members.

Otherwise may return Error::Http if the current user does not have permission. Can also return Error::Json if there is an error in deserializing the API response.

pub async fn reorder_channels<It>(
    &self,
    http: impl AsRef<Http>,
    channels: It
) -> Result<()> where
    It: IntoIterator<Item = (ChannelId, u64)>, 
[src]

Re-orders the channels of the guild.

Although not required, you should specify all channels’ positions, regardless of whether they were updated. Otherwise, positioning can sometimes get weird.

Note: Requires the Manage Channels permission.

Errors

Returns an Error::Http if the current user is lacking permission.

pub async fn shard_id(&self, cache: impl AsRef<Cache>) -> u64[src]

Returns the Id of the shard associated with the guild.

When the cache is enabled this will automatically retrieve the total number of shards.

Note: When the cache is enabled, this function unlocks the cache to retrieve the total number of shards in use. If you already have the total, consider using utils::shard_id.

pub fn splash_url(&self) -> Option<String>[src]

Returns the formatted URL of the guild’s splash image, if one exists.

pub async fn start_integration_sync(
    &self,
    http: impl AsRef<Http>,
    integration_id: impl Into<IntegrationId>
) -> Result<()>
[src]

Starts an integration sync for the given integration Id.

Requires the Manage Guild permission.

Errors

Returns an Error::Http if the current user does not have permission, or if an Integration with that Id does not exist.

pub async fn start_prune(
    &self,
    cache_http: impl CacheHttp,
    days: u16
) -> Result<GuildPrune>
[src]

Starts a prune of Members.

See the documentation on GuildPrune for more information.

Note: Requires the Kick Members permission.

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have permission to kick members.

Otherwise will return Error::Http if the current user does not have permission.

Can also return an Error::Json if there is an error deserializing the API response.

pub async fn unban(
    &self,
    cache_http: impl CacheHttp,
    user_id: impl Into<UserId>
) -> Result<()>
[src]

Unbans the given User from the guild.

Note: Requires the Ban Members permission.

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have permission to perform bans.

Otherwise will return an Error::Http if the current user does not have permission.

pub async fn vanity_url(&self, http: impl AsRef<Http>) -> Result<String>[src]

Retrieve’s the guild’s vanity URL.

Note: Requires the Manage Guild permission.

Errors

Will return Error::Http if the current user is lacking permissions. Can also return an Error::Json if there is an error deserializing the API response.

pub async fn webhooks(&self, http: impl AsRef<Http>) -> Result<Vec<Webhook>>[src]

Retrieves the guild’s webhooks.

Note: Requires the Manage Webhooks permission.

Errors

Will return an Error::Http if the current user is lacking permissions. Can also return an Error::Json if there is an error deserializing the API response.

pub fn role_by_name(&self, role_name: &str) -> Option<&Role>[src]

Obtain a reference to a role by its name.

Note: If two or more roles have the same name, obtained reference will be one of them.

Examples

Obtain a reference to a Role by its name.

use serenity::model::prelude::*;
use serenity::prelude::*;

struct Handler;

#[serenity::async_trait]
impl EventHandler for Handler {
    async fn message(&self, ctx: Context, msg: Message) {
        if let Some(guild_id) = msg.guild_id {
            if let Some(guild) = guild_id.to_guild_cached(&ctx).await {
                if let Some(role) = guild.role_by_name("role_name") {
                    println!("{:?}", role);
                }
            }
        }
    }
}

let mut client = Client::builder("token").event_handler(Handler).await?;

client.start().await?;

Trait Implementations

impl Clone for Guild[src]

fn clone(&self) -> Guild[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for Guild[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<'de> Deserialize<'de> for Guild[src]

fn deserialize<D: Deserializer<'de>>(
    deserializer: D
) -> StdResult<Self, D::Error>
[src]

Deserialize this value from the given Serde deserializer. Read more

impl<'a> From<&'a Guild> for GuildId[src]

fn from(live_guild: &Guild) -> GuildId[src]

Gets the Id of Guild.

impl From<Guild> for GuildId[src]

fn from(live_guild: Guild) -> GuildId[src]

Gets the Id of Guild.

impl Serialize for Guild[src]

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
    __S: Serializer
[src]

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

impl RefUnwindSafe for Guild

impl Send for Guild

impl Sync for Guild

impl Unpin for Guild

impl UnwindSafe for Guild

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T> Instrument for T[src]

fn instrument(self, span: Span) -> Instrumented<Self>[src]

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

fn in_current_span(self) -> Instrumented<Self>[src]

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]