1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
use serde_json::builder::ObjectBuilder;
use serde_json::Value;
use std::default::Default;
/// A builder to create a [`RichInvite`] for use via [`Context::create_invite`].
///
/// This is a structured and cleaner way of creating an invite, as all
/// parameters are optional.
///
/// # Examples
///
/// Create an invite with a max age of 3600 seconds and 10 max uses:
///
/// ```rust,ignore
/// use serenity::Client;
/// use std::env;
///
/// let mut client = Client::login_bot(&env::var("DISCORD_BOT_TOKEN").unwrap());
///
/// client.on_message(|context, message| {
/// if message.content == "!invite" {
/// let invite = context.create_invite(message.channel_id, |i| i
/// .max_age(3600)
/// .max_uses(10));
/// }
/// });
/// ```
///
/// [`Context::create_invite`]: ../client/struct.Context.html#method.create_invite
/// [`RichInvite`]: ../model/struct.Invite.html
pub struct CreateInvite(pub ObjectBuilder);
impl CreateInvite {
/// The duration that the invite will be valid for.
///
/// Set to `0` for an invite which does not expire after an amount of time.
///
/// Defaults to `86400`, or 24 hours.
pub fn max_age(self, max_age: u64) -> Self {
CreateInvite(self.0.insert("max_age", max_age))
}
/// The number of uses that the invite will be valid for.
///
/// Set to `0` for an invite which does not expire after a number of uses.
///
/// Defaults to `0`.
pub fn max_uses(self, max_uses: u64) -> Self {
CreateInvite(self.0.insert("max_uses", max_uses))
}
/// Whether an invite grants a temporary membership.
///
/// Defaults to `false`.
pub fn temporary(self, temporary: bool) -> Self {
CreateInvite(self.0.insert("temporary", temporary))
}
/// Whether or not to try to reuse a similar invite.
///
/// Defaults to `false`.
pub fn unique(self, unique: bool) -> Self {
CreateInvite(self.0.insert("unique", unique))
}
}
impl Default for CreateInvite {
/// Creates a builder with default values, setting `validate` to `null`.
fn default() -> CreateInvite {
CreateInvite(ObjectBuilder::new().insert("validate", Value::Null))
}
}
|