1#![deny(unsafe_code)]
3#![allow(clippy::struct_excessive_bools)]
4pub mod audit;
25pub mod automod;
26pub mod builder;
27pub mod cdn_tests;
28pub mod command;
29pub mod component;
30pub mod create_message;
31pub mod integration;
32pub mod intents;
33pub mod interaction;
34pub mod invite;
35pub mod json;
36pub mod member;
37pub mod monetization;
38pub mod permissions;
39pub mod reaction;
40pub mod scheduled;
41pub mod snowflake;
42pub mod soundboard;
43pub mod string;
44pub mod thread;
45pub mod ui;
46pub mod voice;
47
48pub mod channel;
50pub mod guild;
51pub mod message;
52pub mod user;
53
54pub use audit::{AuditLogChange, AuditLogEntry, AuditLogEvent, AuditLogOptions};
56pub use automod::{
57 AutoModAction, AutoModActionExecution, AutoModActionMetadata, AutoModActionType,
58 AutoModEventType, AutoModKeywordPresetType, AutoModRule, AutoModTriggerMetadata,
59 AutoModTriggerType,
60};
61pub use builder::{
62 ActionRowBuilder, AutoModRuleBuilder, ButtonBuilder, CommandBuilder, CreateChannelBuilder,
63 CreateEmojiBuilder, CreateGuildBuilder, CreateInviteBuilder, CreateRoleBuilder,
64 CreateStickerBuilder, EmbedBuilder, InteractionResponseBuilder, MessageBuilder,
65 ModifyEmojiBuilder, ModifyGuildBuilder, ModifyMemberBuilder, PollBuilder,
66 ScheduledEventBuilder, SelectMenuBuilder, StageInstanceBuilder, StartThreadBuilder,
67 WebhookExecuteBuilder,
68};
69pub use command::{ApplicationCommand, CommandOption, CommandType};
70pub use component::{ActionRow, Button, Component, ComponentType, SelectMenu};
71pub use create_message::CreateMessage;
72pub use create_message::FileUpload;
73pub use integration::{
74 GuildIntegrationsUpdateEvent, Integration, IntegrationAccount, IntegrationApplication,
75 IntegrationDeleteEvent, Webhook, WebhooksUpdateEvent,
76};
77pub use intents::Intents;
78pub use interaction::{
79 Interaction, InteractionCallbackData, InteractionCallbackType, InteractionResponse,
80 InteractionType,
81};
82pub use invite::{InviteCreateEvent, InviteDeleteEvent};
83pub use member::{Emoji, GuildMember, Role, RoleTags, Sticker};
84pub use message::{Poll, PollAnswer, PollMedia, PollResults};
85pub use monetization::{
86 Entitlement, EntitlementType, Sku, SkuType, Subscription, SubscriptionStatus,
87};
88pub use permissions::Permissions;
89pub use reaction::{
90 MessageReactionAddEvent, MessageReactionRemoveAllEvent, MessageReactionRemoveEmojiEvent,
91 MessageReactionRemoveEvent, ReactionEmoji,
92};
93pub use scheduled::{
94 ScheduledEvent, ScheduledEventEntityMetadata, ScheduledEventEntityType,
95 ScheduledEventPrivacyLevel, ScheduledEventStatus, ScheduledEventUserEvent,
96};
97pub use snowflake::Snowflake;
98pub use soundboard::{
99 GuildSoundboardSoundsUpdateEvent, SoundboardSound, SoundboardSoundDeleteEvent,
100 SoundboardSoundsUpdateEvent,
101};
102pub use string::TitanString;
103pub use thread::{
104 DefaultReaction, ForumTag, ThreadDeleteEvent, ThreadListSyncEvent, ThreadMember,
105 ThreadMemberUpdateEvent, ThreadMembersUpdateEvent, ThreadMetadata,
106};
107pub use voice::PartialVoiceState;
108pub use voice::{StageInstance, StagePrivacyLevel};
109
110pub use channel::{Channel, ChannelMention, ChannelPinsUpdateEvent, PermissionOverwrite};
112pub use guild::{
113 Application, Guild, GuildBanEvent, GuildEmojisUpdateEvent, GuildMemberAddEvent,
114 GuildMemberRemoveEvent, GuildMemberUpdateEvent, GuildMembersChunkEvent, GuildRoleDeleteEvent,
115 GuildRoleEvent, GuildStickersUpdateEvent, ReadyEventData, UnavailableGuild,
116};
117pub use message::{
118 Attachment, Embed, EmbedAuthor, EmbedField, EmbedFooter, EmbedMedia, EmbedProvider, Message,
119 MessageDeleteBulkEvent, MessageDeleteEvent, MessageReference, MessageUpdateEvent, Reaction,
120 ReactionCountDetails, StickerItem, TypingStartEvent,
121};
122pub use user::{ClientStatus, PartialUser, PresenceUpdateEvent, User};
123
124pub trait Mention {
128 fn mention(&self) -> String;
130}
131
132impl Mention for GuildMember<'_> {
133 fn mention(&self) -> String {
134 if let Some(user) = &self.user {
135 format!("<@{}>", user.id.0)
136 } else {
137 String::new() }
139 }
140}
141
142impl Mention for Role<'_> {
143 fn mention(&self) -> String {
144 format!("<@&{}>", self.id.0)
145 }
146}