aboutsummaryrefslogtreecommitdiff
path: root/examples/07_sample_bot_structure/src
diff options
context:
space:
mode:
Diffstat (limited to 'examples/07_sample_bot_structure/src')
-rw-r--r--examples/07_sample_bot_structure/src/commands/math.rs5
-rw-r--r--examples/07_sample_bot_structure/src/commands/meta.rs14
-rw-r--r--examples/07_sample_bot_structure/src/commands/mod.rs2
-rw-r--r--examples/07_sample_bot_structure/src/main.rs32
4 files changed, 53 insertions, 0 deletions
diff --git a/examples/07_sample_bot_structure/src/commands/math.rs b/examples/07_sample_bot_structure/src/commands/math.rs
new file mode 100644
index 0000000..79bfc52
--- /dev/null
+++ b/examples/07_sample_bot_structure/src/commands/math.rs
@@ -0,0 +1,5 @@
+command!(multiply(_ctx, msg, _args, one: f64, two: f64) {
+ let product = one * two;
+
+ let _ = msg.channel_id.say(&product.to_string());
+});
diff --git a/examples/07_sample_bot_structure/src/commands/meta.rs b/examples/07_sample_bot_structure/src/commands/meta.rs
new file mode 100644
index 0000000..a4036fc
--- /dev/null
+++ b/examples/07_sample_bot_structure/src/commands/meta.rs
@@ -0,0 +1,14 @@
+command!(latency(ctx, msg) {
+ let latency = ctx.shard.lock()
+ .unwrap()
+ .latency()
+ .map_or_else(|| "N/A".to_owned(), |s| {
+ format!("{}.{}s", s.as_secs(), s.subsec_nanos())
+ });
+
+ let _ = msg.channel_id.say(&latency);
+});
+
+command!(ping(_ctx, msg) {
+ let _ = msg.channel_id.say("Pong!");
+});
diff --git a/examples/07_sample_bot_structure/src/commands/mod.rs b/examples/07_sample_bot_structure/src/commands/mod.rs
new file mode 100644
index 0000000..bf58dba
--- /dev/null
+++ b/examples/07_sample_bot_structure/src/commands/mod.rs
@@ -0,0 +1,2 @@
+pub mod math;
+pub mod meta;
diff --git a/examples/07_sample_bot_structure/src/main.rs b/examples/07_sample_bot_structure/src/main.rs
new file mode 100644
index 0000000..85600eb
--- /dev/null
+++ b/examples/07_sample_bot_structure/src/main.rs
@@ -0,0 +1,32 @@
+//! Requires the 'framework' feature flag be enabled in your project's
+//! `Cargo.toml`.
+//!
+//! This can be enabled by specifying the feature in the dependency section:
+//!
+//! ```toml
+//! [dependencies.serenity]
+//! git = "https://github.com/zeyla/serenity.git"
+//! features = ["framework"]
+//! ```
+
+#[macro_use]
+extern crate serenity;
+
+mod commands;
+
+use serenity::Client;
+use std::env;
+
+fn main() {
+ let mut client = Client::login(&env::var("DISCORD_TOKEN").unwrap());
+
+ client.with_framework(|f| f
+ .configure(|c| c.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)));
+
+ if let Err(why) = client.start() {
+ println!("Client error: {:?}", why);
+ }
+}