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
73
74
75
76
77
78
79
80
81
82
83
|
use serde_json::Value;
use std::default::Default;
use ::internal::prelude::*;
/// 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(&env::var("DISCORD_BOT_TOKEN").unwrap());
///
/// client.on_message(|_, message| {
/// if message.content == "!invite" {
/// let invite = message.channel_id.create_invite(|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 JsonMap);
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(mut self, max_age: u64) -> Self {
self.0.insert("max_age".to_owned(), Value::Number(Number::from(max_age)));
self
}
/// 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(mut self, max_uses: u64) -> Self {
self.0.insert("max_uses".to_owned(), Value::Number(Number::from(max_uses)));
self
}
/// Whether an invite grants a temporary membership.
///
/// Defaults to `false`.
pub fn temporary(mut self, temporary: bool) -> Self {
self.0.insert("temporary".to_owned(), Value::Bool(temporary));
self
}
/// Whether or not to try to reuse a similar invite.
///
/// Defaults to `false`.
pub fn unique(mut self, unique: bool) -> Self {
self.0.insert("unique".to_owned(), Value::Bool(unique));
self
}
}
impl Default for CreateInvite {
/// Creates a builder with default values, setting `validate` to `null`.
fn default() -> CreateInvite {
let mut map = Map::new();
map.insert("validate".to_owned(), Value::Null);
CreateInvite(map)
}
}
|