forked from projectmoon/tenebrous-dicebot
Add basic logging to the dice bot.
This commit is contained in:
parent
f0a1fe53fc
commit
54a3cc0880
|
@ -95,6 +95,17 @@ dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "atty"
|
||||||
|
version = "0.2.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
||||||
|
dependencies = [
|
||||||
|
"hermit-abi",
|
||||||
|
"libc",
|
||||||
|
"winapi 0.3.9",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "autocfg"
|
name = "autocfg"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
|
@ -160,7 +171,9 @@ version = "0.3.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"dirs",
|
"dirs",
|
||||||
|
"env_logger",
|
||||||
"itertools",
|
"itertools",
|
||||||
|
"log",
|
||||||
"matrix-sdk",
|
"matrix-sdk",
|
||||||
"matrix-sdk-base 0.1.0 (git+https://github.com/matrix-org/matrix-rust-sdk?rev=0.1.0)",
|
"matrix-sdk-base 0.1.0 (git+https://github.com/matrix-org/matrix-rust-sdk?rev=0.1.0)",
|
||||||
"matrix-sdk-common 0.1.0 (git+https://github.com/matrix-org/matrix-rust-sdk?rev=0.1.0)",
|
"matrix-sdk-common 0.1.0 (git+https://github.com/matrix-org/matrix-rust-sdk?rev=0.1.0)",
|
||||||
|
@ -308,6 +321,19 @@ dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "env_logger"
|
||||||
|
version = "0.7.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
|
||||||
|
dependencies = [
|
||||||
|
"atty",
|
||||||
|
"humantime",
|
||||||
|
"log",
|
||||||
|
"regex",
|
||||||
|
"termcolor",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fnv"
|
name = "fnv"
|
||||||
version = "1.0.7"
|
version = "1.0.7"
|
||||||
|
@ -587,6 +613,15 @@ version = "1.3.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
|
checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "humantime"
|
||||||
|
version = "1.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
|
||||||
|
dependencies = [
|
||||||
|
"quick-error",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hyper"
|
name = "hyper"
|
||||||
version = "0.13.7"
|
version = "0.13.7"
|
||||||
|
@ -1141,6 +1176,12 @@ dependencies = [
|
||||||
"unicode-xid",
|
"unicode-xid",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quick-error"
|
||||||
|
version = "1.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.7"
|
version = "1.0.7"
|
||||||
|
@ -1795,6 +1836,15 @@ dependencies = [
|
||||||
"winapi 0.3.9",
|
"winapi 0.3.9",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "termcolor"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-util",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thiserror"
|
name = "thiserror"
|
||||||
version = "1.0.20"
|
version = "1.0.20"
|
||||||
|
@ -2161,6 +2211,15 @@ version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-util"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
|
||||||
|
dependencies = [
|
||||||
|
"winapi 0.3.9",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi-x86_64-pc-windows-gnu"
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
|
|
|
@ -11,6 +11,8 @@ keywords = ["games", "dice", "matrix", "bot"]
|
||||||
categories = ["games"]
|
categories = ["games"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
log = "0.4"
|
||||||
|
env_logger = "0.7"
|
||||||
toml = "0.5"
|
toml = "0.5"
|
||||||
nom = "5"
|
nom = "5"
|
||||||
rand = "0.7"
|
rand = "0.7"
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use chronicle_dicebot::bot::run_bot;
|
use chronicle_dicebot::bot::run_bot;
|
||||||
use chronicle_dicebot::bot::Config;
|
use chronicle_dicebot::bot::Config;
|
||||||
|
use env_logger::Env;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
@ -15,6 +16,8 @@ fn read_config<P: Into<PathBuf>>(config_path: P) -> Result<Config, Box<dyn std::
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
env_logger::from_env(Env::default().default_filter_or("chronicle_dicebot=info")).init();
|
||||||
|
|
||||||
let config_path = std::env::args()
|
let config_path = std::env::args()
|
||||||
.skip(1)
|
.skip(1)
|
||||||
.next()
|
.next()
|
||||||
|
|
15
src/bot.rs
15
src/bot.rs
|
@ -1,5 +1,6 @@
|
||||||
use crate::commands::parse_command;
|
use crate::commands::parse_command;
|
||||||
use dirs;
|
use dirs;
|
||||||
|
use log::{error, info, warn};
|
||||||
use matrix_sdk::{
|
use matrix_sdk::{
|
||||||
self,
|
self,
|
||||||
events::{
|
events::{
|
||||||
|
@ -66,10 +67,10 @@ impl EventEmitter for DiceBot {
|
||||||
}
|
}
|
||||||
|
|
||||||
let room = room.read().await;
|
let room = room.read().await;
|
||||||
println!("Autojoining room {}", room.display_name());
|
info!("Autojoining room {}", room.display_name());
|
||||||
|
|
||||||
match self.client.join_room_by_id(&room.room_id).await {
|
match self.client.join_room_by_id(&room.room_id).await {
|
||||||
Err(e) => println!("Could not join room: {}", e.to_string()),
|
Err(e) => warn!("Could not join room: {}", e.to_string()),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,12 +111,14 @@ impl EventEmitter for DiceBot {
|
||||||
NoticeMessageEventContent::html(plain, html),
|
NoticeMessageEventContent::html(plain, html),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
info!("{} executed: {}", sender_username, msg_body);
|
||||||
|
|
||||||
//we clone here to hold the lock for as little time as possible.
|
//we clone here to hold the lock for as little time as possible.
|
||||||
let room_id = room.read().await.room_id.clone();
|
let room_id = room.read().await.room_id.clone();
|
||||||
let result = self.client.room_send(&room_id, content, None).await;
|
let result = self.client.room_send(&room_id, content, None).await;
|
||||||
|
|
||||||
match result {
|
match result {
|
||||||
Err(e) => println!("Error sending message: {}", e.to_string()),
|
Err(e) => error!("Error sending message: {}", e.to_string()),
|
||||||
Ok(_) => (),
|
Ok(_) => (),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -157,10 +160,10 @@ pub async fn run_bot(config: MatrixConfig) -> Result<(), Box<dyn std::error::Err
|
||||||
.login(&username, &password, None, Some("matrix dice bot"))
|
.login(&username, &password, None, Some("matrix dice bot"))
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
println!("Logged in as {}", username);
|
info!("Logged in as {}", username);
|
||||||
|
|
||||||
if should_sync {
|
if should_sync {
|
||||||
println!("Performing initial sync");
|
info!("Performing initial sync");
|
||||||
client.sync(SyncSettings::default()).await?;
|
client.sync(SyncSettings::default()).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,7 +179,7 @@ pub async fn run_bot(config: MatrixConfig) -> Result<(), Box<dyn std::error::Err
|
||||||
let settings = SyncSettings::default().token(token);
|
let settings = SyncSettings::default().token(token);
|
||||||
|
|
||||||
//this keeps state from the server streaming in to the dice bot via the EventEmitter trait
|
//this keeps state from the server streaming in to the dice bot via the EventEmitter trait
|
||||||
println!("Listening for commands");
|
info!("Listening for commands");
|
||||||
client.sync_forever(settings, |_| async {}).await;
|
client.sync_forever(settings, |_| async {}).await;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -65,9 +65,9 @@ impl Command for PoolRollCommand {
|
||||||
/// command was recognized.
|
/// command was recognized.
|
||||||
pub fn parse_command(s: &str) -> Result<Option<Box<dyn Command>>, String> {
|
pub fn parse_command(s: &str) -> Result<Option<Box<dyn Command>>, String> {
|
||||||
match parser::parse_command(s) {
|
match parser::parse_command(s) {
|
||||||
//The first clause prevents bot from spamming messages to itself
|
|
||||||
//after executing a previous command.
|
|
||||||
Ok((input, result)) => match (input, &result) {
|
Ok((input, result)) => match (input, &result) {
|
||||||
|
//This clause prevents bot from spamming messages to itself
|
||||||
|
//after executing a previous command.
|
||||||
("", Some(_)) | (_, None) => Ok(result),
|
("", Some(_)) | (_, None) => Ok(result),
|
||||||
_ => Err(format!("{}: malformed dice expression", s)),
|
_ => Err(format!("{}: malformed dice expression", s)),
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue