A Veloren bot that buys, sells and trades with players.
Go to file
2024-07-16 08:18:06 -04:00
assets Add price checking based on item name 2024-07-16 05:31:24 -04:00
config Make announcements optional; Add docs 2024-07-13 03:51:37 -04:00
src Improve is_admin function and the admin docs 2024-07-16 08:18:06 -04:00
.gitignore Separate secrets and config files 2024-07-08 14:09:15 -04:00
Cargo.lock Make improvement to avoid spamming the server 2024-07-15 23:26:37 -04:00
Cargo.toml Make improvement to avoid spamming the server 2024-07-15 23:26:37 -04:00
Dockerfile Add even more polish 2024-07-08 22:01:07 -04:00
LICENSE Expand README; Add LICENSE 2024-07-11 04:32:37 -04:00
README.md Improve is_admin function and the admin docs 2024-07-16 08:18:06 -04:00
rust-toolchain Initial commit 2024-07-03 19:04:49 -04:00

Veloren Trading Bot

A bot that buys, sells and trades with players.

The bot is containerized and can be run without compiling or building anything. Alternatively, you can clone this repository and build the image yourself or build the binary directly with Cargo if you are familiar with Rust.

Prerequisites

You must have either Docker or Podman installed.

Usage

All of these steps can be done with Docker but Podman is shown for the examples. If you use Docker, just replace "podman" with "docker" in your commands.

Setup

Create a "secrets.toml" file:

# secrets.toml
username = "bot_username"
password = "bot_password"
character = "bot_character"
admins = ["my_username"] # You may add usernames or UUIDs to this list. The only advantage of using UUIDs is that it will persist accross changes to your username or player alias.

Then create a secret to pass the file securely to the container.

podman secret create secrets.toml secrets.toml

You will also need a "config.toml" and it needs it be in a "config" directory that can be mounted to the container:

# config/config.toml
position = [0, 0, 0] # Change these to the desired X, Y, Z coordinates. The bot will try to stand here, but the coordinates must be close to the bot's spawn point.
orientation = 0 # 0 = North, 90 = West, 180 = South, 270 = East
announcement = "I love cheese! I am at {location}." # Optional. Announcements are sent every 45 minutes. Use {location} to insert the bot's current location.

[buy_prices]
"food.cheese" = 50

[sell_prices]
"consumable.potion_minor" = 150

Running

Run the container:

podman run \
    --detach \
    --name trade_bot \
    --secret secrets.toml \
    --volume ./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

View the log output with podman logs -f trade_bot.

Building

Clone this repository. From the project root:

podman build . -t trade_bot

Then follow the above steps with the tag "trade_bot" instead of "git.jeffa.io/jeff/trade_bot".

In-Game Commands

The bot is able to respond to the following commands, which must be sent via "/tell".

  • price [search term]: Returns the buy/sell offers of any item whose item definition ID contains the search term.
  • admin_access: Admin-only, prompts the bot to send a trade invite to the sender, after which it will give away and accept any items until the trade ends.
  • sort [count (optional)]: Admin-only, sorts the inventory once or the given number of times.
  • pos [x] [y] [z]: Admin-only, sets the bot's desired position where it will try to stand (must be close to the bot's current position)
  • ori [0-360]: Admin-only, sets the bot's desired orientation (or facing direction)