aboutsummaryrefslogtreecommitdiff
path: root/examples/07_sample_bot_structure/src
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2017-10-29 11:56:25 -0700
committerZeyla Hellyer <[email protected]>2017-10-29 11:56:25 -0700
commit41f26b3757c7a5fba1f09f34e3192e2fd9702a4a (patch)
treecf2c2e823fad640d99f5ef2f4fc6d6c56d72774f /examples/07_sample_bot_structure/src
parentFix shard shutdown via Context (diff)
downloadserenity-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.rs1
-rw-r--r--examples/07_sample_bot_structure/src/commands/owner.rs10
-rw-r--r--examples/07_sample_bot_structure/src/main.rs21
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);