Game Announcement Commands Documentation
Overview
This bot provides three commands for creating and sharing game announcements across Discord servers:
/creategameannouncement- Create a new game announcement with a web configuration form/repostgameannouncement- Move the server's announcement into the current channel/childgameannouncement- Cross-post an existing announcement to another server or channel
/creategameannouncement Command
Moderator only: This command requires the server's configured moderator role.
Opens a private, single-use web link that walks you through a configuration form. When you submit the form, the bot posts the announcement directly to the channel where you ran the command.
Optional Arguments
┌──────────┬──────┬────────────────────────────────────────────────────────────────┐
│ Argument │ Type │ Description │
├──────────┼──────┼────────────────────────────────────────────────────────────────┤
│ pingrole │ Role │ Role to ping in the message when the announcement is posted │
└──────────┴──────┴────────────────────────────────────────────────────────────────┘
When pingrole is set, the role mention is included as the message text above the announcement embed once you submit the web form. The role must be mentionable (or the bot must have the Mention @everyone, @here and All Roles permission in the channel) — otherwise the command refuses with an error, since the ping would notify no one.
All other configuration happens in the web form.
Web Form Fields
Basic Info
┌────────────────┬─────────┬─────────────────────────────────────────────────┬──────────┐
│ Field │ Type │ Description │ Required │
├────────────────┼─────────┼─────────────────────────────────────────────────┼──────────┤
│ Title │ String │ Announcement title (max 200 characters) │ Yes │
│ Description │ String │ Body text shown in the embed (max 4096 chars) │ No │
│ Date │ String │ Game date chosen with date picker │ No │
│ Max Players │ Integer │ Player cap for the accepted option (1–100) │ No │
│ Rules Link │ String │ Discord channel or message link for rules │ No │
│ Restricted To │ Role │ Role shown in the embed as a participation gate │ No │
│ Mod Team │ Role │ Role for moderators to be listed in the embed │ No │
│ Generate Invite│ Boolean │ Include a server invite link in the embed │ No │
│ Media │ File │ Image, GIF, or video sent to the bot via DM │ No │
└────────────────┴─────────┴─────────────────────────────────────────────────┴──────────┘
Note:
Restricted Tois enforced. Users who do not have the specified role are blocked from signing up — the bot rejects their button click with an error message.
Note:
Mod Teamlists each moderator's display name or username for the server the embed is posted on.
Note:
Rules Linkmust be a Discord channel link (discord.com/channels/...) or a direct message link. External URLs are not accepted.
Signup Options
Signup options become the buttons participants click to sign up. There must always be an Accepted and a Declined option. You can optionally include a Tentative option and up to two additional custom options. The total across builtin and custom options is capped at five.
┌──────────────┬────────────────────────────────────────────────────────────────────────┐
│ Option Type │ Description │
├──────────────┼────────────────────────────────────────────────────────────────────────┤
│ Accepted │ Required. Player is signing up. Counts toward the player cap. │
│ Declined │ Required. Player is explicitly declining. │
│ Tentative │ Optional builtin. Player will be asked to join if slots are available │
│ Custom │ Optional. Any label and emoji you choose (max 50 characters each). │
└──────────────┴────────────────────────────────────────────────────────────────────────┘
Each option other than declines can be linked to a Discord role: when a player signs up with that option, the bot automatically assigns them that role. You can also set a flag to clear the role before adding it, which ensures the role only contains players for each category when the game announcement is closed.
Signup Questions
Questions appear in the embed and players may answer them via a separate button after signing up. You can add up to ten questions, each with one to four answer options. Each option can have an emoji and an optional label. All signup questions are optional.
┌────────────────┬──────────────────────────────────────────────────────────────────────┐
│ Limit │ Value │
├────────────────┼──────────────────────────────────────────────────────────────────────┤
│ Max questions │ 10 │
│ Question text │ 1–200 characters │
│ Options per q │ 1–4 │
│ Option emoji │ Required (max 50 characters) │
│ Option label │ Optional (max 50 characters) │
└────────────────┴──────────────────────────────────────────────────────────────────────┘
Banned Players
Up to 200 Discord user IDs or identifiers can be listed as banned. Banned players cannot interact with the signup buttons.
Adding Media
The web form does not accept file uploads directly. To attach an image or GIF:
- Click Send me instructions via DM in the form. The bot sends you a DM with instructions.
- Reply to that DM with your media file.
- Click Refresh media to refresh the form.
- The form will display the media.
Images and GIFs are embedded directly inside the announcement embed. Videos are not supported — if a video is the most recent DM media, it will be ignored when the announcement is posted.
What Gets Posted
When you submit the form, the bot sends two messages to the channel:
- Announcement embed — title, description, date, role restrictions, mod team, rules, max players, signup questions, and media.
- Signup embed — shows the live signup list. Below it are the signup option buttons and, if you configured questions, an Answer Questions button.
The announcement also receives a share code (a short uppercase string like AB3KZ7) that other servers can use to cross-post it to additional Discord servers with /childgameannouncement.
Important: The configuration link sent by this command is private and single-use. Do not share it. It expires after use.
Example
/creategameannouncement
The bot replies privately with a link like:
Configure your game announcement here:
https://village-vote.fun/create-game-announcement/abc123xyz
DO NOT SHARE THIS LINK.
Open the link, fill in the form, and click either Preview via DM or Post Announcement.
/repostgameannouncement Command
Moderator only: This command requires the server's configured moderator role.
Reposts the server's game announcement into the channel where you run the command. Use it to move the announcement to a different channel, or to bring it back to the bottom of a busy channel.
Arguments
This command takes no arguments. It acts on the server's existing announcement (the one created with /creategameannouncement).
How It Works
- The bot finds the announcement for this server and fetches any media attached to the original post.
- The old announcement and signup messages are deleted from wherever they were posted (failures are tolerated, for example if they were already removed).
- A fresh announcement embed and signup embed, with the signup buttons, are posted in the current channel.
- The signup embed is refreshed with everyone who has already signed up, so no signups are lost.
- The announcement record is updated to point at the new messages.
Example
/repostgameannouncement
The bot replies privately:
✅ Reposted Game Night — Season 4 in this channel.
If the server has no announcement yet, the command replies No game announcement exists for this server.
/childgameannouncement Command
Cross-post an existing game announcement into the current channel. The announcement must have already been posted in its home server first. Each server can only have one posting per announcement.
Arguments
┌───────────┬────────┬──────────┬──────────────────────────────────────────────────────────────┐
│ Argument │ Type │ Required │ Description │
├───────────┼────────┼──────────┼──────────────────────────────────────────────────────────────┤
│ sharecode │ String │ Yes │ The share code of the announcement to link (e.g. "AB3KZ7") │
│ pingrole │ Role │ No │ Role to ping in the message when the posting is created │
└───────────┴────────┴──────────┴──────────────────────────────────────────────────────────────┘
When pingrole is set, the role mention (a role from the current server) is included as the message text above the cross-posted announcement embed. The role must be mentionable, or the bot must have the Mention @everyone, @here and All Roles permission in the channel.
How It Works
- The bot looks up the announcement by share code.
- It verifies the announcement has been posted in its home server and that the current server does not already have a posting.
- It posts announcement messages to the current channel (same structure as the original — a description embed and a signup embed with buttons).
- The signup embed is populated with any players who have already signed up through the home posting or other child postings.
Differences from the Parent Posting
Child postings share the same announcement content, but a few things are intentionally omitted or adapted:
┌─────────────────┬──────────────────────────────────────────────────────────┐
│ Field │ Behavior in child posting │
├─────────────────┼──────────────────────────────────────────────────────────┤
│ Mod Team │ Omitted │
│ Signup buttons │ Work identically; signups are tracked per-posting │
│ Media │ Re-downloaded from the parent message and re-uploaded │
└─────────────────┴──────────────────────────────────────────────────────────┘
Note: Announcements with a Restricted To role cannot be cross-posted. Because the role only exists on the home server, child servers would have no way to enforce the signup restriction. The command will refuse with an error if a share code points to a role-restricted announcement.
Error Conditions
┌────────────────────────────────────────┬───────────────────────────────────┐
│ Error │ Meaning │
├────────────────────────────────────────┼───────────────────────────────────┤
│ No announcement found for share code │ The share code is invalid │
│ Announcement has a restricted role │ Cross-posting is blocked │
│ This server already has a posting │ Only one posting per server │
│ I can't ping that role │ Role not mentionable & no perms │
└────────────────────────────────────────┴───────────────────────────────────┘
Example
/childgameannouncement sharecode:AB3KZ7
The bot replies privately:
✅ Posted Game Night — Season 4 in this channel.
Finding the Share Code
The share code is a six-character uppercase string (e.g. AB3KZ7) assigned when an announcement is created. To find it, ask the moderator who created the announcement — it is displayed in the announcement management web form after the form is submitted.
Tips and Best Practices
Setting Up an Announcement
- Fill in the Date field so players know when to expect the game. The date is only informational and is not enforced by the bot.
- Add optional signup questions if you need to collect player preferences (e.g. experience level, character choices, timezone availability).
- Use Max Players with a player cap if you want the signup list to show how many spots remain.
- Attach media to make the announcement visually distinctive.
Role-Linked Signup Options
- Linking a signup option to a role is useful for automatically tagging accepted players with a game role.
- Enable empty role before adding when you want the role to act as a collection for players who have signed up — it clears the role before assigning players to it, so the role only contains signed up players when the announcement closes.
Cross-Server Announcements
- Only one child posting is allowed per server per announcement. If you need to move the posting to a different channel in the same server, you will need to delete the existing posting manually first via the management form on the web.