Compare commits
No commits in common. "4d3947c4ef4970d13b17fc9674a6d0e8c5d16c9d" and "c4454fe217644fa36fe09e18de7b95247d65328b" have entirely different histories.
4d3947c4ef
...
c4454fe217
64
Cargo.lock
generated
64
Cargo.lock
generated
@ -925,15 +925,6 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "built"
|
|
||||||
version = "0.7.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b"
|
|
||||||
dependencies = [
|
|
||||||
"git2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.17.0"
|
version = "3.17.0"
|
||||||
@ -967,8 +958,6 @@ version = "1.2.15"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af"
|
checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"jobserver",
|
|
||||||
"libc",
|
|
||||||
"shlex",
|
"shlex",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1382,7 +1371,6 @@ dependencies = [
|
|||||||
"azalea",
|
"azalea",
|
||||||
"bevy_app",
|
"bevy_app",
|
||||||
"bevy_log",
|
"bevy_log",
|
||||||
"built",
|
|
||||||
"clap",
|
"clap",
|
||||||
"console-subscriber",
|
"console-subscriber",
|
||||||
"futures",
|
"futures",
|
||||||
@ -1612,19 +1600,6 @@ version = "0.31.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
|
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "git2"
|
|
||||||
version = "0.20.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3fda788993cc341f69012feba8bf45c0ba4f3291fcc08e214b4d5a7332d88aff"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags",
|
|
||||||
"libc",
|
|
||||||
"libgit2-sys",
|
|
||||||
"log",
|
|
||||||
"url",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "glob"
|
name = "glob"
|
||||||
version = "0.3.2"
|
version = "0.3.2"
|
||||||
@ -2063,15 +2038,6 @@ version = "1.0.14"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
|
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "jobserver"
|
|
||||||
version = "0.1.32"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "js-sys"
|
name = "js-sys"
|
||||||
version = "0.3.77"
|
version = "0.3.77"
|
||||||
@ -2097,18 +2063,6 @@ version = "0.2.169"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
|
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libgit2-sys"
|
|
||||||
version = "0.18.0+1.9.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e1a117465e7e1597e8febea8bb0c410f1c7fb93b1e1cddf34363f8390367ffec"
|
|
||||||
dependencies = [
|
|
||||||
"cc",
|
|
||||||
"libc",
|
|
||||||
"libz-sys",
|
|
||||||
"pkg-config",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libloading"
|
name = "libloading"
|
||||||
version = "0.8.6"
|
version = "0.8.6"
|
||||||
@ -2125,18 +2079,6 @@ version = "0.2.11"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
|
checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libz-sys"
|
|
||||||
version = "1.1.21"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "df9b68e50e6e0b26f672573834882eb57759f6db9b3be2ea3c35c91188bb4eaa"
|
|
||||||
dependencies = [
|
|
||||||
"cc",
|
|
||||||
"libc",
|
|
||||||
"pkg-config",
|
|
||||||
"vcpkg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "linked-hash-map"
|
name = "linked-hash-map"
|
||||||
version = "0.5.6"
|
version = "0.5.6"
|
||||||
@ -3697,12 +3639,6 @@ version = "0.1.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
|
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "vcpkg"
|
|
||||||
version = "0.2.15"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version_check"
|
name = "version_check"
|
||||||
version = "0.9.5"
|
version = "0.9.5"
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
name = "errornowatcher"
|
name = "errornowatcher"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
build = "build.rs"
|
|
||||||
|
|
||||||
[profile.dev]
|
[profile.dev]
|
||||||
opt-level = 1
|
opt-level = 1
|
||||||
@ -15,15 +14,12 @@ codegen-units = 1
|
|||||||
lto = true
|
lto = true
|
||||||
strip = true
|
strip = true
|
||||||
|
|
||||||
[build-dependencies]
|
|
||||||
built = { version = "0", features = ["git2"] }
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
azalea = { git = "https://github.com/azalea-rs/azalea.git" }
|
azalea = { git = "https://github.com/azalea-rs/azalea.git" }
|
||||||
bevy_app = "0"
|
bevy_app = "0"
|
||||||
bevy_log = "0"
|
bevy_log = "0"
|
||||||
clap = { version = "4", features = ["derive", "string"] }
|
clap = { version = "4", features = ["derive"] }
|
||||||
console-subscriber = { version = "0", optional = true }
|
console-subscriber = { version = "0", optional = true }
|
||||||
futures = "0"
|
futures = "0"
|
||||||
futures-locks = "0"
|
futures-locks = "0"
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
use crate::build_info;
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use std::{net::SocketAddr, path::PathBuf};
|
use std::{net::SocketAddr, path::PathBuf};
|
||||||
|
|
||||||
/// A Minecraft utility bot
|
/// A Minecraft utility bot
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
#[command(version = build_info::version_formatted())]
|
|
||||||
pub struct Arguments {
|
pub struct Arguments {
|
||||||
/// Path to main Lua file
|
/// Path to main Lua file
|
||||||
#[arg(short, long)]
|
#[arg(short, long)]
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
pub mod built {
|
|
||||||
include!(concat!(env!("OUT_DIR"), "/built.rs"));
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn version_formatted() -> String {
|
|
||||||
format!(
|
|
||||||
"v{} ({})",
|
|
||||||
env!("CARGO_PKG_VERSION"),
|
|
||||||
built::GIT_COMMIT_HASH_SHORT.unwrap_or("unknown commit")
|
|
||||||
)
|
|
||||||
}
|
|
@ -29,7 +29,7 @@ impl CommandSource {
|
|||||||
self.state.lua.globals().get::<Function>("ncr_encrypt"),
|
self.state.lua.globals().get::<Function>("ncr_encrypt"),
|
||||||
) && let Ok(encrypted) = encrypt.call::<String>((options, prepend_header(&chunk)))
|
) && let Ok(encrypted) = encrypt.call::<String>((options, prepend_header(&chunk)))
|
||||||
{
|
{
|
||||||
chunk = encrypted;
|
chunk = encrypted
|
||||||
}
|
}
|
||||||
self.client.chat(
|
self.client.chat(
|
||||||
&(if self.message.is_whisper()
|
&(if self.message.is_whisper()
|
||||||
|
@ -36,8 +36,8 @@ pub async fn handle_event(client: Client, event: Event, state: State) -> anyhow:
|
|||||||
&& let Ok(trimmed) = trim_header(&decrypted)
|
&& let Ok(trimmed) = trim_header(&decrypted)
|
||||||
{
|
{
|
||||||
ncr_options = Some(options);
|
ncr_options = Some(options);
|
||||||
trimmed.clone_into(&mut content);
|
content = trimmed.to_owned();
|
||||||
info!("decrypted message from {sender}: {content}");
|
info!("Decrypted message from {sender}: {content}");
|
||||||
}
|
}
|
||||||
|
|
||||||
if message.is_whisper() && globals.get::<Vec<String>>("Owners")?.contains(&sender) {
|
if message.is_whisper() && globals.get::<Vec<String>>("Owners")?.contains(&sender) {
|
||||||
@ -176,19 +176,12 @@ pub async fn handle_event(client: Client, event: Event, state: State) -> anyhow:
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn call_listeners<T: Clone + IntoLuaMulti + Send + 'static>(
|
async fn call_listeners<T: Clone + IntoLuaMulti>(state: &State, event_type: &str, data: T) {
|
||||||
state: &State,
|
if let Some(listeners) = state.event_listeners.read().await.get(event_type) {
|
||||||
event_type: &'static str,
|
|
||||||
data: T,
|
|
||||||
) {
|
|
||||||
if let Some(listeners) = state.event_listeners.read().await.get(event_type).cloned() {
|
|
||||||
for (id, callback) in listeners {
|
for (id, callback) in listeners {
|
||||||
let data = data.clone();
|
if let Err(error) = callback.call_async::<()>(data.clone()).await {
|
||||||
tokio::spawn(async move {
|
|
||||||
if let Err(error) = callback.call_async::<()>(data).await {
|
|
||||||
error!("failed to call lua event listener {id} for {event_type}: {error:?}");
|
error!("failed to call lua event listener {id} for {event_type}: {error:?}");
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ use azalea::blocks::{
|
|||||||
};
|
};
|
||||||
use mlua::{Function, Lua, Result, Table};
|
use mlua::{Function, Lua, Result, Table};
|
||||||
|
|
||||||
pub fn register_globals(lua: &Lua, globals: &Table) -> Result<()> {
|
pub fn register_functions(lua: &Lua, globals: &Table) -> Result<()> {
|
||||||
globals.set(
|
globals.set(
|
||||||
"get_block_from_state",
|
"get_block_from_state",
|
||||||
lua.create_function(get_block_from_state)?,
|
lua.create_function(get_block_from_state)?,
|
||||||
|
@ -3,7 +3,7 @@ use futures::executor::block_on;
|
|||||||
use mlua::{Function, Lua, Result, Table};
|
use mlua::{Function, Lua, Result, Table};
|
||||||
use std::time::{SystemTime, UNIX_EPOCH};
|
use std::time::{SystemTime, UNIX_EPOCH};
|
||||||
|
|
||||||
pub fn register_globals(lua: &Lua, globals: &Table, event_listeners: ListenerMap) -> Result<()> {
|
pub fn register_functions(lua: &Lua, globals: &Table, event_listeners: ListenerMap) -> Result<()> {
|
||||||
let m = event_listeners.clone();
|
let m = event_listeners.clone();
|
||||||
globals.set(
|
globals.set(
|
||||||
"add_listener",
|
"add_listener",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use log::{debug, error, info, trace, warn};
|
use log::{debug, error, info, trace, warn};
|
||||||
use mlua::{Lua, Result, Table};
|
use mlua::{Lua, Result, Table};
|
||||||
|
|
||||||
pub fn register_globals(lua: &Lua, globals: &Table) -> Result<()> {
|
pub fn register_functions(lua: &Lua, globals: &Table) -> Result<()> {
|
||||||
globals.set(
|
globals.set(
|
||||||
"error",
|
"error",
|
||||||
lua.create_function(|_, message: String| {
|
lua.create_function(|_, message: String| {
|
||||||
|
@ -9,7 +9,7 @@ pub mod player;
|
|||||||
pub mod system;
|
pub mod system;
|
||||||
pub mod vec3;
|
pub mod vec3;
|
||||||
|
|
||||||
use crate::{ListenerMap, build_info::built};
|
use crate::ListenerMap;
|
||||||
use mlua::{Lua, Table};
|
use mlua::{Lua, Table};
|
||||||
use std::{io, time::Duration};
|
use std::{io, time::Duration};
|
||||||
|
|
||||||
@ -24,15 +24,11 @@ pub enum Error {
|
|||||||
ReadFile(io::Error),
|
ReadFile(io::Error),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn register_globals(
|
pub fn register_functions(
|
||||||
lua: &Lua,
|
lua: &Lua,
|
||||||
globals: &Table,
|
globals: &Table,
|
||||||
event_listeners: ListenerMap,
|
event_listeners: ListenerMap,
|
||||||
) -> mlua::Result<()> {
|
) -> mlua::Result<()> {
|
||||||
globals.set("CARGO_PKG_VERSION", env!("CARGO_PKG_VERSION"))?;
|
|
||||||
globals.set("GIT_COMMIT_HASH", built::GIT_COMMIT_HASH)?;
|
|
||||||
globals.set("GIT_COMMIT_HASH_SHORT", built::GIT_COMMIT_HASH_SHORT)?;
|
|
||||||
|
|
||||||
globals.set(
|
globals.set(
|
||||||
"sleep",
|
"sleep",
|
||||||
lua.create_async_function(async |_, duration: u64| {
|
lua.create_async_function(async |_, duration: u64| {
|
||||||
@ -41,11 +37,11 @@ pub fn register_globals(
|
|||||||
})?,
|
})?,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
block::register_globals(lua, globals)?;
|
block::register_functions(lua, globals)?;
|
||||||
events::register_globals(lua, globals, event_listeners)?;
|
events::register_functions(lua, globals, event_listeners)?;
|
||||||
logging::register_globals(lua, globals)?;
|
logging::register_functions(lua, globals)?;
|
||||||
nochatreports::register_globals(lua, globals)?;
|
nochatreports::register_functions(lua, globals)?;
|
||||||
system::register_globals(lua, globals)
|
system::register_functions(lua, globals)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn reload(lua: &Lua, sender: Option<String>) -> Result<(), Error> {
|
pub fn reload(lua: &Lua, sender: Option<String>) -> Result<(), Error> {
|
||||||
|
@ -10,7 +10,7 @@ use ncr::{
|
|||||||
utils::{prepend_header, trim_header},
|
utils::{prepend_header, trim_header},
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn register_globals(lua: &Lua, globals: &Table) -> Result<()> {
|
pub fn register_functions(lua: &Lua, globals: &Table) -> Result<()> {
|
||||||
globals.set(
|
globals.set(
|
||||||
"ncr_aes_key_from_passphrase",
|
"ncr_aes_key_from_passphrase",
|
||||||
lua.create_function(|_, passphrase: Vec<u8>| {
|
lua.create_function(|_, passphrase: Vec<u8>| {
|
||||||
|
@ -6,7 +6,7 @@ use std::{
|
|||||||
thread,
|
thread,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn register_globals(lua: &Lua, globals: &Table) -> Result<()> {
|
pub fn register_functions(lua: &Lua, globals: &Table) -> Result<()> {
|
||||||
globals.set(
|
globals.set(
|
||||||
"system",
|
"system",
|
||||||
lua.create_function(|_, (command, args): (String, Option<Vec<OsString>>)| {
|
lua.create_function(|_, (command, args): (String, Option<Vec<OsString>>)| {
|
||||||
|
10
src/main.rs
10
src/main.rs
@ -1,14 +1,12 @@
|
|||||||
#![feature(let_chains)]
|
#![feature(let_chains)]
|
||||||
|
|
||||||
mod arguments;
|
mod arguments;
|
||||||
mod build_info;
|
|
||||||
mod commands;
|
mod commands;
|
||||||
mod events;
|
mod events;
|
||||||
mod http;
|
mod http;
|
||||||
mod lua;
|
mod lua;
|
||||||
mod particle;
|
mod particle;
|
||||||
|
|
||||||
use arguments::Arguments;
|
|
||||||
use azalea::{
|
use azalea::{
|
||||||
DefaultBotPlugins, DefaultPlugins, brigadier::prelude::CommandDispatcher, prelude::*,
|
DefaultBotPlugins, DefaultPlugins, brigadier::prelude::CommandDispatcher, prelude::*,
|
||||||
};
|
};
|
||||||
@ -48,14 +46,14 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
#[cfg(feature = "console-subscriber")]
|
#[cfg(feature = "console-subscriber")]
|
||||||
console_subscriber::init();
|
console_subscriber::init();
|
||||||
|
|
||||||
let args = Arguments::parse();
|
let args = arguments::Arguments::parse();
|
||||||
let script_path = args.script.unwrap_or(PathBuf::from(DEFAULT_SCRIPT_PATH));
|
let script_path = args.script.unwrap_or(PathBuf::from(DEFAULT_SCRIPT_PATH));
|
||||||
let event_listeners = Arc::new(RwLock::new(HashMap::new()));
|
let event_listeners = Arc::new(RwLock::new(HashMap::new()));
|
||||||
let lua = unsafe { Lua::unsafe_new() };
|
let lua = unsafe { Lua::unsafe_new() };
|
||||||
let globals = lua.globals();
|
let globals = lua.globals();
|
||||||
|
|
||||||
globals.set("script_path", &*script_path)?;
|
globals.set("script_path", &*script_path)?;
|
||||||
lua::register_globals(&lua, &globals, event_listeners.clone())?;
|
lua::register_functions(&lua, &globals, event_listeners.clone())?;
|
||||||
lua.load(
|
lua.load(
|
||||||
read_to_string(script_path)
|
read_to_string(script_path)
|
||||||
.expect(&(DEFAULT_SCRIPT_PATH.to_owned() + " should be in current directory")),
|
.expect(&(DEFAULT_SCRIPT_PATH.to_owned() + " should be in current directory")),
|
||||||
@ -82,8 +80,8 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
OpenOptions::new()
|
OpenOptions::new()
|
||||||
.append(true)
|
.append(true)
|
||||||
.create(true)
|
.create(true)
|
||||||
.open(&log_file)
|
.open(log_file)
|
||||||
.expect(&(log_file + " should be accessible")),
|
.expect("log file should be accessible"),
|
||||||
)
|
)
|
||||||
.boxed()
|
.boxed()
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user