From 646906c085e60b4486bed12da9482e5711a1294c Mon Sep 17 00:00:00 2001 From: Ladislav Hano <524934@mail.muni.cz> Date: Wed, 5 Jul 2023 11:06:04 +0200 Subject: [PATCH] Initial commit, ping pong works --- .gitignore | 2 ++ Cargo.toml | 15 +++++++++++++++ src/main.rs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.toml create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0b745e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +.env \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..d8ea21b --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "moover_rust" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +cron = "0.12.0" +dotenv = "0.15.0" +mongodb = "2.4.0" +poise = "0.5.2" +serenity = { version = "0.11.5", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] } +serenity_utils = "0.7.0" +tokio = { version = "1.21.2", features = ["macros", "rt-multi-thread"] } \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..0b59d2c --- /dev/null +++ b/src/main.rs @@ -0,0 +1,47 @@ +extern crate dotenv; + +use std::env; + +use serenity::async_trait; +use serenity::model::channel::Message; +use serenity::model::gateway::Ready; +use serenity::prelude::*; + +use dotenv::dotenv; + +struct Handler; + +#[async_trait] +impl EventHandler for Handler { + async fn message(&self, ctx: Context, msg: Message) { + if msg.content == "!ping" { + if let Err(why) = msg.channel_id.say(&ctx.http, "Pong!").await { + println!("Error sending message: {:?}", why); + } + } + } + + async fn ready(&self, _: Context, ready: Ready) { + println!("{} is connected!", ready.user.name); + } +} + +#[tokio::main] +async fn main() { + dotenv().ok(); + let token; + let key = "TOKEN"; + match env::var(key) { + Ok(val) => token = val, + Err(_) => return, + } + let intents = GatewayIntents::GUILD_MESSAGES + | GatewayIntents::DIRECT_MESSAGES + | GatewayIntents::MESSAGE_CONTENT; + + let mut client = Client::builder(&token, intents).event_handler(Handler).await.expect("Error creating client"); + + if let Err(why) = client.start().await { + println!("Client error: {:?}", why); + } +}