1mod private {
2 use crate::request::{
3 GetCurrentAuthorizationInformation, GetGateway, GetGatewayAuthed, GetUserApplicationInfo,
4 GetVoiceRegions,
5 application::{
6 command::{
7 CreateGlobalCommand, CreateGuildCommand, DeleteGlobalCommand, DeleteGuildCommand,
8 GetCommandPermissions, GetGlobalCommand, GetGlobalCommands, GetGuildCommand,
9 GetGuildCommandPermissions, GetGuildCommands, SetGlobalCommands, SetGuildCommands,
10 UpdateCommandPermissions, UpdateGlobalCommand, UpdateGuildCommand,
11 create_global_command::{
12 CreateGlobalChatInputCommand, CreateGlobalMessageCommand,
13 CreateGlobalUserCommand,
14 },
15 create_guild_command::{
16 CreateGuildChatInputCommand, CreateGuildMessageCommand, CreateGuildUserCommand,
17 },
18 },
19 emoji::{
20 AddApplicationEmoji, DeleteApplicationEmoji, ListApplicationEmojis,
21 UpdateApplicationEmoji,
22 },
23 interaction::{
24 CreateFollowup, CreateResponse, CreateResponseWithResponse, DeleteFollowup,
25 DeleteResponse, GetFollowup, GetResponse, UpdateFollowup, UpdateResponse,
26 },
27 monetization::{
28 ConsumeEntitlement, DeleteTestEntitlement, GetEntitlement, GetSKUSubscription,
29 GetSKUSubscriptions, GetSKUs, create_test_entitlement::CreateTestEntitlement,
30 get_entitlements::GetEntitlements,
31 },
32 },
33 channel::{
34 CreatePin, CreateTypingTrigger, DeleteChannel, DeleteChannelPermission,
35 DeleteChannelPermissionConfigured, DeletePin, FollowNewsChannel, GetChannel, GetPins,
36 UpdateChannel, UpdateChannelPermission,
37 invite::{CreateInvite, DeleteInvite, GetChannelInvites, GetInvite},
38 message::{
39 CreateMessage, CrosspostMessage, DeleteMessage, DeleteMessages, GetChannelMessages,
40 GetChannelMessagesConfigured, GetMessage, UpdateMessage,
41 },
42 reaction::{
43 CreateReaction, DeleteAllReaction, DeleteAllReactions, DeleteReaction, GetReactions,
44 },
45 stage::{
46 CreateStageInstance, DeleteStageInstance, GetStageInstance, UpdateStageInstance,
47 },
48 thread::{
49 AddThreadMember, CreateThread, CreateThreadFromMessage,
50 GetJoinedPrivateArchivedThreads, GetPrivateArchivedThreads,
51 GetPublicArchivedThreads, GetThreadMember, GetThreadMembers, JoinThread,
52 LeaveThread, RemoveThreadMember, UpdateThread,
53 create_forum_thread::CreateForumThreadMessage,
54 },
55 webhook::{
56 CreateWebhook, DeleteWebhook, DeleteWebhookMessage, ExecuteWebhook,
57 ExecuteWebhookAndWait, GetChannelWebhooks, GetWebhook, GetWebhookMessage,
58 UpdateWebhook, UpdateWebhookMessage, UpdateWebhookWithToken,
59 },
60 },
61 guild::{
62 CreateGuildChannel, CreateGuildPrune, DeleteGuild, GetActiveThreads, GetAuditLog,
63 GetGuild, GetGuildChannels, GetGuildInvites, GetGuildOnboarding, GetGuildPreview,
64 GetGuildPruneCount, GetGuildVanityUrl, GetGuildVoiceRegions, GetGuildWebhooks,
65 GetGuildWelcomeScreen, GetGuildWidget, GetGuildWidgetSettings, UpdateCurrentMember,
66 UpdateGuild, UpdateGuildChannelPositions, UpdateGuildMfa, UpdateGuildWelcomeScreen,
67 UpdateGuildWidgetSettings,
68 auto_moderation::{
69 CreateAutoModerationRule, DeleteAutoModerationRule, GetAutoModerationRule,
70 GetGuildAutoModerationRules, UpdateAutoModerationRule,
71 },
72 ban::{BulkGuildBan, CreateBan, DeleteBan, GetBan, GetBans},
73 emoji::{CreateEmoji, DeleteEmoji, GetEmoji, GetEmojis, UpdateEmoji},
74 integration::{DeleteGuildIntegration, GetGuildIntegrations},
75 member::{
76 AddGuildMember, AddRoleToMember, GetGuildMembers, GetMember, RemoveMember,
77 RemoveRoleFromMember, SearchGuildMembers, UpdateGuildMember,
78 },
79 role::{
80 CreateRole, DeleteRole, GetGuildRoleMemberCounts, GetGuildRoles, GetRole,
81 UpdateRole, UpdateRolePositions,
82 },
83 sticker::{
84 CreateGuildSticker, DeleteGuildSticker, GetGuildSticker, GetGuildStickers,
85 UpdateGuildSticker,
86 },
87 update_guild_onboarding::UpdateGuildOnboarding,
88 user::{
89 GetCurrentUserVoiceState, GetUserVoiceState, UpdateCurrentUserVoiceState,
90 UpdateUserVoiceState,
91 },
92 },
93 poll::{EndPoll, GetAnswerVoters},
94 scheduled_event::{
95 CreateGuildExternalScheduledEvent, CreateGuildStageInstanceScheduledEvent,
96 CreateGuildVoiceScheduledEvent, DeleteGuildScheduledEvent, GetGuildScheduledEvent,
97 GetGuildScheduledEventUsers, GetGuildScheduledEvents, UpdateGuildScheduledEvent,
98 },
99 sticker::{GetNitroStickerPacks, GetSticker, GetStickerPack},
100 template::{
101 CreateGuildFromTemplate, CreateTemplate, DeleteTemplate, GetTemplate, GetTemplates,
102 SyncTemplate, UpdateTemplate,
103 },
104 update_user_application::UpdateCurrentUserApplication,
105 user::{
106 CreatePrivateChannel, GetCurrentUser, GetCurrentUserConnections,
107 GetCurrentUserGuildMember, GetCurrentUserGuilds, GetUser, LeaveGuild,
108 UpdateCurrentUser,
109 },
110 };
111
112 pub trait Sealed {}
113
114 impl Sealed for AddApplicationEmoji<'_> {}
115 impl Sealed for AddGuildMember<'_> {}
116 impl Sealed for AddRoleToMember<'_> {}
117 impl Sealed for AddThreadMember<'_> {}
118 impl Sealed for BulkGuildBan<'_> {}
119 impl Sealed for ConsumeEntitlement<'_> {}
120 impl Sealed for CreateAutoModerationRule<'_> {}
121 impl Sealed for CreateBan<'_> {}
122 impl Sealed for CreateEmoji<'_> {}
123 impl Sealed for CreateFollowup<'_> {}
124 impl Sealed for CreateForumThreadMessage<'_> {}
125 impl Sealed for CreateGlobalChatInputCommand<'_> {}
126 impl Sealed for CreateGlobalCommand<'_> {}
127 impl Sealed for CreateGlobalMessageCommand<'_> {}
128 impl Sealed for CreateGlobalUserCommand<'_> {}
129 impl Sealed for CreateGuildChannel<'_> {}
130 impl Sealed for CreateGuildChatInputCommand<'_> {}
131 impl Sealed for CreateGuildCommand<'_> {}
132 impl Sealed for CreateGuildExternalScheduledEvent<'_> {}
133 impl Sealed for CreateGuildFromTemplate<'_> {}
134 impl Sealed for CreateGuildMessageCommand<'_> {}
135 impl Sealed for CreateGuildPrune<'_> {}
136 impl Sealed for CreateGuildStageInstanceScheduledEvent<'_> {}
137 impl Sealed for CreateGuildSticker<'_> {}
138 impl Sealed for CreateGuildUserCommand<'_> {}
139 impl Sealed for CreateGuildVoiceScheduledEvent<'_> {}
140 impl Sealed for CreateInvite<'_> {}
141 impl Sealed for CreateMessage<'_> {}
142 impl Sealed for CreatePin<'_> {}
143 impl Sealed for CreatePrivateChannel<'_> {}
144 impl Sealed for CreateReaction<'_> {}
145 impl Sealed for CreateResponse<'_> {}
146 impl Sealed for CreateResponseWithResponse<'_> {}
147 impl Sealed for CreateRole<'_> {}
148 impl Sealed for CreateStageInstance<'_> {}
149 impl Sealed for CreateTemplate<'_> {}
150 impl Sealed for CreateTestEntitlement<'_> {}
151 impl Sealed for CreateThread<'_> {}
152 impl Sealed for CreateThreadFromMessage<'_> {}
153 impl Sealed for CreateTypingTrigger<'_> {}
154 impl Sealed for CreateWebhook<'_> {}
155 impl Sealed for CrosspostMessage<'_> {}
156 impl Sealed for DeleteAllReaction<'_> {}
157 impl Sealed for DeleteAllReactions<'_> {}
158 impl Sealed for DeleteAutoModerationRule<'_> {}
159 impl Sealed for DeleteBan<'_> {}
160 impl Sealed for DeleteChannel<'_> {}
161 impl Sealed for DeleteChannelPermission<'_> {}
162 impl Sealed for DeleteChannelPermissionConfigured<'_> {}
163 impl Sealed for DeleteEmoji<'_> {}
164 impl Sealed for DeleteFollowup<'_> {}
165 impl Sealed for DeleteGlobalCommand<'_> {}
166 impl Sealed for DeleteGuild<'_> {}
167 impl Sealed for DeleteGuildCommand<'_> {}
168 impl Sealed for DeleteGuildIntegration<'_> {}
169 impl Sealed for DeleteGuildScheduledEvent<'_> {}
170 impl Sealed for DeleteGuildSticker<'_> {}
171 impl Sealed for DeleteInvite<'_> {}
172 impl Sealed for DeleteMessage<'_> {}
173 impl Sealed for DeleteMessages<'_> {}
174 impl Sealed for DeletePin<'_> {}
175 impl Sealed for DeleteReaction<'_> {}
176 impl Sealed for DeleteResponse<'_> {}
177 impl Sealed for DeleteRole<'_> {}
178 impl Sealed for DeleteStageInstance<'_> {}
179 impl Sealed for DeleteTemplate<'_> {}
180 impl Sealed for DeleteWebhook<'_> {}
181 impl Sealed for DeleteWebhookMessage<'_> {}
182 impl Sealed for DeleteTestEntitlement<'_> {}
183 impl Sealed for DeleteApplicationEmoji<'_> {}
184 impl Sealed for UpdateApplicationEmoji<'_> {}
185 impl Sealed for EndPoll<'_> {}
186 impl Sealed for ExecuteWebhook<'_> {}
187 impl Sealed for ExecuteWebhookAndWait<'_> {}
188 impl Sealed for FollowNewsChannel<'_> {}
189 impl Sealed for GetActiveThreads<'_> {}
190 impl Sealed for ListApplicationEmojis<'_> {}
191 impl Sealed for GetAnswerVoters<'_> {}
192 impl Sealed for GetAuditLog<'_> {}
193 impl Sealed for GetAutoModerationRule<'_> {}
194 impl Sealed for GetBan<'_> {}
195 impl Sealed for GetBans<'_> {}
196 impl Sealed for GetChannel<'_> {}
197 impl Sealed for GetChannelInvites<'_> {}
198 impl Sealed for GetChannelMessages<'_> {}
199 impl Sealed for GetChannelMessagesConfigured<'_> {}
200 impl Sealed for GetChannelWebhooks<'_> {}
201 impl Sealed for GetCommandPermissions<'_> {}
202 impl Sealed for GetCurrentUser<'_> {}
203 impl Sealed for GetCurrentAuthorizationInformation<'_> {}
204 impl Sealed for GetCurrentUserConnections<'_> {}
205 impl Sealed for GetCurrentUserGuildMember<'_> {}
206 impl Sealed for GetCurrentUserGuilds<'_> {}
207 impl Sealed for GetCurrentUserVoiceState<'_> {}
208 impl Sealed for GetEmoji<'_> {}
209 impl Sealed for GetEmojis<'_> {}
210 impl Sealed for GetEntitlements<'_> {}
211 impl Sealed for GetEntitlement<'_> {}
212 impl Sealed for GetFollowup<'_> {}
213 impl Sealed for GetGateway<'_> {}
214 impl Sealed for GetGatewayAuthed<'_> {}
215 impl Sealed for GetGlobalCommand<'_> {}
216 impl Sealed for GetGlobalCommands<'_> {}
217 impl Sealed for GetGuild<'_> {}
218 impl Sealed for GetGuildAutoModerationRules<'_> {}
219 impl Sealed for GetGuildChannels<'_> {}
220 impl Sealed for GetGuildCommand<'_> {}
221 impl Sealed for GetGuildCommandPermissions<'_> {}
222 impl Sealed for GetGuildCommands<'_> {}
223 impl Sealed for GetGuildIntegrations<'_> {}
224 impl Sealed for GetGuildInvites<'_> {}
225 impl Sealed for GetGuildMembers<'_> {}
226 impl Sealed for GetGuildOnboarding<'_> {}
227 impl Sealed for GetGuildPreview<'_> {}
228 impl Sealed for GetGuildPruneCount<'_> {}
229 impl Sealed for GetGuildRoleMemberCounts<'_> {}
230 impl Sealed for GetGuildRoles<'_> {}
231 impl Sealed for GetGuildScheduledEvent<'_> {}
232 impl Sealed for GetGuildScheduledEventUsers<'_> {}
233 impl Sealed for GetGuildScheduledEvents<'_> {}
234 impl Sealed for GetGuildSticker<'_> {}
235 impl Sealed for GetGuildStickers<'_> {}
236 impl Sealed for GetGuildVanityUrl<'_> {}
237 impl Sealed for GetGuildVoiceRegions<'_> {}
238 impl Sealed for GetGuildWebhooks<'_> {}
239 impl Sealed for GetGuildWelcomeScreen<'_> {}
240 impl Sealed for GetGuildWidget<'_> {}
241 impl Sealed for GetGuildWidgetSettings<'_> {}
242 impl Sealed for GetInvite<'_> {}
243 impl Sealed for GetJoinedPrivateArchivedThreads<'_> {}
244 impl Sealed for GetMember<'_> {}
245 impl Sealed for GetMessage<'_> {}
246 impl Sealed for GetNitroStickerPacks<'_> {}
247 impl Sealed for GetPins<'_> {}
248 impl Sealed for GetPrivateArchivedThreads<'_> {}
249 impl Sealed for GetPublicArchivedThreads<'_> {}
250 impl Sealed for GetReactions<'_> {}
251 impl Sealed for GetResponse<'_> {}
252 impl Sealed for GetRole<'_> {}
253 impl Sealed for GetSKUs<'_> {}
254 impl Sealed for GetSKUSubscriptions<'_> {}
255 impl Sealed for GetSKUSubscription<'_> {}
256 impl Sealed for GetStageInstance<'_> {}
257 impl Sealed for GetStickerPack<'_> {}
258 impl Sealed for GetSticker<'_> {}
259 impl Sealed for GetTemplate<'_> {}
260 impl Sealed for GetTemplates<'_> {}
261 impl Sealed for GetThreadMember<'_> {}
262 impl Sealed for GetThreadMembers<'_> {}
263 impl Sealed for GetUser<'_> {}
264 impl Sealed for GetUserApplicationInfo<'_> {}
265 impl Sealed for GetUserVoiceState<'_> {}
266 impl Sealed for GetVoiceRegions<'_> {}
267 impl Sealed for GetWebhook<'_> {}
268 impl Sealed for GetWebhookMessage<'_> {}
269 impl Sealed for JoinThread<'_> {}
270 impl Sealed for LeaveGuild<'_> {}
271 impl Sealed for LeaveThread<'_> {}
272 impl Sealed for RemoveMember<'_> {}
273 impl Sealed for RemoveRoleFromMember<'_> {}
274 impl Sealed for RemoveThreadMember<'_> {}
275 impl Sealed for SearchGuildMembers<'_> {}
276 impl Sealed for SetGlobalCommands<'_> {}
277 impl Sealed for SetGuildCommands<'_> {}
278 impl Sealed for SyncTemplate<'_> {}
279 impl Sealed for UpdateAutoModerationRule<'_> {}
280 impl Sealed for UpdateChannel<'_> {}
281 impl Sealed for UpdateChannelPermission<'_> {}
282 impl Sealed for UpdateCommandPermissions<'_> {}
283 impl Sealed for UpdateCurrentMember<'_> {}
284 impl Sealed for UpdateCurrentUser<'_> {}
285 impl Sealed for UpdateCurrentUserVoiceState<'_> {}
286 impl Sealed for UpdateEmoji<'_> {}
287 impl Sealed for UpdateFollowup<'_> {}
288 impl Sealed for UpdateGlobalCommand<'_> {}
289 impl Sealed for UpdateGuild<'_> {}
290 impl Sealed for UpdateGuildChannelPositions<'_> {}
291 impl Sealed for UpdateGuildCommand<'_> {}
292 impl Sealed for UpdateGuildMember<'_> {}
293 impl Sealed for UpdateGuildMfa<'_> {}
294 impl Sealed for UpdateGuildOnboarding<'_> {}
295 impl Sealed for UpdateGuildScheduledEvent<'_> {}
296 impl Sealed for UpdateGuildSticker<'_> {}
297 impl Sealed for UpdateGuildWelcomeScreen<'_> {}
298 impl Sealed for UpdateGuildWidgetSettings<'_> {}
299 impl Sealed for UpdateMessage<'_> {}
300 impl Sealed for UpdateResponse<'_> {}
301 impl Sealed for UpdateRole<'_> {}
302 impl Sealed for UpdateRolePositions<'_> {}
303 impl Sealed for UpdateStageInstance<'_> {}
304 impl Sealed for UpdateTemplate<'_> {}
305 impl Sealed for UpdateThread<'_> {}
306 impl Sealed for UpdateUserVoiceState<'_> {}
307 impl Sealed for UpdateWebhook<'_> {}
308 impl Sealed for UpdateWebhookMessage<'_> {}
309 impl Sealed for UpdateWebhookWithToken<'_> {}
310 impl Sealed for UpdateCurrentUserApplication<'_> {}
311}
312
313use super::base::Request;
314use crate::error::Error;
315
316pub trait TryIntoRequest: private::Sealed {
359 fn try_into_request(self) -> Result<Request, Error>;
376}
377
378#[cfg(test)]
379mod tests {
380 use super::TryIntoRequest;
381 use crate::{client::Client, request::Method};
382 use static_assertions::assert_obj_safe;
383 use std::error::Error;
384 use twilight_model::id::Id;
385
386 assert_obj_safe!(TryIntoRequest);
387
388 #[test]
389 fn conversion() -> Result<(), Box<dyn Error>> {
390 let client = Client::new("token".to_owned());
391 let channel_id = Id::new(1);
392 let request = client
393 .create_message(channel_id)
394 .content("test")
395 .try_into_request()?;
396
397 assert_eq!(Some(br#"{"content":"test"}"#.as_ref()), request.body());
398 assert!(request.form().is_none());
399 assert_eq!(Method::Post, request.method());
400
401 Ok(())
402 }
403}