Bot that gets all the info needed from a Foxhole War.
/schedule-report; everything else works without itIt does not need Add Reactions or Send Messages in Threads. It never reacts to messages, never
reads them, and runs on the GUILDS gateway intent alone.
Run /set-guild-settings first and pick your shard (Able, Baker or Charlie) and whether replies
should be public or private. Until that’s done, the other commands will just point you back here
— a new server is never silently assigned a shard.
/get-map — render one region, with optional text labels./full-map — render the whole world map, all 53 regions on one image. Free for everyone; it
takes a few seconds, so the reply arrives after a short wait./war-report — casualties, enlistments and day of war for one region./war-state — the global war state for the server’s shard./set-guild-settings — set the shard, reply visibility and the server’s timezone (needs
Administrator)./schedule-report — post a region’s map, or the whole world map, to a channel on a recurring
schedule (needs Manage Webhooks). Scheduling the world map needs approval first — see below./request-full-map-schedule — apply to schedule world-map reports (needs Manage Webhooks)./remove-report — delete a schedule and its webhook (needs Manage Webhooks)./schedule-help — how schedules are timed, in the client./schedule-report asks for a frequency from a list — every 30 minutes through weekly — so
there is no phrase to get right. at_time (24-hour HH:MM) is what the cadence lines up with,
and it isn’t only for daily reports:
every 6 hours at 03:30 → 03:30, 09:30, 15:30, 21:30every 30 minutes at 00:07 → :07, :37daily at 18:00 → 18:00, once a dayLeft blank it means the top of the hour. These are clock times, not “from now”: every 6
hours created at 09:20 next fires at 12:00, not 15:20.
Timezones. /set-guild-settings sets your server’s default and /schedule-report can
override it for one report — both from an autocomplete of IANA names like Europe/Berlin, so
daylight saving is handled for you. A schedule keeps the timezone it was created with, even if
you change the server default later.
If the list doesn’t cover it, Custom… still takes a plain-English phrase or a 6-field cron
expression (sec min hour day month weekday). Either way, the reply shows the next three
times it will fire before anything is saved — if those aren’t what you meant, nothing has been
created yet. Schedule names must be unique within a server.
Creating a schedule doesn’t post a report there and then. The first one arrives at the first of those three times: an hourly report created at 10:05 posts at 11:00, not at 10:05.
How often reports can post. At most every 30 minutes, and at most every hour for the
world map, which re-renders every region each time. Faster than that stops reading as a war
report and starts reading as spam in the channel. /get-map and /full-map on demand have no
such limit.
/full-map is free for everyone, needs no approval, and you can run it as often as you like.
Putting the world map on a recurring schedule is the one thing that needs asking first. Run
/request-full-map-schedule, fill in the short form, and you’ll get an answer in the channel you
nominated.
No payment is involved and there is no paid tier. The reason for the form is arithmetic: an on-demand render costs one request that somebody deliberately made, while a scheduled one stitches all 53 regions on a timer, forever, whether or not anyone looks at it. The form keeps that recurring load to a number somebody has actually seen. It’s a queue, not a price.
If approval is later withdrawn, the schedule is paused, not deleted — the channel is told once, and it resumes on its own if approval comes back. Single-region schedules are never affected.