Skip to main content

Overview

A form is a list of questions that members answer from a panel in Discord or from its own page on the web. Every answer arrives as a card in a review channel, with Accept, Deny and Open thread. Accepting or denying can give and take roles, sends the member a DM and is written to the log. Use it for staff applications, partner requests, event sign-ups, ban appeals that are not tied to a sanction (for those, see Appeals), or any question you want answered in order.
!form is a prefix command (aliases !forms, !application, !applications). Making and changing forms needs Manage Server. Reviewing needs Manage Server or one of the reviewer roles of the form. The dashboard has the same under Forms.

Set up a form in five steps

1

Create it

!form create staff Staff application makes a form called staff with the title members see (45 characters). A new form is closed until you open it.
liam types !form create staff Staff application and Petto answers that the form staff was made, that it is closed for now and what to do next

In Discord: a form made, closed until it is opened.

2

Add the questions

!form question add staff short How old are you? adds a question at the end. See Questions for the types and options.
liam types !form question add staff short How old are you? and Petto answers Question 1 added (Short text)

In Discord: the first question added.

3

Pick the review channel

!form set staff channel #applications is where the cards arrive. A form without a review channel cannot be opened.
liam types !form set staff channel #applications and Petto answers that channel of staff was saved

In Discord: the review channel set.

4

Open it

!form open staff lets members answer it.
liam types !form open staff and Petto answers that the form is open and members can fill it in from its panel

In Discord: the form opened.

5

Post a panel

!form panel #apply staff posts a button that opens the form. One panel can open several forms: !form panel #apply staff partner --style select makes a menu instead of buttons, and --web yes adds a Fill on the web link button.
liam types !form panel #apply staff partner; Petto posts the Applications card with the Apply and Partner request buttons and answers Panel posted with the link to it

In Discord: a panel with a button for each form.

The Applications panel with the menu Pick a form to fill in open: Apply and Partner request, each with its description

In Discord: the same panel with --style select.

Commands

liam types !form list: staff, partner and game-night with their title, state, questions and pending answers

In Discord: the forms of the server.

liam types !form close partner and Petto answers that it is closed and its panels say so

In Discord: a form closed.

liam types !form delete game-night and Petto answers that it was deleted and the answers are kept

In Discord: a form deleted; what members sent is kept.

form is the name or the number of a form. The number belongs to your server: the first form you make in it is number 1, whatever other servers have. A form that is a word is written in lowercase, with letters, numbers, - and _. Short names also work: !form new, !form edit (for set), !form q add, !form subs, !form approve, !form reject, !form show and !form newlink. !formconfig shows the card of the module with every setting at once.
liam types !formconfig: the retention, the three forms with their state and review channel, and every form command

In Discord: the card of the forms module.

Questions

Each question can also have:
  • required: whether an answer is needed (yes by default).
  • help: a line under the question, up to 100 characters. Discord shows it under the field.
  • description: a longer text, up to 1,000 characters, with bold, italics and links. The web page shows it whole; Discord shows its start when there is no help line.
  • image: a picture over the question on the web page, an https link to a .png, .jpg, .gif or .webp file.
  • placeholder: the grey text in the empty field.
  • min and max: the length of a text, or the range of a number.
  • options: for choice and multi, separated by |.
Example
liam types !form question edit staff 6 description with bold text and a link and Petto answers that question 6 changed

In Discord: a description with bold and a link.

liam types !form question move staff 3 1 and Petto answers that Your time zone is now question 1

In Discord: a question moved to the top.

liam types !form question remove staff 4 and Petto answers that Which days can you help? was removed

In Discord: a question removed.

liam types !form questions staff: the six questions with their type, whether they are required, the ranges and options, and that members answer in 2 pages

In Discord: the questions of a form, in order.

In Discord, the questions are shown in pages of five, with Next between them. A wrong answer (a number out of its range, for example) is offered again with what the member wrote.
The Discord form Staff application (1/2) with the first five questions answered: a name, an age, a time zone, the days and Yes

In Discord: the first page of a form with six questions.

Petto answers only to the member that page 1 of 2 was saved, with the Next and Stop buttons

