Polish and add a README
This commit is contained in:
parent
6cd9d71b49
commit
6a020aa6e6
66
README.md
Normal file
66
README.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# Veloren Trading Bot
|
||||||
|
|
||||||
|
A bot that buys, sells and trades with players.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
All of these steps can be done with docker instead of podman.
|
||||||
|
|
||||||
|
### Running from pre-built image
|
||||||
|
|
||||||
|
#### Setup
|
||||||
|
|
||||||
|
Create a "secrets.toml" file:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
# secrets.toml
|
||||||
|
username = "my_username"
|
||||||
|
password = "my_password"
|
||||||
|
```
|
||||||
|
|
||||||
|
Then create a secret to pass the file securely to the container.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
podman secret create secrets.toml secrets.toml
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
You will also need a "config.toml":
|
||||||
|
|
||||||
|
```toml
|
||||||
|
# config.toml
|
||||||
|
character = "my_character"
|
||||||
|
position = [0.0, 0.0, 0.0] # Change these to the desired X, Y, Z coordinates
|
||||||
|
orientation = "West"
|
||||||
|
|
||||||
|
[buy_prices]
|
||||||
|
"common.items.food.cheese" = 50
|
||||||
|
|
||||||
|
[sell_prices]
|
||||||
|
"common.items.armor.boreal.back" = 250_000
|
||||||
|
```
|
||||||
|
|
||||||
|
Place this config file inside a directory called "config".
|
||||||
|
|
||||||
|
#### Running
|
||||||
|
|
||||||
|
```sh
|
||||||
|
podman run \
|
||||||
|
--secret secrets.toml \
|
||||||
|
-v ./config/:/root/config/ \
|
||||||
|
--env CONFIG=/root/config/config.toml \
|
||||||
|
--env SECRETS=/run/secrets/secrets.toml \
|
||||||
|
--env RUST_LOG=trade_bot \
|
||||||
|
git.jeffa.io/jeff/trade_bot
|
||||||
|
```
|
||||||
|
|
||||||
|
### Building
|
||||||
|
|
||||||
|
From the directory root:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
podman build . -t trade_bot
|
||||||
|
```
|
||||||
|
|
||||||
|
Then follow the [above](#Running_from_pre-built_image) steps with the tag "trade_bot" instead of
|
||||||
|
"git.jeffa.io/jeff/trade_bot".
|
@ -1,5 +1,5 @@
|
|||||||
character = "crabobot_test"
|
character = "Obarc (Merchant)"
|
||||||
position = [17722.0, 14963.0, 237.0]
|
position = [17726.0, 14960.0, 237.0]
|
||||||
orientation = "West"
|
orientation = "West"
|
||||||
|
|
||||||
[buy_prices]
|
[buy_prices]
|
||||||
|
@ -72,7 +72,7 @@ impl Bot {
|
|||||||
.characters
|
.characters
|
||||||
.iter()
|
.iter()
|
||||||
.find(|character_item| character_item.character.alias == character)
|
.find(|character_item| character_item.character.alias == character)
|
||||||
.expect("No characters to select")
|
.expect(&format!("No character named {character}"))
|
||||||
.character
|
.character
|
||||||
.id
|
.id
|
||||||
.expect("Failed to get character ID");
|
.expect("Failed to get character ID");
|
||||||
|
20
src/main.rs
20
src/main.rs
@ -1,10 +1,6 @@
|
|||||||
mod bot;
|
mod bot;
|
||||||
|
|
||||||
use std::{
|
use std::{collections::HashMap, env::var, fs::read_to_string};
|
||||||
collections::HashMap,
|
|
||||||
env::{args, var},
|
|
||||||
fs::read_to_string,
|
|
||||||
};
|
|
||||||
|
|
||||||
use bot::Bot;
|
use bot::Bot;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@ -28,21 +24,19 @@ fn main() {
|
|||||||
env_logger::init();
|
env_logger::init();
|
||||||
|
|
||||||
let secrets = {
|
let secrets = {
|
||||||
let config_path =
|
let secrets_path =
|
||||||
var("SECRETS").expect("Provide a SECRETS variable specifying the secrets file");
|
var("SECRETS").expect("Provide a SECRETS variable specifying the secrets file");
|
||||||
let file_content = read_to_string(config_path).expect("Failed to read secrets");
|
let file_content = read_to_string(secrets_path).expect("Failed to read secrets");
|
||||||
|
|
||||||
toml::from_str::<Secrets>(&file_content).expect("Failed to parse secrets")
|
toml::from_str::<Secrets>(&file_content).expect("Failed to parse secrets")
|
||||||
};
|
};
|
||||||
|
|
||||||
let config = {
|
let config = {
|
||||||
let config_path = args()
|
let config_path =
|
||||||
.nth(1)
|
var("CONFIG").expect("Provide a CONFIG variable specifying the config file");
|
||||||
.expect("Pass an argument specifying the config file");
|
let file_content = read_to_string(config_path).expect("Failed to read config");
|
||||||
let file_content =
|
|
||||||
read_to_string(&config_path).expect(&format!("Failed to read config at {config_path}"));
|
|
||||||
|
|
||||||
toml::from_str::<Config>(&file_content).expect("Failed to parse secrets")
|
toml::from_str::<Config>(&file_content).expect("Failed to parse config")
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut bot = Bot::new(
|
let mut bot = Bot::new(
|
||||||
|
Loading…
Reference in New Issue
Block a user