⚔ Plane of Knowledge EQ Buff Bot

EQBuffBot

Automated Buff Management for EverQuest

Monitor your log. Match the tell. Cast the spell. Preserve your sanity.

Windows 10/11 Python 3.11+ System Tray YAML Config
📜

What is EQBuffBot?

Are you a cleric, shaman, enchanter, or druid whose tells channel is a never-ending flood of "SoW me!", "Haste please!", and "Buffs??"? Does your guild rely on you to keep everyone buffed through a long raid night?

EQBuffBot is a lightweight Windows utility that watches your EverQuest log file in real time and automatically responds to incoming tells with the correct spell sequences — so you can focus on playing instead of playing secretary.

🐺

SoW Stations

Park a druid or shaman in the bazaar and let EQBuffBot handle the endless SoW requests automatically.

Raid Buffing

Set up buff stations in your guild hall. Let your alts hand out haste, clarity, and buffs while you focus.

🎯

Targeted Spells

Give specific guildmates custom buff sets. Raifin gets Speed of Shissar. Everyone else gets the default.

🧠

Sanity Preservation

Stop clicking the same spell buttons 200 times a raid night. Let the bot do the repetitive work.

How It Works

EQBuffBot operates through a simple read → match → act pipeline:

1

Monitor the Log

Tails your EverQuest log file in real time, detecting new lines as EQ writes them. Handles log rotation automatically.

[Sun Mar 08 12:34:56 2026] Raifin tells you, 'haste please'
2

Parse Tells

Each log line is parsed with a regex to extract the sender's name and message content from direct tells.

3

Match Triggers

The message is compared against your configured triggers (case-insensitive substring match). Optionally filtered by a sender whitelist and governed by a global cooldown.

4

Send Keystrokes to EQ

EQBuffBot focuses the EverQuest window and sends the configured action sequence — commands, spell casts, and replies — exactly as if you typed them.

/rtar → /cast Talisman of Celerity → /r You should be hasted now!
Example Scenario

Tehom is an enchanter on raid night. His tells are blowing up with haste requests. With EQBuffBot configured, each "haste please" tell automatically triggers /rtar (target last teller), /cast Talisman of Celerity, and a reply — all without Tehom lifting a finger. His sanity survives the night.

Features

Real-time log monitoring — Tails your EQ log file with watchdog, detecting tells the instant they appear. Handles log rotation without missing a line.
Flexible trigger matching — Each trigger matches a substring anywhere in the tell message (case-insensitive). Supports unlimited triggers per config.
Sender whitelist — Restrict individual triggers to a specific list of character names, or open them to everyone with null.
Default / catch-all trigger — Configure a fallback response for tells that don't match any other trigger. Great for guild hall buff bots.
Timed action sequences — Each trigger fires a list of actions in order, with configurable delay_after between them — long enough for spells to land.
Global cooldown — Prevents trigger spam. Configurable minimum gap between any two trigger fires.
Special key support — Use {ENTER}, {TAB}, {F1}{F12}, arrow keys, and more in action sequences.
System tray interface — Runs quietly in the background. Pause, resume, reload config, open logs, or quit from the tray icon — no terminal needed.
Hot config reload — Change triggers, add new ones, or update spell sequences without restarting the bot.
Rotating log file — Bot activity is logged to eqbuffbot.log (5 MB × 3 backups). See exactly which tells fired which triggers.
Multiple configs — Run different configs for different characters or scenarios via the --config flag.
No admin rights required — Runs as a standard Python application. No special Windows permissions needed.

Installation

Requirements

  • Windows 10 or 11
  • EverQuest with logging enabled (/log on in-game)
  • Python 3.11 or newer
  • Python packages: PyYAML, watchdog, pywinauto, pywin32, pystray, Pillow

Step 1 — Enable EQ Logging

Log into EverQuest and type /log on to enable log file output. Log files are written to:

C:\Users\Public\Daybreak Game Company\Installed Games\EverQuest\Logs\

Step 2 — Install Dependencies

With a virtual environment (recommended):

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Or globally:

pip install -r requirements.txt

Step 3 — Edit config.yaml

Open config.yaml and set your character name, log file path, and triggers. See the Configuration section below.

Step 4 — Run the Bot

Double-click run.bat, or from a terminal:

python -m eqbuffbot.main

To use a different config file:

python -m eqbuffbot.main --config mychar_config.yaml
python -m eqbuffbot.main -c mychar_config.yaml

The bot will minimize to your system tray and begin monitoring immediately.

📋

Configuration

All settings live in config.yaml. The file has two sections: global settings and triggers.

Global Settings

SettingDescription
character_nameYour character's name
log_fileFull path to your EQ log file
eq_window_titlePart of the EverQuest window title (used to locate the window)
global_cooldownMinimum seconds between any two trigger fires (prevents spam)

Triggers

Each trigger watches for a keyword in incoming tells and fires a sequence of actions when matched.

triggers:
  - name: "Spirit of the Wolf"
    match: "sow"              # case-insensitive substring match
    sender_whitelist: null    # null = anyone can trigger this

    actions:
      - text: "{ENTER}/rtar{ENTER}"
        delay_after: 0.5      # seconds before next action
      - text: "{ENTER}/cast 8{ENTER}"
        delay_after: 1.5
      - text: "{ENTER}/r You are fast now{ENTER}"
        delay_after: 0.0

Sender Whitelist

Restrict a trigger to specific characters. Useful for private buff sets or trusted guildmates only.

sender_whitelist:
  - "Guildmaster"
  - "Altchar"
  - "Raifin"

Set to null to respond to tells from anyone.

Default / Catch-All Trigger

A trigger with default: true fires when no other trigger matched. Perfect for guild hall buff bots that need to reply with a help message.

- name: "default"
  default: true
  sender_whitelist: null
  actions:
    - text: "{ENTER}/r Available commands: sow, haste, buffs{ENTER}"
      delay_after: 0.0
Heads up: The default trigger responds to every tell that doesn't match another trigger — including normal chat. Use it when your bot is parked in the guild hall, not when you're actively playing.

Special Keys Reference

TokenKey Sent
{ENTER}Enter
{TAB}Tab
{ESC}Escape
{SPACE}Space
{F1}–{F12}Function keys
{UP} {DOWN} {LEFT} {RIGHT}Arrow keys
{DELETE}Delete
{BACK}Backspace
🗺

System Tray

EQBuffBot runs silently in the Windows system tray. Right-click the tray icon for these options:

Pause / Resume

Temporarily stop responding to tells without closing the bot. Toggle back when you're ready.

Reload Config

Reload config.yaml on the fly. Add triggers, change spells, update whitelists — no restart needed.

📄
Open Log

Opens eqbuffbot.log so you can see exactly which tells were received and which triggers fired.

Quit

Gracefully shut down all monitoring threads and exit.

🔍

EQ Log Format

EverQuest writes log lines in this format. EQBuffBot parses the sender name and message from direct tell lines:

[Sun Mar 08 12:34:56 2026] SenderName tells you, 'message here'

Enable logging in-game with /log on. Log files are located at:

C:\Users\Public\Daybreak Game Company\Installed Games\EverQuest\Logs\

The filename includes your character name and server, e.g. eqlog_Tehom_veeshan.txt.