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
|
use crate::core::consts::DB as db;
use crate::core::utils::parse_guild;
use serenity::framework::standard::{
Args,
Command,
CommandError,
CommandOptions
};
use serenity::model::channel::Message;
use serenity::prelude::Context;
use std::sync::Arc;
pub struct Say;
impl Command for Say {
fn options(&self) -> Arc<CommandOptions> {
let default = CommandOptions::default();
let options = CommandOptions {
owners_only: true,
..default
};
Arc::new(options)
}
fn execute(&self, _: &mut Context, message: &Message, args: Args) -> Result<(), CommandError> {
message.delete()?;
message.channel_id.say(args.to_string())?;
Ok(())
}
}
pub struct Premium;
impl Command for Premium {
fn options(&self) -> Arc<CommandOptions> {
let default = CommandOptions::default();
let options = CommandOptions {
owners_only: true,
..default
};
Arc::new(options)
}
fn execute(&self, _: &mut Context, message: &Message, mut args: Args) -> Result<(), CommandError> {
let op = args.single::<String>()?;
let g = args.single_quoted::<String>()?;
if let Some((guild_id, guild_lock)) = parse_guild(g) {
let guild = guild_lock.read();
match op.to_lowercase().as_str() {
"enable" => {
if let Ok(_) = db.new_premium(guild_id.0 as i64) {
message.channel_id.say(format!("{} is now premium!", guild.name))?;
}
},
"disable" => {
if let Ok(_) = db.del_premium(guild_id.0 as i64) {
message.channel_id.say(format!("{} is no longer premium...", guild.name))?;
}
},
"set" => {
let mut prem = db.get_premium(guild_id.0 as i64)?;
prem.tier = args.single::<i32>()?;
let pr = db.update_premium(guild_id.0 as i64, prem)?;
message.channel_id.say(format!("Updated premium tier for {} to {}.", guild.name, pr.tier))?;
},
"show" => {
if let Ok(prem) = db.get_premium(guild_id.0 as i64) { // mut
// TODO: add impl Display for PremiumSettings
message.channel_id.say(format!("{:?}", prem))?;
}
},
_ => {},
}
}
Ok(())
}
}
|