Struct serenity::model::Guild
[−]
[src]
pub struct Guild { pub afk_channel_id: Option<ChannelId>, pub afk_timeout: u64, pub channels: HashMap<ChannelId, Arc<RwLock<GuildChannel>>>, pub default_message_notifications: u64, pub emojis: HashMap<EmojiId, Emoji>, pub features: Vec<Feature>, pub icon: Option<String>, pub id: GuildId, pub joined_at: DateTime<FixedOffset>, pub large: bool, pub member_count: u64, pub members: HashMap<UserId, Member>, pub mfa_level: u64, 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 verification_level: VerificationLevel, pub voice_states: HashMap<UserId, VoiceState>, }
Information about a Discord guild, such as channels, emojis, etc.
Fields
afk_channel_id: Option<ChannelId>
Id of a voice channel that's considered the AFK channel.
afk_timeout: u64
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.
channels: HashMap<ChannelId, Arc<RwLock<GuildChannel>>>
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: u64
Indicator of whether notifications for all messages are enabled by default in the guild.
emojis: HashMap<EmojiId, Emoji>
All of the guild's custom emojis.
features: Vec<Feature>
VIP features enabled for the guild. Can be obtained through the Discord Partnership website.
icon: Option<String>
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
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<FixedOffset>
The date that the current user joined the guild.
large: bool
Indicator of whether the guild is considered "large" by Discord.
member_count: u64
The number of members in the guild.
members: HashMap<UserId, Member>
Users who are members of the guild.
Members might not all be available when the ReadyEvent
is received
if the [member_count
] is greater than the LARGE_THRESHOLD
set by
the library.
mfa_level: u64
Indicator of whether the guild requires multi-factor authentication for
Role
s or User
s with moderation permissions.
name: String
The name of the guild.
owner_id: UserId
The Id of the User
who owns the guild.
presences: HashMap<UserId, Presence>
A mapping of User
s' Ids to their current presences.
region: String
The region that the voice servers that the guild uses are located in.
roles: HashMap<RoleId, Role>
A mapping of the guild's roles.
splash: Option<String>
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.
verification_level: VerificationLevel
Indicator of the current verification level of the guild.
voice_states: HashMap<UserId, VoiceState>
A mapping of of User
s to their current voice state.
Methods
impl Guild
[src]
fn default_channel(&self) -> Option<GuildChannel>
[src]
Returns the "default" channel of the guild.
(This returns the first channel that can be read by the bot, if there isn't one,
returns None
)
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 however that this is very costy if used in a server with lots of channels,
members, or both.
fn ban<U: Into<UserId>, BO: BanOptions>(
&self,
user: U,
options: BO
) -> Result<()>
[src]
&self,
user: U,
options: BO
) -> Result<()>
Ban a User
from the guild. All messages by the
user within the last given number of days given will be deleted.
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::InvalidPermissions
if the current user does
not have permission to perform bans.
Returns a ModelError::DeleteMessageDaysAmount
if the number of
days' worth of messages to delete is over the maximum.
fn bans(&self) -> Result<Vec<Ban>>
[src]
Retrieves a list of Ban
s 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.
fn audit_logs(&self) -> Result<AuditLogs>
[src]
Retrieves a list of AuditLogs
for the guild.
fn channels(&self) -> Result<HashMap<ChannelId, GuildChannel>>
[src]
Gets all of the guild's channels over the REST API.
fn create(
name: &str,
region: Region,
icon: Option<&str>
) -> Result<PartialGuild>
[src]
name: &str,
region: Region,
icon: Option<&str>
) -> Result<PartialGuild>
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("test", Region::UsWest, None);
fn create_channel(&self, name: &str, kind: ChannelType) -> 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("my-test-channel", ChannelType::Text);
Errors
If the cache
is enabled, returns a ModelError::InvalidPermissions
if the current user does not have permission to perform bans.
fn create_emoji(&self, 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.
fn create_integration<I>(&self, integration_id: I, kind: &str) -> Result<()> where
I: Into<IntegrationId>,
[src]
I: Into<IntegrationId>,
Creates an integration for the guild.
Requires the Manage Guild permission.
fn create_role<F>(&self, f: F) -> Result<Role> where
F: FnOnce(EditRole) -> EditRole,
[src]
F: FnOnce(EditRole) -> EditRole,
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(|r| r.hoist(true).name("role"));
Errors
If the cache
is enabled, returns a ModelError::InvalidPermissions
if the current user does not have permission to perform bans.
fn delete(&self) -> 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.
fn delete_emoji<E: Into<EmojiId>>(&self, emoji_id: E) -> Result<()>
[src]
Deletes an Emoji
from the guild.
Requires the Manage Emojis permission.
fn delete_integration<I: Into<IntegrationId>>(
&self,
integration_id: I
) -> Result<()>
[src]
&self,
integration_id: I
) -> Result<()>
Deletes an integration by Id from the guild.
Requires the Manage Guild permission.
fn delete_role<R: Into<RoleId>>(&self, role_id: R) -> Result<()>
[src]
Deletes a Role
by Id from the guild.
Also see Role::delete
if you have the cache
and methods
features
enabled.
Requires the Manage Roles permission.
fn edit<F>(&mut self, f: F) -> Result<()> where
F: FnOnce(EditGuild) -> EditGuild,
[src]
F: FnOnce(EditGuild) -> EditGuild,
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 perform bans.
fn edit_emoji<E: Into<EmojiId>>(&self, emoji_id: E, name: &str) -> Result<Emoji>
[src]
Edits an Emoji
's name in the guild.
Also see Emoji::edit
if you have the cache
and methods
features
enabled.
Requires the Manage Emojis permission.
fn edit_member<F, U>(&self, user_id: U, f: F) -> Result<()> where
F: FnOnce(EditMember) -> EditMember,
U: Into<UserId>,
[src]
F: FnOnce(EditMember) -> EditMember,
U: Into<UserId>,
Edits the properties of member of the guild, such as muting or nicknaming them.
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]));
fn edit_nickname(&self, 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.
fn edit_role<F, R>(&self, role_id: R, f: F) -> Result<Role> where
F: FnOnce(EditRole) -> EditRole,
R: Into<RoleId>,
[src]
F: FnOnce(EditRole) -> EditRole,
R: Into<RoleId>,
Edits a role, optionally setting its fields.
Requires the Manage Roles permission.
Examples
Make a role hoisted:
guild.edit_role(RoleId(7), |r| r.hoist(true));
fn get<G: Into<GuildId>>(guild_id: G) -> Result<PartialGuild>
[src]
Gets a partial amount of guild data by its Id.
Requires that the current user be in the guild.
fn icon_url(&self) -> Option<String>
[src]
Returns the formatted URL of the guild's icon, if one exists.
fn integrations(&self) -> Result<Vec<Integration>>
[src]
Gets all integration of the guild.
This performs a request over the REST API.
fn invites(&self) -> Result<Vec<RichInvite>>
[src]
Retrieves the active invites for the guild.
Note: Requires the Manage Guild permission.
Errors
If the cache
is enabled, returns a ModelError::InvalidPermissions
if the current user does not have permission to perform bans.
fn is_large(&self) -> bool
[src]
Checks if the guild is 'large'. A guild is considered large if it has more than 250 members.
fn kick<U: Into<UserId>>(&self, user_id: U) -> Result<()>
[src]
Kicks a Member
from the guild.
Requires the Kick Members permission.
fn leave(&self) -> Result<()>
[src]
Leaves the guild.
fn member<U: Into<UserId>>(&self, user_id: U) -> Result<Member>
[src]
Gets a user's Member
for the guild by Id.
fn members<U>(
&self,
limit: Option<u64>,
after: Option<U>
) -> Result<Vec<Member>> where
U: Into<UserId>,
[src]
&self,
limit: Option<u64>,
after: Option<U>
) -> Result<Vec<Member>> where
U: Into<UserId>,
Gets a list of the guild's members.
Optionally pass in the limit
to limit the number of results. Maximum
value is 1000. Optionally pass in after
to offset the results by a
User
's Id.
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.
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"
- nickname: "zeyla" or "zeylas#nick"
fn move_member<C, U>(&self, user_id: U, channel_id: C) -> Result<()> where
C: Into<ChannelId>,
U: Into<UserId>,
[src]
C: Into<ChannelId>,
U: Into<UserId>,
Moves a member to a specific voice channel.
Requires the Move Members permission.
fn permissions_for<C, U>(&self, channel_id: C, user_id: U) -> Permissions where
C: Into<ChannelId>,
U: Into<UserId>,
[src]
C: Into<ChannelId>,
U: Into<UserId>,
Calculate a User
's permissions in a given channel in the guild.
fn prune_count(&self, days: u16) -> Result<GuildPrune>
[src]
Retrieves the count of the number of Member
s 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 perform bans.
[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
.
fn splash_url(&self) -> Option<String>
[src]
Returns the formatted URL of the guild's splash image, if one exists.
fn start_integration_sync<I: Into<IntegrationId>>(
&self,
integration_id: I
) -> Result<()>
[src]
&self,
integration_id: I
) -> Result<()>
Starts an integration sync for the given integration Id.
Requires the Manage Guild permission.
fn start_prune(&self, days: u16) -> Result<GuildPrune>
[src]
Starts a prune of Member
s.
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 perform bans.
fn unban<U: Into<UserId>>(&self, user_id: U) -> 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.
fn webhooks(&self) -> Result<Vec<Webhook>>
[src]
Retrieves the guild's webhooks.
Note: Requires the Manage Webhooks permission.
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::*; use serenity::prelude::*; struct Handler; use serenity::CACHE; impl EventHandler for Handler { fn on_message(&self, _: Context, msg: Message) { if let Some(arc) = msg.guild_id().unwrap().find() { if let Some(role) = arc.read().unwrap().role_by_name("role_name") { println!("{:?}", role); } } } } let mut client = Client::new("token", Handler); client.start().unwrap();
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]
impl<'de> Deserialize<'de> for Guild
[src]
fn deserialize<D: Deserializer<'de>>(
deserializer: D
) -> StdResult<Self, D::Error>
[src]
deserializer: D
) -> StdResult<Self, D::Error>
Deserialize this value from the given Serde deserializer. Read more