Language
Anvil · Discord7 min read

Anvil in Discord

One bot, one invite, and no application to register. This is what it posts, where it posts it, what it can change in your server — and what to look at on the day it stops.

One bot shared, nothing to create~5 min invite to first postOpt-in every feed is off until you point it somewhere
Step 1

One bot, already built

#

There is no Discord application to create, no token to generate and no secret to paste. Anvil runs one bot and every clan shares it, so connecting is an invite and nothing else.

You can still bring your own — paste a token under Use your own bot instead (advanced) and it is used instead. Worth it only if you want the bot to wear your clan’s name and avatar in the member list; everything in this guide works the same either way.

View Channels, Send Messages, Embed Links, Attach FilesThe basics. Without these it is in your server and silent.
Manage WebhooksSo Set it up for me and Post here can make webhooks for you instead of you copying URLs out of Discord by hand, and so Anvil can find old webhooks for you to remove.
Manage RolesOnly if you turn role sync on. It can then hand out the roles you map — and it can never touch a role above its own, which is Discord’s rule, not ours.
Manage NicknamesOnly if you turn nickname sync on, so a member’s server nickname can be set to their RSN.
Manage ChannelsFor per-team private channels during a draft, and for guides posted as a new category or forum. Skip it and everything else still works.
Manage Threads, Send Messages in ThreadsFor guides posted to a forum: writing inside the post, and removing the post again — Discord won’t let a bot delete even its own forum post without it.
Change NicknameOnly if you give the bot your clan’s name under Connection → Bot appearance in your server. It changes the bot’s name in your server only.
It asks for them all at once
Discord has no way to ask for a permission later, so the invite link requests the full set and the features you never enable simply never use theirs. Re-running the invite link is also how you repair a permission somebody removed.
Step 2

Connecting it

#

Two things, in this order. The bot has to be in your server, and Anvil has to know which server is yours.

Invite the botAdmin → Discord → Connect your Discord server (or Add Anvil to Discord). Discord asks which server to add Anvil to and sends you back here, so you cannot add it to the wrong one by accident. Later, Invite / re-invite the bot is under More settings → Connection.
Set the server IDOnly if the button can’t do it: open Can’t use the button? Enter the server ID, right-click your server icon in Discord → Copy Server ID (needs Developer Mode on, under Discord’s own Advanced settings), paste it into Your Discord server’s ID and press Save. This is the field that makes the connection specific to you.

The panel then tells you the truth rather than your intent: whether the bot is actually a member of that server, and which permissions it is missing. A green line there is worth more than a saved form.

The server ID is the whole binding
A guild belongs to exactly one clan on Anvil, and slash commands from a server nobody has claimed are refused rather than guessed at. Until you set it, the bot is invited and idle.
Step 3

Set up webhooks

#

Anvil posts through webhooks, one per channel, and every one of them is optional. Nothing posts anywhere until you point a feed at a channel — a fresh clan is silent by design rather than by accident.

With the Anvil bot in your server, Set it up for me at the top of Admin → Discord makes the channels and points every feed at them. To do it by hand, open More settings → What goes where and start with the Catch-all channel on Clan & events, then the In-game catch-all on In-game (plugin): pick a channel from the dropdown and it saves. Without the bot, open that Discord channel’s Edit Channel → Integrations → Webhooks, create one, copy its URL, choose Paste a webhook… in the dropdown, paste it and press Save. A webhook URL can post to its channel, so treat it like a password; if it leaks, delete it in Discord and create a new one. Test, and Add another to rotate busy posts between two webhooks, are under Post without a bot.

Catch-all channelThe main one, on the Clan & events tab. Event starts and endings, sign-ups opening, standings, weekly results — anything the site posts without a channel of its own. Set this and nothing else and you have a working clan.
In-game catch-allOn the In-game (plugin) tab: where anything from the game goes when it has no channel of its own. Set this second.
Milestones & moreOn the In-game (plugin) tab. Slayer, clues, speedruns, kill counts, BA gambles and custom chat messages post here, once players switch them on. Its Filters button sets what your clan gives members by default. Players’ own templates and private kinds are in Settings, page by page.
The split feedsEvent posts, boards you co-host, Skill & boss of the week and clan calendar events can split from the catch-all; rare drops, pets, collection log, levels, combat achievements, quests, diaries, deaths and PvP kills can split from the in-game catch-all. Roster changes, sign-up approvals and the coffer ledger sit on Staff only. Blank split feeds fall back to their catch-all. The coffer is the exception: blank means no money posts at all. Leagues and other modes have their own Game modes tab.
Split deaths off first
Deaths are the highest-volume feed on most boards and the one that buries everything else. If you only split one thing, split that.
Step 4

Leagues, Deadman and other modes

#

Leagues, Deadman, hardcore and other modes run on their own worlds with their own characters. Their posts are always labelled and never count toward boards or competitions. They have their own tab: Admin → Discord → What goes where → Game modes. A mode appears there the first time a member plays it.

Each mode has a switch and a To channel. Turn on Send game-mode posts to their own channels to use those channels; leave it off and every mode posts to the normal channels, still labelled. The Posts button on a mode’s row lists every kind it sends — the usual ones and the mode’s own events — each with its own switch.

Under that list, Custom thresholds make a mode post less than the main game. Post drops rarer than 1 in… (at least 2) and Post drops worth at least (gp) (at least 1,000) set their own floors (blank = same as the main game), then press Save drop thresholds: always-post items still post, but drops that only count for their value don’t. Use its own level milestones posts a level-up only if it matches both sets of rules.

Stricter, never looser
A mode’s filters can only take posts away. The plugin has already applied your main-game settings, so nothing a mode filter does can bring a post back.
Step 5

Old webhooks from other plugins or bots

#

With the bot in your server, the Discord page lists every webhook in it that isn’t Anvil’s. Coming from other plugins? offers Use the same channels, so Set it up for me posts where your old feeds did and nothing moves for your members.

Once your members are on Anvil, go to Remove old webhooks from other plugins, tick the ones to go and press Remove … webhooks, then Yes, remove them. That deletes them in Discord for good — it cannot be undone.

The list holds any webhook that isn’t Anvil’s, not just another plugin’s. One you want to keep, like another bot’s feed? Press Keep and it leaves the list; Show kept and Put back bring it back. Keeping only hides it here — nothing changes in Discord.

Needs Manage Webhooks
The bot reads your server’s webhooks to find them. Without Manage Webhooks on its role, the page says it can’t see them.
Step 6

Roles and nicknames

#

Both syncs are off until you enable them under Admin → Discord → Roles & nicknames, and both are driven by the roster. Turn on Enable Discord role sync, leave Auto-match in-game rank → Discord role by name on, select any general Member roles and Guest roles, save, then press Sync roles & nicknames now. Every person also needs a linked Discord identity; the sync report names anyone it could not resolve.

Role syncFor automatic rank matching, the Discord role name must match the in-game clan rank: Owner, Deputy Owner, Coordinator, Overseer, General, Captain, Lieutenant, Sergeant, Corporal or Recruit. Custom ranks work too when their Discord role uses that same name. Matching ignores letter case and treats underscores like spaces, but extra words do not match: General works; OSRS General does not. Member and guest roles are picked separately, so their names can be anything.
Nickname syncSets a member’s server nickname to their RSN. It fills in a blank nickname by default and can be told to overwrite one someone chose themselves — which is the setting to think about before enabling, not after.
The bot’s role has to sit above the ones it manages
Discord refuses to let any bot touch a role at or above its own. Drag the Anvil role above every rank, member and guest role under Server Settings → Roles, then save the Anvil settings and run Sync roles & nicknames now. Nothing needs re-inviting.
Step 7

Slash commands

#

The bot answers /bingo in your server (the board, the standings, the rules, your own card) plus clan commands like /sotw, /stats and /coffer. They read the live site, so nobody has to leave Discord to check where they stand. Every command and its options has its own page.

They appear a minute or so after the bot joins. If they never appear at all, the invite granted the bot but not its commands — the two are separate permissions and an older invite link only asked for one. Re-run Invite / re-invite the bot under Connection on the Discord page; it does not kick the bot or reset anything.

It replies in each person’s own language
By default the bot answers in whatever language that member has their Discord set to, falling back to English. Pick a single language under Bot language to override that for everyone — which is also the only way to get Arabic, since Discord has no Arabic client language to detect.
Step 8

What it posts, and when

#

Two sources, and it is worth knowing which is which when something looks wrong.

The site posts events: a board opening, sign-ups, a start, standings, the result. Those fire from Anvil itself and keep working whether or not anybody has the plugin.

The plugin posts what happens in game: drops, pets, deaths, levels, collection log slots, combat achievements. Those only exist for members running it, so a quiet drops channel usually means a quiet plugin rather than a broken webhook.

Nothing posts twice
A drop that completes a tile is one post, not one from the plugin and another from the board.
Step 9

Drop thresholds

#

Anvil starts at 1m gp or 1 in 1,000. A drop posts when it meets either one. Nobody can set their own numbers below those, and 0 switches one off.

Set your clan’s defaults under Admin → Discord → What goes where → Drops: Default minimum drop value (gp), Default: post drops rarer than 1 in… and Require both. Turn on Require both and a drop must meet the value and the rarity.

Each character follows the default of the clan it is a member of, and Anvil’s default if it has none. Players can pick their own numbers in Settings. It shows Using clan default or Custom, and Reset goes back.

Hard floor: never post drops more common than 1 in… is the strict one. Members can’t go looser than it in your clan’s channels. Their own webhooks can.

More on the player side
Players’ own numbers, templates and webhooks are in Settings, page by page.
Step 10

More webhooks for busy channels

#

One webhook can only send so fast. For a busy event, add more webhooks to the same channel. Press Busy channel? Let the bot add … more webhooks (it needs Manage Webhooks), or paste several webhook links into the channel’s box. Anvil suggests more when you have 50 or more players, a lot of posts per minute, or Discord has recently said “slow down”. Up to 10 is plenty.

Anvil takes turns between them. If Discord says “slow down” for one, that webhook rests for a moment and the next one takes the post. If one is deleted or stops working, it is skipped for 10 minutes. Posts keep flowing, as long as one webhook works.

All of them must point at the same channel. Anvil warns you if they don’t. Use Test to check one, or Stop posting here to remove it.

Same channel, same posts
More webhooks never post twice. They only share the work. The same idea is in Drop thresholds above and the admin side in Running the event.
Step 11

Post to Discord

#

Admins can post as the bot from Post to Discord, under Clan in the admin menu. Pick a Channel, write the Message and press Send message. Long text, like a rulebook, is split into several messages by itself.

Send as an embed is on by default and adds an optional Title and an Accent colour; turn it off for plain text. Ping picks a role, or @everyone, to mention, and Anvil asks before it sends.

Every post you send is listed under Sent from here. Edit changes it in Discord without pinging again, and Delete removes it.

Admins only, with the bot
It posts as Anvil’s bot, so connect your server first. Moderators don’t see it. It is the Post to Discord switch under Clan settings → Features; switched off, it leaves the menu.
Step 12

When it goes quiet

#

In order, because each one rules out the next:

Is the bot actually in the server?Connection on the Discord page says so directly. "Token valid" and "in your server" are different facts and the first does not imply the second — with a shared bot the token is always valid.
Is the server ID right?A wrong-but-real ID looks exactly like a right one until you notice the posts are going somewhere else.
Is the webhook still there?Deleting a Discord channel deletes its webhook, and Anvil keeps the dead URL. Pick a channel for it again under What goes where.
Is the bot’s role high enough?For role or nickname sync, put the bot above every role it manages, check that each person has linked Discord, and check rank-role names exactly as listed above. Save first, then run Sync roles & nicknames now; its skipped list tells you who still needs linking.
It cannot greet people who join
Discord only reports joins over a gateway connection, which a shared bot does not hold for every server. So there is no "welcome" post — put the sign-up link in a #roles or #start-here channel instead, which is where people look anyway.

Everything here lives on Admin → Discord: the quick setup at the top, then More settings — Connection, What goes where, Event posts, Roles & nicknames, Team channels, Commands and Post without a bot.

Stuck, or something looks wrong? Ask in the Anvil support Discord