parent
288675c2ea
commit
b4e874ae07
@ -1,4 +1,5 @@
|
|||||||
/target
|
/target
|
||||||
bot.db
|
bot.db
|
||||||
.env
|
.env
|
||||||
*.env
|
*.env
|
||||||
|
logs
|
@ -0,0 +1,21 @@
|
|||||||
|
use serenity::async_trait;
|
||||||
|
use serenity::client::Context;
|
||||||
|
use serenity::model::event::ResumedEvent;
|
||||||
|
use serenity::model::gateway::{Activity, Ready};
|
||||||
|
use serenity::prelude::*;
|
||||||
|
|
||||||
|
pub(crate) struct Handler;
|
||||||
|
|
||||||
|
#[async_trait]
|
||||||
|
impl EventHandler for Handler {
|
||||||
|
async fn ready(&self, ctx: Context, ready: Ready) {
|
||||||
|
log::info!("Connected as {}", ready.user.name);
|
||||||
|
let prefix = dotenv::var("BOT_PREFIX").unwrap_or("~!".to_string());
|
||||||
|
ctx.set_activity(Activity::listening(format!("{}help", prefix).as_str()))
|
||||||
|
.await;
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn resume(&self, _: Context, _: ResumedEvent) {
|
||||||
|
log::info!("Reconnected to gateway")
|
||||||
|
}
|
||||||
|
}
|
@ -1,17 +1,20 @@
|
|||||||
use crate::client::get_client;
|
use crate::client::get_client;
|
||||||
|
use crate::utils::logging::init_logger;
|
||||||
|
|
||||||
pub(crate) mod client;
|
pub mod client;
|
||||||
mod commands;
|
mod commands;
|
||||||
pub(crate) mod database;
|
pub mod database;
|
||||||
|
pub mod handler;
|
||||||
mod providers;
|
mod providers;
|
||||||
pub(crate) mod utils;
|
pub mod utils;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
|
init_logger();
|
||||||
let mut client = get_client().await.unwrap();
|
let mut client = get_client().await.unwrap();
|
||||||
|
|
||||||
// start listening for events by starting a single shard
|
// start listening for events by starting a single shard
|
||||||
if let Err(why) = client.start().await {
|
if let Err(why) = client.start().await {
|
||||||
println!("An error occurred while running the client: {:?}", why);
|
log::error!("An error occurred while running the client: {:?}", why);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,82 @@
|
|||||||
|
/*
|
||||||
|
* snekcloud node based network
|
||||||
|
* Copyright (C) 2020 trivernis
|
||||||
|
* See LICENSE for more information
|
||||||
|
*/
|
||||||
|
|
||||||
|
use chrono::Local;
|
||||||
|
use colored::*;
|
||||||
|
use log::{Level, LevelFilter};
|
||||||
|
use std::fs;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
/// Initializes the env_logger with a custom format
|
||||||
|
/// that also logs the thread names
|
||||||
|
pub fn init_logger() {
|
||||||
|
let log_dir = PathBuf::from(dotenv::var("LOG_DIR").unwrap_or("logs".to_string()));
|
||||||
|
|
||||||
|
if !log_dir.exists() {
|
||||||
|
fs::create_dir(&log_dir).expect("failed to create log dir");
|
||||||
|
}
|
||||||
|
fern::Dispatch::new()
|
||||||
|
.format(|out, message, record| {
|
||||||
|
let color = get_level_style(record.level());
|
||||||
|
let mut target = record.target().to_string();
|
||||||
|
target.truncate(39);
|
||||||
|
|
||||||
|
out.finish(format_args!(
|
||||||
|
"{:<40}| {} {}: {}",
|
||||||
|
target.dimmed().italic(),
|
||||||
|
Local::now().format("%Y-%m-%dT%H:%M:%S"),
|
||||||
|
record
|
||||||
|
.level()
|
||||||
|
.to_string()
|
||||||
|
.to_lowercase()
|
||||||
|
.as_str()
|
||||||
|
.color(color),
|
||||||
|
message
|
||||||
|
))
|
||||||
|
})
|
||||||
|
.level(
|
||||||
|
log::LevelFilter::from_str(
|
||||||
|
std::env::var("RUST_LOG")
|
||||||
|
.unwrap_or("info".to_string())
|
||||||
|
.as_str(),
|
||||||
|
)
|
||||||
|
.unwrap_or(LevelFilter::Info),
|
||||||
|
)
|
||||||
|
.level_for("tokio", log::LevelFilter::Info)
|
||||||
|
.level_for("tracing", log::LevelFilter::Warn)
|
||||||
|
.level_for("serenity", log::LevelFilter::Warn)
|
||||||
|
.level_for("rustls", log::LevelFilter::Warn)
|
||||||
|
.level_for("h2", log::LevelFilter::Warn)
|
||||||
|
.level_for("reqwest", log::LevelFilter::Warn)
|
||||||
|
.level_for("tungstenite", log::LevelFilter::Warn)
|
||||||
|
.level_for("hyper", log::LevelFilter::Warn)
|
||||||
|
.level_for("async_tungstenite", log::LevelFilter::Warn)
|
||||||
|
.level_for("tokio_util", log::LevelFilter::Warn)
|
||||||
|
.level_for("want", log::LevelFilter::Warn)
|
||||||
|
.level_for("mio", log::LevelFilter::Warn)
|
||||||
|
.level_for("songbird", log::LevelFilter::Warn)
|
||||||
|
.chain(std::io::stdout())
|
||||||
|
.chain(
|
||||||
|
fern::log_file(log_dir.join(PathBuf::from(format!(
|
||||||
|
"{}.log",
|
||||||
|
Local::now().format("%Y-%m-%d"),
|
||||||
|
))))
|
||||||
|
.expect("failed to create log file"),
|
||||||
|
)
|
||||||
|
.apply()
|
||||||
|
.expect("failed to init logger");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_level_style(level: Level) -> colored::Color {
|
||||||
|
match level {
|
||||||
|
Level::Trace => colored::Color::Magenta,
|
||||||
|
Level::Debug => colored::Color::Blue,
|
||||||
|
Level::Info => colored::Color::Green,
|
||||||
|
Level::Warn => colored::Color::Yellow,
|
||||||
|
Level::Error => colored::Color::Red,
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue