diff --git a/Cargo.lock b/Cargo.lock index fa779db..22f7f61 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -61,6 +61,15 @@ dependencies = [ "libc", ] +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + [[package]] name = "anyhow" version = "1.0.70" @@ -296,6 +305,21 @@ dependencies = [ "winapi", ] +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags", + "strsim 0.8.0", + "textwrap", + "unicode-width", + "vec_map", +] + [[package]] name = "clap" version = "4.0.29" @@ -307,7 +331,7 @@ dependencies = [ "clap_lex", "is-terminal", "once_cell", - "strsim", + "strsim 0.10.0", "termcolor", ] @@ -665,6 +689,9 @@ name = "dotenv" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" +dependencies = [ + "clap 2.34.0", +] [[package]] name = "either" @@ -3066,6 +3093,12 @@ dependencies = [ "unicode_categories", ] +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + [[package]] name = "strsim" version = "0.10.0" @@ -3118,6 +3151,15 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + [[package]] name = "thiserror" version = "1.0.37" @@ -3394,7 +3436,8 @@ version = "1.3.0" dependencies = [ "base64 0.13.1", "bytes", - "clap", + "clap 4.0.29", + "dotenv", "futures", "lazy_static", "log", @@ -3730,6 +3773,12 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + [[package]] name = "version_check" version = "0.9.4" diff --git a/Cargo.toml b/Cargo.toml index ed37d97..e8aedd6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,3 +50,4 @@ prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust", tag = "0.6.7", default-features = false, features = [ "sqlite" ] } +dotenv = { version = "0.15.0", features = ["clap"] } diff --git a/src/commands/level.rs b/src/commands/level.rs index 7bfe2d9..714c0f7 100644 --- a/src/commands/level.rs +++ b/src/commands/level.rs @@ -58,7 +58,7 @@ pub async fn level(ctx: &SlashContext<'_, Arc>>) -> CommandResult { user.level, pos.unwrap_or_default() + 1, ); - + tracing::info!("Level {message}"); ctx.interaction_client .create_response( ctx.interaction.id, diff --git a/src/config.rs b/src/config.rs index 3d1c61f..ca6335d 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,4 +1,4 @@ -use std::{collections::HashMap, io, num::ParseIntError, sync::Arc}; +use std::{collections::HashMap, io, num::ParseIntError, path::PathBuf, sync::Arc}; use clap::Parser; @@ -14,7 +14,7 @@ pub struct Config { #[arg(long, env, value_parser = vec_u64_parser)] pub message_indicator_channels: Arc>, #[arg(long, env, default_value = "trickedbot.sqlite")] - pub database_file: String, + pub database_file: PathBuf, #[arg(short, long, env, default_value = "0")] pub id: u64, #[arg(long, env, value_parser(vec_u64_parser))] diff --git a/src/main.rs b/src/main.rs index 82105f8..9ff2cd0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -30,7 +30,7 @@ use twilight_model::{ }; use zephyrus::prelude::*; -use std::{collections::HashMap, env, error::Error, sync::Arc, time::Duration}; +use std::{collections::HashMap, env, error::Error, path, sync::Arc, time::Duration}; mod commands; mod config; @@ -48,15 +48,26 @@ const VERSION: &str = env!("CARGO_PKG_VERSION"); #[tokio::main] async fn main() -> Result<(), Box> { - let db: PrismaClient = PrismaClient::_builder().build().await?; + dotenv::dotenv().ok(); - tracing_subscriber::fmt().init(); + tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).init(); let mut cfg = Config::parse(); if cfg.id == 0 { cfg.id = String::from_utf8_lossy(&base64::decode(cfg.token.split_once('.').unwrap().0).unwrap()) .parse::() .unwrap(); } + + if std::fs::metadata(&cfg.database_file).is_err() { + std::fs::write(&cfg.database_file, [])?; + } + let db_path = format!( + "file://{}", + cfg.database_file.canonicalize()?.to_string_lossy().to_string() + ); + + let db: PrismaClient = PrismaClient::_builder().with_url(db_path).build().await?; + let config = Arc::new(cfg); let client: Client = Client::builder() @@ -160,6 +171,7 @@ async fn handle_event( } } Event::InteractionCreate(i) => { + tracing::info!("Slash Command!"); tokio::spawn(async move { let inner = i.0; framework.process(inner).await; @@ -217,6 +229,8 @@ async fn handle_event( Event::MessageCreate(msg) => { tracing::info!("Message received {}", &msg.content.replace('\n', "\\ ")); + locked_state.last_typer = msg.id.get(); + if msg.guild_id.is_none() || msg.author.bot { return Ok(()); }