In Discord: page 1 saved, Next opens page 2.

Petto answers that some answers need a fix: How old are you? needs a number from 13 to 99, with the Fix my answers and Stop buttons

In Discord: an age out of its range is offered again.

Petto answers only to the member that the answers to Staff application were sent (#13) and a DM will bring the result

In Discord: the last page sends the form.

Settings

!form set <form> <setting> <value> changes one setting. none (or off) clears it.
liam types !form set staff color #ff91c2 and Petto answers that color of staff was saved

In Discord: one setting changed.

liam types !form set staff colour and Petto answers with every setting that can be changed

In Discord: a setting Petto does not know lists the ones it does.

Petto never tries to give a role above its own or one managed by an app: it says so on the card instead.

Messages to the member

!form message <form> <kind> <text> changes what the member is told:
  • submitted: when the answers are sent.
  • accepted and denied: the DM with the result.
A DM from Petto: the answers to Staff application in Petto Land were accepted, with the reason under it

In Discord: the DM of an accepted answer, with the reason.

Like every DM from Petto, this one starts with a grey From <server> line and has info, delete and report buttons: see DMs from Petto. The text takes {form} (the title), {number}, {server}, {status} and {reason}, and the usual variables too, so {user} mentions the member. A reason left empty just disappears. reset goes back to the default. A saved embed can be used instead with --template <name>, and it takes {form.name}, {form.title}, {form.number}, {form.status} and {form.reason}. See Embeds.
Example
liam types !form message staff accepted with a text that uses {user} and Petto answers Message saved

In Discord: the DM of accepted answers, changed.

liam types !form message staff submitted and Petto shows the message the member reads after sending

In Discord: with no text, the message in use.

Reviewing

Each card has every answer (long answers are cut on the card and go whole in a file), the age of the account and when the member joined, and the buttons:
  • Accept and Deny (with an optional reason the member reads). The roles of the form are given and taken, the member gets a DM and the forms category of the log gets a line.
  • Open thread opens a thread under the card to talk about the answer.
The card of submission 12 of the Staff application form, sent on the web, pinging Moderators, with every answer and the Accept, Deny, Open thread and Dashboard buttons

In Discord: a staff application as it arrives in the review channel.

The Accept #12 form with an optional reason the member reads in the DM

In Discord: Accept asks for an optional reason.

The card of submission 12 now green: Accepted by kira with the reason and +Helpers, the buttons off; Petto answers only to kira that it was accepted

In Discord: the card, accepted, and the answer to the reviewer.

kira types !form accept 12 with a reason and Petto answers that submission 12 of mia.draws was accepted, Roles: +Helpers

In Discord: an answer accepted with a command.

kira types !form deny 10 with a reason and Petto answers that submission 10 of jellybean was denied

In Discord: an answer denied with a reason.

When an answer is accepted or denied (from the card, !form accept|deny or the dashboard), the thread of the card gets a last message with the result, the reason and who decided, and it is locked and archived. Nobody is pinged.
In the thread of submission 12 Petto writes that it was accepted by kira and the thread is now closed, with the reason

In Discord: the last message of the thread of an accepted answer.

!form submissions [form] [status] lists what arrived (pending by default; also accepted, denied, cancelled or all), and !form view <number> shows a card again with its buttons.
kira types !form submissions: 12, 11 and 10, pending, with who sent them, the form, when and a link to each card

In Discord: the answers waiting for the staff.

kira types !form view 12 and Petto shows the card of submission 12 with every answer, pending, and the Accept, Deny, Thread and Dashboard buttons

In Discord: a card shown again with its buttons.

The web page

Every form also has its own page on the web, on by default. The member signs in with Discord, sees the title, the description and every question, and sends the answers. They go through the same checks as in Discord (roles, ages, limits) and arrive as the same card, which says it was sent on the web. The page speaks the language of the server.
  • !form info <form> gives the link, petto.sbs/form/<id>, where the id is 12 random letters and numbers (/es/form/<id> and /pt-br/form/… open it in Spanish or Portuguese). Pasted in Discord or other apps, it shows a preview with the title, the description and the banner of the form. Older petto.sbs/form#… and petto.sbs/f/… links still work.
  • Links are random, so nobody can guess them. !form relink <form> makes a new one, and the old one stops working at once. Panels posted before keep the old link, so post them again.
  • !form set <form> web off keeps a form in Discord only.
liam types !form info staff: the link on the web, the look of the page, the review channel and roles, who can fill it in, what happens after the review and the numbers

In Discord: everything about a form, with its link.

The web page of the Staff application form of Petto Land, with its first questions

The page of a form on petto.sbs, with the animated aurora background (Premium).

The page wears the look of the form:
Example
  • Color: the accent of the page (buttons, links, numbers).
  • Banner: a picture on top (an https link to a .png, .jpg, .gif or .webp).
  • Background: default (Petto’s), solid (a tint of the color) or gradient. With Premium there are also two animated ones, aurora and waves, made from the color of the form; they move slowly and stay still for visitors whose device asks for less motion.
  • Server icon and server name in the header, each can be hidden.
  • Branding: with Premium, !form set <form> branding off hides the small “Forms by Petto” line at the bottom of the page.
The animated backgrounds and branding off are the only Premium parts of forms. When Premium ends the page shows the plain gradient and the line again, and nothing else changes. In the dashboard, the form editor has a Web page section with the same options, the link with Copy and New link, and a live preview of the page and of the browser tab.
The Web page section with the form link, the Aurora animated background and a preview of the page

The Web page section of the form editor: the link, the banner, the background and what the header shows.

The Link preview section changes how the link looks when it’s pasted: its own title, description, image and side color, and an option to show the image small. Empty fields use the title, description, banner and color of the form. Discord keeps a preview for a while, so a link pasted before a change can still show the old one.
The Link preview section with a title, a description, a side color and the preview in Discord

The Link preview section, with the card Discord shows when the link is pasted.

Storage and limits

Every server has the same limits for forms, with or without Premium: up to 25 forms of up to 25 questions, and 2,000 stored answers. When a server is full, its oldest reviewed answers make room; answers that are still pending are never deleted. !form retention <days> (1 to 365, 30 by default) says how long the answers of reviewed submissions are kept. After that only a small row stays: the form, the member, the state, the reviewer, the dates and the link to the card.
liam types !form retention 60 and Petto answers that the answers of reviewed submissions are kept 60 days, with how many are stored

In Discord: how long reviewed answers are kept.

Dashboard

The form editor of the Staff application form with its preview

The form editor: the basics on the left and a preview of the panel and the Discord form on the right.

Dashboard → Forms has three pages:
  • Forms: make and edit forms, their questions (with the description and the image), the rules, the roles, the messages and the web page.
  • Form submissions: the answers by form and state, with a search, and Accept and Deny.
  • Form panels: post a panel with buttons or a menu.
The Forms page with Staff application and Partner request open and Game night sign-up closed, each with its pending answers and Edit, Close or Open and Duplicate

Dashboard → Forms → Forms: the forms of the server.

The Form submissions page on Pending with submissions 12, 11 and 10, the filters, and the Storage card with 24 of 2000 stored and 30 days

Dashboard → Forms → Form submissions: the pending answers and the storage.

The Form panels page with the Post a panel form and two posted panels, in #apply and #general

Dashboard → Forms → Form panels: post a panel and the panels posted.

Members with a role that was given access to the Community part of the dashboard can use this page too, see Dashboard access.

Common issues

The form has no review channel. Set one with !form set <form> channel #channel.
Under the panel Petto answers only to the member that the form is not ready because the staff has not picked where answers go

In Discord: a member presses the button of a form with no review channel.

The form is closed. Open it with !form open <form>. !form panel reminds you which forms of the panel are closed.
Under the panel Petto answers only to the member that the form is closed right now

In Discord: a member presses the button of a closed form.

The role is above Petto’s highest role or is managed by an app. Move Petto’s role above it, see Permission issues.
kira accepts submission 12 and Petto answers that it could not change the role Admin, which is above its own role

In Discord: a role above the one of Petto is not given.