diff options
| author | Zeyla Hellyer <[email protected]> | 2017-10-29 11:56:25 -0700 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-10-29 11:56:25 -0700 |
| commit | 41f26b3757c7a5fba1f09f34e3192e2fd9702a4a (patch) | |
| tree | cf2c2e823fad640d99f5ef2f4fc6d6c56d72774f /examples/07_sample_bot_structure/src | |
| parent | Fix shard shutdown via Context (diff) | |
| download | serenity-41f26b3757c7a5fba1f09f34e3192e2fd9702a4a.tar.xz serenity-41f26b3757c7a5fba1f09f34e3192e2fd9702a4a.zip | |
Add owner + quit functionality to example 07
Diffstat (limited to 'examples/07_sample_bot_structure/src')
| -rw-r--r-- | examples/07_sample_bot_structure/src/commands/mod.rs | 1 | ||||
| -rw-r--r-- | examples/07_sample_bot_structure/src/commands/owner.rs | 10 | ||||
| -rw-r--r-- | examples/07_sample_bot_structure/src/main.rs | 21 |
3 files changed, 30 insertions, 2 deletions
diff --git a/examples/07_sample_bot_structure/src/commands/mod.rs b/examples/07_sample_bot_structure/src/commands/mod.rs index bf58dba..9c5dfaa 100644 --- a/examples/07_sample_bot_structure/src/commands/mod.rs +++ b/examples/07_sample_bot_structure/src/commands/mod.rs @@ -1,2 +1,3 @@ pub mod math; pub mod meta; +pub mod owner; diff --git a/examples/07_sample_bot_structure/src/commands/owner.rs b/examples/07_sample_bot_structure/src/commands/owner.rs new file mode 100644 index 0000000..e80c19d --- /dev/null +++ b/examples/07_sample_bot_structure/src/commands/owner.rs @@ -0,0 +1,10 @@ +command!(quit(ctx, msg, _args) { + match ctx.quit() { + Ok(()) => { + let _ = msg.reply("Shutting down!"); + }, + Err(why) => { + let _ = msg.reply(&format!("Failed to shutdown: {:?}", why)); + }, + } +}); diff --git a/examples/07_sample_bot_structure/src/main.rs b/examples/07_sample_bot_structure/src/main.rs index 01f7a61..37f6c98 100644 --- a/examples/07_sample_bot_structure/src/main.rs +++ b/examples/07_sample_bot_structure/src/main.rs @@ -21,6 +21,8 @@ use serenity::framework::StandardFramework; use serenity::model::event::ResumedEvent; use serenity::model::Ready; use serenity::prelude::*; +use serenity::http; +use std::collections::HashSet; use std::env; struct Handler; @@ -48,11 +50,26 @@ fn main() { let mut client = Client::new(&env::var("DISCORD_TOKEN").unwrap(), Handler); + let owners = match http::get_current_application_info() { + Ok(info) => { + let mut set = HashSet::new(); + set.insert(info.owner.id); + + set + }, + Err(why) => panic!("Couldn't get application info: {:?}", why), + }; + client.with_framework(StandardFramework::new() - .configure(|c| c.prefix("~")) + .configure(|c| c + .owners(owners) + .prefix("~")) .command("ping", |c| c.exec(commands::meta::ping)) .command("latency", |c| c.exec(commands::meta::latency)) - .command("multiply", |c| c.exec(commands::math::multiply))); + .command("multiply", |c| c.exec(commands::math::multiply)) + .command("quit", |c| c + .exec(commands::owner::quit) + .owners_only(true))); if let Err(why) = client.start() { error!("Client error: {:?}", why); |