Bot that gets all the info needed from a Foxhole War.
/schedule-report, /request-full-map-schedule and /remove-reportIt 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 currently needs no approval — see below./request-full-map-schedule — apply to schedule world-map reports (needs Manage Webhooks). Not
needed at the moment, since world-map schedules are open to everyone./remove-report — delete a schedule and its webhook (needs Manage Webhooks)./schedule-help — how schedules are timed, in the client.Reviewer-only commands:
/full-map-requests — review pending full-map scheduling applications (REVIEWER_IDS)./usage-stats — view global usage counts by day and week (REVIEWER_IDS)./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 open to every server for now, until enough usage has been seen to judge the load — just pick
the world map in /schedule-report. It re-renders all 53 regions on every post, which is why
world-map reports go out at most hourly. If that ever changes and needs approval again, existing
schedules are paused, not deleted, and the channel is told once.