rework for anyhow
This commit is contained in:
parent
ea9d40b60e
commit
7e9f80df93
3 changed files with 66 additions and 32 deletions
7
Cargo.lock
generated
7
Cargo.lock
generated
|
@ -43,6 +43,12 @@ dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anyhow"
|
||||||
|
version = "1.0.71"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-trait"
|
name = "async-trait"
|
||||||
version = "0.1.70"
|
version = "0.1.70"
|
||||||
|
@ -956,6 +962,7 @@ dependencies = [
|
||||||
name = "moover_rust"
|
name = "moover_rust"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
"cron",
|
"cron",
|
||||||
"dotenv",
|
"dotenv",
|
||||||
"mongodb",
|
"mongodb",
|
||||||
|
|
|
@ -6,6 +6,7 @@ edition = "2021"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
anyhow = "1.0.71"
|
||||||
cron = "0.12.0"
|
cron = "0.12.0"
|
||||||
dotenv = "0.15.0"
|
dotenv = "0.15.0"
|
||||||
mongodb = "2.6.0"
|
mongodb = "2.6.0"
|
||||||
|
|
76
src/main.rs
76
src/main.rs
|
@ -2,12 +2,12 @@ use std::sync::Arc;
|
||||||
|
|
||||||
use poise::serenity_prelude::GuildChannel;
|
use poise::serenity_prelude::GuildChannel;
|
||||||
use serenity::async_trait;
|
use serenity::async_trait;
|
||||||
|
use serenity::http::{self, Http};
|
||||||
use serenity::model::channel::Message;
|
use serenity::model::channel::Message;
|
||||||
use serenity::model::gateway::Ready;
|
use serenity::model::gateway::Ready;
|
||||||
use serenity::model::id::ChannelId;
|
use serenity::model::id::ChannelId;
|
||||||
use serenity::prelude::*;
|
use serenity::prelude::*;
|
||||||
use util::security::dotenv_var;
|
use util::security::dotenv_var;
|
||||||
use serenity::http::{self, Http};
|
|
||||||
|
|
||||||
mod util;
|
mod util;
|
||||||
|
|
||||||
|
@ -26,17 +26,18 @@ impl EventHandler for Handler {
|
||||||
async fn ready(&self, ctx: Context, ready: Ready) {
|
async fn ready(&self, ctx: Context, ready: Ready) {
|
||||||
println!("{} is connected!", ready.user.name);
|
println!("{} is connected!", ready.user.name);
|
||||||
// if (ready.user.name != "MOOver Debug") {
|
// if (ready.user.name != "MOOver Debug") {
|
||||||
let messages = ["AAAAAAAAAAAAAAAAAAAA", "Henlooo", "Good day y'all!",
|
let messages = [
|
||||||
"May have crashed...", "MOOOooo", "Heyyyyy!", "I'm baaaaack!",
|
"AAAAAAAAAAAAAAAAAAAA",
|
||||||
"Whom'st have summoned the ancient one?"];
|
"Henlooo",
|
||||||
|
"Good day y'all!",
|
||||||
|
"May have crashed...",
|
||||||
|
"MOOOooo",
|
||||||
|
"Heyyyyy!",
|
||||||
|
"I'm baaaaack!",
|
||||||
|
"Whom'st have summoned the ancient one?",
|
||||||
|
];
|
||||||
|
|
||||||
// }
|
// }
|
||||||
let opt_token = dotenv_var("TOKEN");
|
|
||||||
if opt_token.is_none() {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let token = opt_token.unwrap();
|
|
||||||
let channel_result = ctx.http.get_channel(780439236867653635).await;
|
let channel_result = ctx.http.get_channel(780439236867653635).await;
|
||||||
let channel = channel_result.unwrap();
|
let channel = channel_result.unwrap();
|
||||||
// let channel = await http.get_channel(780439236867653635);
|
// let channel = await http.get_channel(780439236867653635);
|
||||||
|
@ -47,27 +48,52 @@ impl EventHandler for Handler {
|
||||||
// const debug_channel =
|
// const debug_channel =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
struct MyStruct {
|
||||||
|
niečo: String,
|
||||||
|
}
|
||||||
#[tokio::main]
|
impl MyStruct {
|
||||||
async fn main() {
|
fn add(&mut self) {
|
||||||
let opt_token = dotenv_var("TOKEN");
|
self.niečo.push(char::from_digit(2, 2).unwrap());
|
||||||
if opt_token.is_none() {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
trait Countable {
|
||||||
|
fn count(&self) -> usize;
|
||||||
|
}
|
||||||
|
impl Countable for MyStruct {
|
||||||
|
fn count(&self) -> usize {
|
||||||
|
self.niečo.len()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn smt(var: Box<dyn Countable>) {
|
||||||
|
var.count();
|
||||||
|
}
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() -> anyhow::Result<()> {
|
||||||
|
let mut n = MyStruct {
|
||||||
|
niečo: "aaa".to_string(),
|
||||||
|
};
|
||||||
|
n.add();
|
||||||
|
loop {
|
||||||
|
//Keeps trying to reconnect, if errors occur print to console and retry
|
||||||
|
match connect().await {
|
||||||
|
Ok(r) => return Ok(()),
|
||||||
|
Err(e) => println!("FAILED TO CONNECT!!! {e}\nRetrying soon..."),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let token = opt_token.unwrap();
|
async fn connect() -> anyhow::Result<()> {
|
||||||
|
use anyhow::Context;
|
||||||
|
let token = dotenv_var("TOKEN").context("No TOKEN in env")?;
|
||||||
let intents = GatewayIntents::GUILD_MESSAGES
|
let intents = GatewayIntents::GUILD_MESSAGES
|
||||||
| GatewayIntents::DIRECT_MESSAGES
|
| GatewayIntents::DIRECT_MESSAGES
|
||||||
| GatewayIntents::MESSAGE_CONTENT;
|
| GatewayIntents::MESSAGE_CONTENT;
|
||||||
|
|
||||||
let mut client = Client::builder(&token, intents)
|
let mut client = Client::builder(&token, intents)
|
||||||
.event_handler(Handler)
|
.event_handler(Handler)
|
||||||
.await.expect("Error creating client");
|
.await
|
||||||
|
.context("Failed to build client")?;
|
||||||
|
|
||||||
if let Err(why) = client.start().await {
|
client.start().await?;
|
||||||
println!("Client error: {:?}", why);
|
Ok(())
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue