/

15 min · Easy once, then easy forever

One short script builds a message: text on top, an embed under it, buttons below. Welcome, goodbye, boost, vanity, the color menu and embed all use it.

member

,help welcome

nearAPP

welcome

Set up the welcome message.

Syntax,welcome <channel|add|message|on|off|test|view|help> [args]
Example,welcome on
The help card for the command this guide uses.

You will

You can write, read and fix any near message script, and the bot tells you in words when something is wrong.

Examples use the default prefix, a comma.

Before you start

  • You need Manage Server to save a welcome, or Manage Messages to use embed. Studio at /studio shows a live preview and writes the script for you.
  • The same script works everywhere: paste it into welcome add, goodbye, embed, or the dashboard.

Set it up

  1. The idea: blocks. A script is a list of blocks. A block is a name, a colon, then the value, all inside curly braces: {title: Hello}. Put as many as you like, in any order, on one line or on many lines. Names are not case sensitive and spaces inside the braces do not matter: { Title : Hello } works.
    ,welcome add {embed}{title: Welcome}{description: Glad you are here}
  2. {embed} and when you need it. Adding any embed block (title, description, color, image, thumbnail, author, footer, field) already makes an embed, so {embed} is optional. A script with no blocks at all is just plain text: Welcome {user} to {guild}. To keep a long script on one line, put $v between the blocks: {embed}$v{title: Hi}$v{description: Hello}.
  3. The message above the embed: {message: }. This is normal text that sits above the embed, and it is where pings belong, because a mention inside an embed does not notify anyone. Also written {text: } or {content: }. Up to 2000 characters. Example: {message: Welcome, {user}!}
  4. Title and description. {title: } is the bold line at the top (up to 256 characters). {description: } is the main body (up to 4096). The description supports Discord markdown: **bold**, *italic*, [links](https://example.com), and real line breaks. In a multi-line script just press enter inside the block. {desc: } is a shorter way to write description.
    ,welcome add {title: Welcome to {guild}}{description: **Rules** are in the rules channel.
    Say hi in chat.}
  5. Colour. {color: } sets the stripe on the left of the embed. Use a hex like #c4a35a, a short hex like #fff, rgb(196,163,90), or a name: red, gold, blurple, green, yellow, orange, purple, pink, blue, cyan, grey, white, black, dark. If it is not recognised, welcome add tells you.
  6. Author and footer. {author: name && icon && link} is the small line above the title. Only the name is required. The icon has to be a link or a variable like {user.avatar}; the link makes the name clickable. {footer: text && icon} is the small line at the bottom. Mentions do not render in these, so {user} is their plain name here.
    ,welcome add {author: {user} && {user.avatar}}{footer: member #{guild.count} && {guild.icon}}{description: Hello}
  7. Images. {thumbnail: } is the small picture on the right. {image: } is the large picture under the text. Both need a link that starts with https://, or a variable that gives one: {user.avatar}, {guild.icon}, {guild.banner}. If the server has no banner, {guild.banner} is empty and the image is simply left out.
  8. Fields. {field: name && value} adds a titled row. Add && inline to put up to three side by side: {field: Joined && {user.joined_at} && inline}. An embed holds up to 25 fields.
  9. Buttons. {button: Label && https://link} adds a button that opens a link. Up to 5. The parts can come in any order and you can add an emoji or the word disabled: {button: Chat && https://discord.com/channels/123/456 && 🍿}. A button without an https:// link is dropped, because Discord link buttons cannot work without one. To point at a channel, use its link: right click the channel, Copy Link.
    ,welcome add {description: Hi}{button: Rules && https://example.com}{button: Support && https://example.com/help}
  10. Variables: {user}, {guild} and the rest. {user} pings them (@alex) in the message and description, and is their plain name in the title, author, footer, field names and button labels, where a mention would only show as raw text. {user.mention} always pings. Others: {user.name}, {user.avatar}, {user.join_position}, {guild}, {guild.count}, {guild.icon}, {guild.banner}, {guild.id}, {channel.mention}, {verify.url}, {date.now}. Studio lists every one and inserts it for you. A variable that does not exist stays as typed text, and welcome add warns you.
  11. Goodbye is different on purpose. In a goodbye message {user} stays their plain name, because they have already left and a mention of someone who is gone shows as a number.
  12. Custom emoji, channels and roles. Custom emoji must be written <:name:id> with the real id, and channels <#id>. Typing :name: for a custom emoji does not work in a bot message. To get one, type the emoji in Discord with a backslash in front: \:name: shows the full form. When you load a backup onto a new server, near rewrites these ids to the new server for you.

Examples

{embed}{message: Welcome, {user}!}{author: We Now Have {guild.count} Members! && {user.avatar}}{description: Read the rules
Boost for perks
Invite your friends}{thumbnail: {guild.icon}}{footer: Enjoy your stay}{button: Chat && https://discord.com/channels/123/456}
{embed}$v{title: Verify to enter}$v{description: Tap below to unlock {guild}.}$v{color: gold}$v{button: Verify && {verify.web}}
{message: {user} just boosted!}{title: Thank you}{description: We are at {guild.boost_count} boosts.}{color: #f47fff}
Welcome {user} to {guild}, you are member #{guild.count}

Do not

  • Do not paste user tokens or passwords into a script. Scripts are public text.
  • Do not rely on a mention inside an embed title, author or footer to ping someone.

Troubleshooting

  • A block is missing from the message: its name is probably misspelt ({titel:). welcome add lists unknown names and suggests the right one.
  • A button is missing: it has no link. It needs https:// in front, for example {button: Rules && https://example.com}.
  • An image is missing: the value is not a link. Use https://… or a variable such as {guild.icon}.
  • {user.nmae} shows as typed: variable names must match exactly. welcome add suggests the closest one.
  • The whole script shows as plain text: there is no block in it, or a brace is missing. Count the { and }: every block needs both.
  • No ping happens: put {user} or {user.mention} in {message: } or the description. Mentions in a title, author or footer never notify.
  • Colour looks wrong: use #rrggbb. Names that are not in the list are ignored.
  • The text is cut off: titles stop at 256 characters, descriptions at 4096, messages at 2000.

Verify it works

  • Run welcome add with your script. near posts a preview and lists anything it dropped. Use welcome test any time to see it again.
  • Open /studio to see the same script as a live preview before you save.