WebhooksCache

Struct WebhooksCache 

Source
pub struct WebhooksCache(/* private fields */);
Expand description

Cache to hold webhooks, keyed by channel IDs for general usage

Implementations§

Source§

impl WebhooksCache

Source

pub fn new() -> Self

Creates a new webhook cache

§Invalidation warning

Refer to the docs for WebhooksCache::update to avoid invalidation

Source

pub async fn get_infallible( &self, http: &Client, channel_id: Id<ChannelMarker>, name: &str, ) -> Result<Ref<'_, Id<ChannelMarker>, Webhook>, Error>

Convenience function to get from the cache, requesting it from the API if it doesn’t exist, creating it if it’s also not returned

§Required permissions

Make sure the bot has MANAGE_WEBHOOKS permission in the given channel

§Errors

Returns an Error::Http or Error::Deserialize if the webhook isn’t in the cache

§Panics

If the webhook that was just inserted to the cache somehow doesn’t exist

Source

pub async fn create( &self, create_webhook: CreateWebhook<'_>, ) -> Result<(), Error>

Creates the passed webhook and caches it, it takes a CreateWebhook instead of a Webhook to reduce boilerplate and avoid clones

§Errors

Returns Error::Http or Error::Deserialize

Source

pub fn get( &self, channel_id: Id<ChannelMarker>, ) -> Option<Ref<'_, Id<ChannelMarker>, Webhook>>

Returns the webhook for the given channel_id, if it exists

Source

pub async fn update( &self, event: &Event, http: &Client, permissions: PermissionsSource<'_>, ) -> Result<(), Error>

Removes the cached webhooks for the given event’s channel or guild

Unless the event is WebhookUpdate, this function isn’t actually async, http and permissions aren’t used, and it isn’t fallible

http is required because Discord doesn’t send info about updated webhooks in the event

permissions is required because the bot needs MANAGE_WEBHOOKS permissions to request webhooks

§Invalidation warning

You should run this on ChannelDelete, GuildDelete and WebhookUpdate events to make sure deleted webhooks are removed from the cache, or else executing a cached webhook will return Unknown Webhook errors

§Errors

Returns Error::Http, Error::Deserialize, or when [PermissionsSource::Cache] is passed, Error::CachePermissions

Trait Implementations§

Source§

impl Debug for WebhooksCache

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for WebhooksCache

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

fn in_current_span(self) -> Instrumented<Self>

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

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more