CheeseBot Documentation

Everything CheeseBot can do, in one place.


๐Ÿ” Permissions

When inviting CheeseBot to a server, grant the following permissions so all features work correctly.

PermissionWhy it's needed
View Channels/attendance reads voice channel membership to snapshot who's present
Send Messages/attendance posts the attendance embed; /fishlocator posts shareable images
Embed LinksRequired for Discord to render rich embeds (attendance results, fish locator)
Attach Files/attendance Excel (.xlsx) download; /fishlocator PNG image posts
Use Application CommandsRequired for all slash commands (/fishlocator, /nextboss, /attendance, /submitfish, /reminder-optout, /reminder-optin)
Send Direct MessagesRequired for contract renewal reminders โ€” the bot DMs members directly when their contract is approaching expiration

Note: Ephemeral-only commands (/nextboss, /submitfish, and the initial /fishlocator response) don't require Send Messages on their own โ€” but the "Post Image to Channel" button and /attendance do, so Send Messages is required for full functionality.


๐ŸŽฃ /fishlocator

Look up fishing spots for one or more fish by name.

Usage

/fishlocator name1: <fish name> [name2: <fish name>] [name3: <fish name>]

Parameters

ParameterRequiredDescription
name1YesName of the first fish to look up
name2NoOptional second fish name
name3NoOptional third fish name

Behavior

Sharing results as images

After results are displayed, a ๐Ÿ“ธ Post Image to Channel button lets you share them publicly. Each fish is posted as its own image message โ€” up to 3 separate images โ€” keeping them short and readable. Each image shows up to 3 locations per fish. The first image includes the CheeseBot header; the last includes a timestamp footer.

Example

/fishlocator name1: Coelacanth name2: Mudskipper

โฑ๏ธ /nextboss

Shows the next upcoming NA world boss and a live countdown.

Usage

/nextboss

Behavior

Example output

Next Boss: Garmoth
Starts: Saturday, March 1, 2026 9:00 PM
Time Remaining: in 2 hours

๐Ÿ“‹ /attendance

Snapshot who is in a voice channel and record attendance for a guild event.

Usage

/attendance

Behavior

Attendance History (web portal)

Guild admins can view a full history of attendance events for their server on the Server Management โ†’ Attendance History tab. Each row shows the event name, voice channel, requester, timestamp, and participant count. Clicking the โ–ผ button expands a row to show the full participant list (display name and username). An Excel download is also available for any past event.


๐Ÿ“ /submitfish

Get a quick link to the fish spot submission page without leaving Discord.

Usage

/submitfish

Behavior


๐Ÿ“… Contract Renewal Reminders

Automatically DM guild members before their contracts expire. Guild admins connect a Google Sheet; CheeseBot checks it daily and sends reminders without any manual work.

How it works

  1. A guild admin configures the Google Sheet connection on the Server Management page.
  2. CheeseBot reads the sheet once per day at 8 AM UTC and checks each member's expiration date.
  3. Two reminders are sent per contract cycle: an early warning (configurable, 1โ€“30 days in advance) and an expiration day notice.
  4. Each reminder is only ever sent once per member per expiration date โ€” changing the date in the sheet automatically triggers a new reminder.
  5. Members who do not wish to receive reminders can opt out using /reminder-optout in the server. Opted-out members are skipped during the daily check.

Google Sheet format

The sheet must have a header row. Column names are matched case-insensitively by keyword โ€” exact spelling doesn't matter as long as the keyword appears in the header.

Column keywordExample headerRequiredDescription
discordDiscord HandleYesMember's Discord username (e.g. guildmember, without the @)
expirExpiration DateYesAny standard date format โ€” 2026-06-01, June 1, 2026, etc.
memberMember NameNoDisplay name shown in reminder logs; falls back to the Discord handle if absent

DM message format

Guild admins can customize both reminder messages from the Server Management page. Custom messages support the placeholders {guild_name}, {date}, and {days} (advance warning only). If no custom message is set, the defaults below are used.

Reminder typeDefault message
Early warningโš ๏ธ Heads up โ€” your contract in [Server] expires on [Date] ([N] days from now).
Expiration day๐Ÿ”ด Your contract in [Server] expired today ([Date]). Please reach out to an officer to renew.

Server management tools

The Server Management page provides three inline tools for admins:

ToolWhat it does
Test ConnectionVerifies the sheet is accessible and detects required columns. Shows row count and column names.
Dry RunReads all sheet rows and validates each one โ€” checks that handles exist in the server, dates are parseable, and reports which reminders would fire today vs. already sent vs. broken. Nothing is sent.
Send Test Reminder to MyselfSends a real preview DM to the logged-in admin so they can see exactly what members will receive. Appears in the Recent Reminders Sent log.

Setup requirements


๐Ÿ”• /reminder-optout & /reminder-optin

Allow individual members to opt out of receiving contract renewal reminder DMs for the current server.

Usage

/reminder-optout
/reminder-optin

Behavior


๐Ÿง€ Web Portal

The web portal at cheesebot.io lets any Discord user submit fish spot discoveries and vote on community proposals. Fish admins have additional tools to review and manage the database.

Server admin features (guild admin login)

FeatureWhat you can do
Server list View all servers where you have Manage Server permission and CheeseBot is active.
Contract Renewals tab Configure contract renewal reminders: link a Google Sheet, set the advance-warning days, customize reminder messages, test the connection, run a dry run, and view the reminder log.
Attendance History tab Browse all attendance events recorded in the last 30 days. Expand any row to see the full participant list. Download any event as an Excel spreadsheet.

Community features (any Discord login)

FeatureWhat you can do
Fish Spot Submission Submit a new fish spot with fish name, location, rarity, an optional display name, and a screenshot. Pending proposals from other users are listed below the form with voting buttons.
Proposal voting Cast an โ–ฒ upvote or โ–ผ downvote on any pending proposal. You can switch your vote at any time. Proposals with a net score of โˆ’5 or worse are collapsed by default โ€” click to expand. Proposals with an acceptable score appear in /fishlocator results as (pending approval).

Fish spot rarity values

RarityDescription
PrizeHighest rarity
GoldHigh rarity
BlueMedium rarity
GreenCommon
WhiteMost common

Screenshot upload rules