aboutsummaryrefslogtreecommitdiff
path: root/examples/07_sample_bot_structure/src
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2017-04-05 08:14:43 -0700
committerZeyla Hellyer <[email protected]>2017-04-05 08:55:01 -0700
commitd9118c081742d6654dc0a4f60228a7a212ca436e (patch)
tree003f49f54769314c1111e942d77f57513406fb5e /examples/07_sample_bot_structure/src
parentAdd a sample bot structure example (diff)
downloadserenity-d9118c081742d6654dc0a4f60228a7a212ca436e.tar.xz
serenity-d9118c081742d6654dc0a4f60228a7a212ca436e.zip
Remove selfbot support
While selfbots have always been "roughly tolerated", lately they have been tolerated to less of a degree. The simple answer is to no longer support selfbots in any form. This is done for a few of reasons: 1) in anticipation of selfbots no longer being tolerated; 2) there are few reasons why one should make a selfbot in Rust and not a scripting language; 3) there are alternatives (i.e. discord-rs) that still support userbots. Selfbots are simply not a goal of the maintainer of serenity. Upgrade path: Don't use selfbots with serenity. Use discord-rs instead. The following has been removed: Enums: - `RelationshipType` Structs: - `FriendSourceFlags` - `ReadState` - `Relationship` - `SearchResult` - `SuggestionReason` - `Tutorial` - `UserConnection` - `UserGuildSettings` - `UserSettings` Removed the following fields: - `CurrentUser::mobile` - Ready::{ analytics_token, experiments, friend_suggestion_count, notes, read_state, relationships, tutorial, user_guild_settings, user_settings, } Removed the following methods: - `Client::login_user` Deprecated `Client::login_bot` in favour of `Client::login`. Removed `client::LoginType`. The following no longer take a `login_type` parameter: - `Context::new` - `Shard::new` `Shard::sync_guilds` has been removed. The `client::Error::{InvalidOperationAsBot, InvalidOperationAsUser}` variants have been removed. The following event handlers on `Client` have been removed: - `on_friend_suggestion_create` - `on_friend_suggestion_delete` - `on_relationship_add` - `on_relationship_remove` - `on_user_guild_settings_update` - `on_note_update` - `on_user_settings_update` The following `client::rest` functions have been removed: - `ack_message` - `edit_note` - `get_user_connections` - `search_channel_messages` - `search_guild_messages` The following `client::rest::ratelimiting::Route` variants have been removed: - `ChannelsIdMessagesSearch` - `GuildsIdMessagesSearch` - `UsersMeConnections` The following fields on `ext::cache::Cache` have been removed: - `guild_settings` - `relationships` - `settings` while the following methods have also been removed: - `update_with_relationship_add` - `update_with_relationship_remove` - `update_with_user_guild_settings_update` - `update_with_user_note_update` - `update_with_user_settings_update` The following methods have been removed across models: - `ChannelId::{ack, search}` - `Channel::{ack, search}` - `Group::{ack, search}` - `GuildChannel::{ack, search}` - `GuildId::{search, search_channels}` - `Guild::{search, search_channels}` - `Message::ack` - `PartialGuild::{search, search_channels}` - `PrivateChannel::{ack, search}` - `UserId::{delete_note, edit_note}` - `User::{delete_note, edit_note}` The following events in `model::events` have been removed: - `FriendSuggestionCreateEvent` - `FriendSuggestionDeleteEvent` - `MessageAckEvent` - `RelationshipAddEvent` - `RelationshipRemoveEvent` - `UserGuildSettingsUpdateEvent` - `UserNoteUpdateEvent` - `UserSettingsUpdateEvent` Consequently, the following variants on `model::event::Event` have been removed: - `FriendSuggestionCreate` - `FriendSuggestionDelete` - `MessageAdd` - `RelationshipAdd` - `RelationshipRemove` - `UserGuildSettingUpdate` - `UserNoteUpdate` - `UserSettingsUpdate` The `utils::builder::Search` search builder has been removed.
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);
+ }
+}