[−][src]Struct serenity::model::channel::GuildChannel
Represents a guild's text or voice channel. Some methods are available only for voice channels and some are only available for text channels.
Fields
id: ChannelId
The unique Id of the channel.
The default channel Id shares the Id of the guild and the default role.
bitrate: Option<u64>
The bitrate of the channel.
Note: This is only available for voice channels.
category_id: Option<ChannelId>
Whether this guild channel belongs in a category.
guild_id: GuildId
The Id of the guild the channel is located in.
If this matches with the id
, then this is the default text channel.
The original voice channel has an Id equal to the guild's Id, incremented by one.
kind: ChannelType
The type of the channel.
last_message_id: Option<MessageId>
The Id of the last message sent in the channel.
Note: This is only available for text channels.
last_pin_timestamp: Option<DateTime<FixedOffset>>
The timestamp of the time a pin was most recently made.
Note: This is only available for text channels.
name: String
The name of the channel.
permission_overwrites: Vec<PermissionOverwrite>
position: i64
The position of the channel.
The default text channel will almost always have a position of -1
or
0
.
topic: Option<String>
The topic of the channel.
Note: This is only available for text channels.
user_limit: Option<u64>
The maximum number of members allowed in the channel.
Note: This is only available for voice channels.
nsfw: bool
Used to tell if the channel is not safe for work.
Note however, it's recommended to use is_nsfw
as it's gonna be more accurate.
Methods
impl GuildChannel
[src]
impl GuildChannel
pub fn broadcast_typing(&self) -> Result<()>
[src]
pub fn broadcast_typing(&self) -> Result<()>
Broadcasts to the channel that the current user is typing.
For bots, this is a good indicator for long-running commands.
Note: Requires the Send Messages permission.
Errors
Returns a ModelError::InvalidPermissions
if the current user does
not have the required permissions.
pub fn create_invite<F>(&self, f: F) -> Result<RichInvite> where
F: FnOnce(CreateInvite) -> CreateInvite,
[src]
pub fn create_invite<F>(&self, f: F) -> Result<RichInvite> where
F: FnOnce(CreateInvite) -> CreateInvite,
Creates an invite leading to the given channel.
Examples
Create an invite that can only be used 5 times:
let invite = channel.create_invite(|i| i.max_uses(5));
pub fn create_permission(&self, target: &PermissionOverwrite) -> Result<()>
[src]
pub fn create_permission(&self, target: &PermissionOverwrite) -> Result<()>
Creates a permission overwrite for either a
single Member
or Role
within a Channel
.
Refer to the documentation for PermissionOverwrite
s for more
information.
Requires the Manage Channels permission.
Examples
Creating a permission overwrite for a member by specifying the
PermissionOverwrite::Member
variant, allowing it the Send Messages
permission, but denying the Send TTS Messages and Attach Files
permissions:
use serenity::model::channel::{ PermissionOverwrite, PermissionOverwriteType, }; use serenity::model::{ModelError, Permissions}; use serenity::CACHE; let allow = Permissions::SEND_MESSAGES; let deny = Permissions::SEND_TTS_MESSAGES | Permissions::ATTACH_FILES; let overwrite = PermissionOverwrite { allow: allow, deny: deny, kind: PermissionOverwriteType::Member(user_id), }; let cache = CACHE.read(); let channel = cache .guild_channel(channel_id) .ok_or(ModelError::ItemMissing)?; channel.read().create_permission(&overwrite)?;
Creating a permission overwrite for a role by specifying the
PermissionOverwrite::Role
variant, allowing it the Manage Webhooks
permission, but denying the Send TTS Messages and Attach Files
permissions:
use serenity::model::channel::{ PermissionOverwrite, PermissionOverwriteType, }; use serenity::model::{ModelError, Permissions}; use serenity::CACHE; let allow = Permissions::SEND_MESSAGES; let deny = Permissions::SEND_TTS_MESSAGES | Permissions::ATTACH_FILES; let overwrite = PermissionOverwrite { allow: allow, deny: deny, kind: PermissionOverwriteType::Member(user_id), }; let cache = CACHE.read(); let channel = cache .guild_channel(channel_id) .ok_or(ModelError::ItemMissing)?; channel.read().create_permission(&overwrite)?;
pub fn delete(&self) -> Result<Channel>
[src]
pub fn delete(&self) -> Result<Channel>
Deletes this channel, returning the channel on a successful deletion.
pub fn delete_messages<T: AsRef<MessageId>, It: IntoIterator<Item = T>>(
&self,
message_ids: It
) -> Result<()>
[src]
pub fn delete_messages<T: AsRef<MessageId>, It: IntoIterator<Item = T>>(
&self,
message_ids: It
) -> Result<()>
Deletes all messages by Ids from the given vector in the channel.
Refer to Channel::delete_messages
for more information.
Requires the Manage Messages permission.
Note: Messages that are older than 2 weeks can't be deleted using this method.
Errors
Returns ModelError::BulkDeleteAmount
if an attempt was made to
delete either 0 or more than 100 messages.
pub fn delete_permission(
&self,
permission_type: PermissionOverwriteType
) -> Result<()>
[src]
pub fn delete_permission(
&self,
permission_type: PermissionOverwriteType
) -> Result<()>
Deletes all permission overrides in the channel from a member or role.
Note: Requires the Manage Channel permission.
pub fn delete_reaction<M, R>(
&self,
message_id: M,
user_id: Option<UserId>,
reaction_type: R
) -> Result<()> where
M: Into<MessageId>,
R: Into<ReactionType>,
[src]
pub fn delete_reaction<M, R>(
&self,
message_id: M,
user_id: Option<UserId>,
reaction_type: R
) -> Result<()> where
M: Into<MessageId>,
R: Into<ReactionType>,
Deletes the given Reaction
from the channel.
Note: Requires the Manage Messages permission, if the current user did not perform the reaction.
pub fn edit<F>(&mut self, f: F) -> Result<()> where
F: FnOnce(EditChannel) -> EditChannel,
[src]
pub fn edit<F>(&mut self, f: F) -> Result<()> where
F: FnOnce(EditChannel) -> EditChannel,
Modifies a channel's settings, such as its position or name.
Refer to EditChannel
s documentation for a full list of methods.
Examples
Change a voice channels name and bitrate:
channel.edit(|c| c.name("test").bitrate(86400));
pub fn edit_message<F, M>(&self, message_id: M, f: F) -> Result<Message> where
F: FnOnce(EditMessage) -> EditMessage,
M: Into<MessageId>,
[src]
pub fn edit_message<F, M>(&self, message_id: M, f: F) -> Result<Message> where
F: FnOnce(EditMessage) -> EditMessage,
M: Into<MessageId>,
Edits a Message
in the channel given its Id.
Message editing preserves all unchanged message data.
Refer to the documentation for EditMessage
for more information
regarding message restrictions and requirements.
Note: Requires that the current user be the author of the message.
Errors
Returns a ModelError::MessageTooLong
if the content of the message
is over the the limit
, containing the number of unicode code points
over the limit.
pub fn guild(&self) -> Option<Arc<RwLock<Guild>>>
[src]
pub fn guild(&self) -> Option<Arc<RwLock<Guild>>>
Attempts to find this channel's guild in the Cache.
Note: Right now this performs a clone of the guild. This will be optimized in the future.
pub fn invites(&self) -> Result<Vec<RichInvite>>
[src]
pub fn invites(&self) -> Result<Vec<RichInvite>>
Gets all of the channel's invites.
Requires the [Manage Channels] permission. [Manage Channels]: ../permissions/struct.Permissions.html#associatedconstant.MANAGE_CHANNELS
pub fn is_nsfw(&self) -> bool
[src]
pub fn is_nsfw(&self) -> bool
Determines if the channel is NSFW.
Only text channels are taken into consideration as being NSFW. voice channels are never NSFW.
pub fn message<M: Into<MessageId>>(&self, message_id: M) -> Result<Message>
[src]
pub fn message<M: Into<MessageId>>(&self, message_id: M) -> Result<Message>
Gets a message from the channel.
Requires the Read Message History permission.
pub fn messages<F>(&self, f: F) -> Result<Vec<Message>> where
F: FnOnce(GetMessages) -> GetMessages,
[src]
pub fn messages<F>(&self, f: F) -> Result<Vec<Message>> where
F: FnOnce(GetMessages) -> GetMessages,
Gets messages from the channel.
Refer to Channel::messages
for more information.
Requires the Read Message History permission.
pub fn name(&self) -> &str
[src]
pub fn name(&self) -> &str
Returns the name of the guild channel.
pub fn permissions_for<U: Into<UserId>>(
&self,
user_id: U
) -> Result<Permissions>
[src]
pub fn permissions_for<U: Into<UserId>>(
&self,
user_id: U
) -> Result<Permissions>
Calculates the permissions of a member.
The Id of the argument must be a Member
of the Guild
that the
channel is in.
Examples
Calculate the permissions of a User
who posted a Message
in a
channel:
use serenity::prelude::*; use serenity::model::prelude::*; struct Handler; use serenity::CACHE; impl EventHandler for Handler { fn message(&self, _: Context, msg: Message) { let channel = match CACHE.read().guild_channel(msg.channel_id) { Some(channel) => channel, None => return, }; let permissions = channel.read().permissions_for(&msg.author).unwrap(); println!("The user's permissions: {:?}", permissions); } } let mut client = Client::new("token", Handler).unwrap(); client.start().unwrap();
Check if the current user has the Attach Files and Send Messages permissions (note: serenity will automatically check this for; this is for demonstrative purposes):
use serenity::CACHE; use serenity::prelude::*; use serenity::model::prelude::*; use std::fs::File; struct Handler; impl EventHandler for Handler { fn message(&self, _: Context, msg: Message) { let channel = match CACHE.read().guild_channel(msg.channel_id) { Some(channel) => channel, None => return, }; let current_user_id = CACHE.read().user.id; let permissions = channel.read().permissions_for(current_user_id).unwrap(); if !permissions.contains(Permissions::ATTACH_FILES | Permissions::SEND_MESSAGES) { return; } let file = match File::open("./cat.png") { Ok(file) => file, Err(why) => { println!("Err opening file: {:?}", why); return; }, }; let _ = msg.channel_id.send_files(vec![(&file, "cat.png")], |m| m.content("here's a cat")); } } let mut client = Client::new("token", Handler).unwrap(); client.start().unwrap();
Errors
Returns a ModelError::GuildNotFound
if the channel's guild could
not be found in the Cache
.
pub fn pin<M: Into<MessageId>>(&self, message_id: M) -> Result<()>
[src]
pub fn pin<M: Into<MessageId>>(&self, message_id: M) -> Result<()>
Pins a Message
to the channel.
pub fn pins(&self) -> Result<Vec<Message>>
[src]
pub fn pins(&self) -> Result<Vec<Message>>
Gets all channel's pins.
pub fn reaction_users<M, R, U>(
&self,
message_id: M,
reaction_type: R,
limit: Option<u8>,
after: U
) -> Result<Vec<User>> where
M: Into<MessageId>,
R: Into<ReactionType>,
U: Into<Option<UserId>>,
[src]
pub fn reaction_users<M, R, U>(
&self,
message_id: M,
reaction_type: R,
limit: Option<u8>,
after: U
) -> Result<Vec<User>> where
M: Into<MessageId>,
R: Into<ReactionType>,
U: Into<Option<UserId>>,
Gets the list of User
s who have reacted to a Message
with a
certain Emoji
.
Refer to Channel::reaction_users
for more information.
Note: Requires the Read Message History permission.
pub fn say(&self, content: &str) -> Result<Message>
[src]
pub fn say(&self, content: &str) -> Result<Message>
Sends a message with just the given message content in the channel.
Errors
Returns a ModelError::MessageTooLong
if the content of the message
is over the above limit, containing the number of unicode code points
over the limit.
pub fn send_files<'a, F, T, It: IntoIterator<Item = T>>(
&self,
files: It,
f: F
) -> Result<Message> where
F: FnOnce(CreateMessage) -> CreateMessage,
T: Into<AttachmentType<'a>>,
[src]
pub fn send_files<'a, F, T, It: IntoIterator<Item = T>>(
&self,
files: It,
f: F
) -> Result<Message> where
F: FnOnce(CreateMessage) -> CreateMessage,
T: Into<AttachmentType<'a>>,
Sends (a) file(s) along with optional message contents.
Refer to ChannelId::send_files
for examples and more information.
The Attach Files and Send Messages permissions are required.
Note: Message contents must be under 2000 unicode code points.
Errors
If the content of the message is over the above limit, then a
ClientError::MessageTooLong
will be returned, containing the number
of unicode code points over the limit.
pub fn send_message<F: FnOnce(CreateMessage) -> CreateMessage>(
&self,
f: F
) -> Result<Message>
[src]
pub fn send_message<F: FnOnce(CreateMessage) -> CreateMessage>(
&self,
f: F
) -> Result<Message>
Sends a message to the channel with the given content.
Note: This will only work when a Message
is received.
Note: Requires the Send Messages permission.
Errors
Returns a ModelError::MessageTooLong
if the content of the message
is over the above limit, containing the number of unicode code points
over the limit.
Returns a ModelError::InvalidPermissions
if the current user does
not have the required permissions.
pub fn unpin<M: Into<MessageId>>(&self, message_id: M) -> Result<()>
[src]
pub fn unpin<M: Into<MessageId>>(&self, message_id: M) -> Result<()>
Unpins a Message
in the channel given by its Id.
Requires the Manage Messages permission.
pub fn webhooks(&self) -> Result<Vec<Webhook>>
[src]
pub fn webhooks(&self) -> Result<Vec<Webhook>>
Retrieves the channel's webhooks.
Note: Requires the Manage Webhooks permission.
Trait Implementations
impl Mentionable for GuildChannel
[src]
impl Mentionable for GuildChannel
fn mention(&self) -> String
[src]
fn mention(&self) -> String
Creates a mentionable string, that will be able to notify and/or create a link to the item. Read more
impl From<GuildChannel> for ChannelId
[src]
impl From<GuildChannel> for ChannelId
fn from(public_channel: GuildChannel) -> ChannelId
[src]
fn from(public_channel: GuildChannel) -> ChannelId
Gets the Id of a guild channel.
impl<'a> From<&'a GuildChannel> for ChannelId
[src]
impl<'a> From<&'a GuildChannel> for ChannelId
fn from(public_channel: &GuildChannel) -> ChannelId
[src]
fn from(public_channel: &GuildChannel) -> ChannelId
Gets the Id of a guild channel.
impl Clone for GuildChannel
[src]
impl Clone for GuildChannel
fn clone(&self) -> GuildChannel
[src]
fn clone(&self) -> GuildChannel
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl Debug for GuildChannel
[src]
impl Debug for GuildChannel
fn fmt(&self, f: &mut Formatter) -> Result
[src]
fn fmt(&self, f: &mut Formatter) -> Result
Formats the value using the given formatter. Read more
impl Display for GuildChannel
[src]
impl Display for GuildChannel
impl Serialize for GuildChannel
[src]
impl Serialize for GuildChannel
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
[src]
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl<'de> Deserialize<'de> for GuildChannel
[src]
impl<'de> Deserialize<'de> for GuildChannel
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations
impl Send for GuildChannel
impl Send for GuildChannel
impl Sync for GuildChannel
impl Sync for GuildChannel
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
impl<T, U> Into for T where
U: From<T>,
impl<T> ToString for T where
T: Display + ?Sized,
[src]
impl<T> ToString for T where
T: Display + ?Sized,
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
type Owned = T
fn to_owned(&self) -> T
[src]
fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
fn clone_into(&self, target: &mut T)
[src]
fn clone_into(&self, target: &mut T)
🔬 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> From for T
[src]
impl<T> From for T
impl<T, U> TryFrom for T where
T: From<U>,
[src]
impl<T, U> TryFrom for T where
T: From<U>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
try_from
)Performs the conversion.
impl<T> Borrow for T where
T: ?Sized,
[src]
impl<T> Borrow for T where
T: ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
impl<T> BorrowMut for T where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
try_from
)Performs the conversion.
impl<T> Any for T where
T: 'static + ?Sized,
[src]
impl<T> Any for T where
T: 'static + ?Sized,
fn get_type_id(&self) -> TypeId
[src]
fn get_type_id(&self) -> TypeId
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
Gets the TypeId
of self
. Read more
impl<T> DeserializeOwned for T where
T: Deserialize<'de>,
[src]
impl<T> DeserializeOwned for T where
T: Deserialize<'de>,
impl<T> Erased for T
impl<T> Erased for T
impl<T> Typeable for T where
T: Any,
impl<T> Typeable for T where
T: Any,
impl<T> DebugAny for T where
T: Any + Debug,
[src]
impl<T> DebugAny for T where
T: Any + Debug,
impl<T> CloneAny for T where
T: Clone + Any,
[src]
impl<T> CloneAny for T where
T: Clone + Any,
fn clone_any(&self) -> Box<dyn CloneAny + 'static>
[src]
fn clone_any(&self) -> Box<dyn CloneAny + 'static>
fn clone_any_send(&self) -> Box<dyn CloneAny + 'static + Send> where
T: Send,
[src]
fn clone_any_send(&self) -> Box<dyn CloneAny + 'static + Send> where
T: Send,
fn clone_any_sync(&self) -> Box<dyn CloneAny + 'static + Sync> where
T: Sync,
[src]
fn clone_any_sync(&self) -> Box<dyn CloneAny + 'static + Sync> where
T: Sync,
fn clone_any_send_sync(&self) -> Box<dyn CloneAny + 'static + Sync + Send> where
T: Send + Sync,
[src]
fn clone_any_send_sync(&self) -> Box<dyn CloneAny + 'static + Sync + Send> where
T: Send + Sync,
impl<T> UnsafeAny for T where
T: Any,
impl<T> UnsafeAny for T where
T: Any,