> For the complete documentation index, see [llms.txt](https://docs.membercounter.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.membercounter.app/custom-bot/legacy-premium-vs-custom-bot.md).

# Legacy Premium vs. Custom Bot

What the legacy premium bot was, how server upgrades still work, and why custom bots replaced it.

**Member Counter Premium**, the legacy premium bot, is a second bot donors could invite to a server. It refreshes channels every 5 minutes instead of every 10, as described in [How counters update](/using-the-dashboard/how-counters-update.md), and it runs the [Twitch](/counters-reference/twitch.md) and [YouTube](/counters-reference/youtube.md) counters, which the public bot cannot. It has no privileged intents, so the [Members](/counters-reference/members.md) counter works exactly as on the public bot: approximate counts, and none of the finer filters.

Server upgrades are no longer sold. Only staff can grant them, and [custom bots](/custom-bot/how-to-get-a-custom-bot.md) took their place: a fully featured bot, with the privileged intents, running under a token you own. Legacy premium was never switched off, so if you already hold server upgrades, they still work exactly as they did.

## How server upgrades still work

A server upgrade is a one-shot credit that turns one Discord server into a premium server and lets you invite the legacy premium bot to it.

{% stepper %}
{% step %}

### Check your balance

Open your [account page](/using-the-dashboard/account.md). If you hold any upgrades you will see the **Available server upgrades** card, which lists your servers with an **Upgrade server** button on each. The button cannot be used on a server that is already upgraded, or when your balance is not enough.

<figure><img src="https://1582170640-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lu2S5r7lKtu4IK5ucu9%2Fuploads%2Fgit-blob-7ec681addea41daa2fab6b0024bdb6ffe7135d1a%2Faccount-server-upgrades.png?alt=media" alt="Available server upgrades card"><figcaption><p>The <strong>Available server upgrades</strong> card on the account page</p></figcaption></figure>
{% endstep %}

{% step %}

### Open the Upgrade server page

In the dashboard, pick the server and use **Upgrade server** in the server menu. That entry only shows while you still hold at least one upgrade, or if the server has been upgraded already.

<figure><img src="https://1582170640-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lu2S5r7lKtu4IK5ucu9%2Fuploads%2Fgit-blob-2d7bd99dff86865d3bc6241b7632d0a6a84e9431%2Fcustom-bot-upgrade-server-page.png?alt=media" alt="Upgrade server page"><figcaption><p>The <strong>Upgrade server</strong> page with the <strong>UPGRADE NOW</strong> button and its footnote</p></figcaption></figure>
{% endstep %}

{% step %}

### Press UPGRADE NOW

One upgrade is taken from your balance and the server is marked premium. Discord's invite page for the legacy premium bot opens in a new tab, and the dashboard takes you back to the server page.

{% hint style="warning" %}
A popup blocker can swallow that new tab, which makes it look as though the upgrade failed. It did not. Check the server menu for the **Server upgraded** badge and invite the bot from there.
{% endhint %}

{% hint style="danger" %}
This cannot be undone. The upgrade is spent, the server keeps its premium status, and you cannot move it to a different server afterwards.
{% endhint %}
{% endstep %}

{% step %}

### Invite the legacy premium bot

An **Invite premium bot** button appears once the server is upgraded, both on the server page and on that server's row on your account page. It opens Discord's invite flow for the legacy premium bot.
{% endstep %}
{% endstepper %}

The dashboard marks the [Twitch](/counters-reference/twitch.md) and [YouTube](/counters-reference/youtube.md) counters as needing the premium bot or a custom bot, and those do work on the legacy premium bot. The finer [Members](/counters-reference/members.md) filters carry the same mark but fail on the legacy premium bot with "The bot does not have enough privileged intents to use this counter.", because it lacks the intents.

## Which one should you use?

|                | Legacy premium bot                                          | Custom bot                                         |
| -------------- | ----------------------------------------------------------- | -------------------------------------------------- |
| Who can get it | Only people who already hold server upgrades                | Anyone                                             |
| Scope          | One server per upgrade                                      | Every server you put the bot in                    |
| Branding       | Our name and avatar, shared with every other premium server | Your own application: your name, avatar and banner |
| Refresh        | Every 5 minutes                                             | Every 5 minutes                                    |
| Counters       | Twitch and YouTube, but not the finer Members filters       | All of them                                        |
| Cost           | An upgrade you already hold                                 | From EUR 5.00 per quarter                          |
| Reversible     | No. An upgrade is spent for good                            | Yes. Pause or cancel whenever you like             |

Server upgrades are not sold any more, so once yours are spent, [a custom bot](/custom-bot/how-to-get-a-custom-bot.md) is the way to get the same features. See [Managing your subscription](/custom-bot/managing-your-subscription.md) for what it costs.

If you would rather not pay at all, [run the bot on your own machine](/self-hosting/self-hosting.md) instead. A self-hosted bot has every feature a custom bot has.

<details>

<summary>Technical details</summary>

* Upgrading runs `GuildSettingsService.upgradeLegacyPremiumStatus` (`packages/services/src/guildSettings.ts`): it decrements the user's `legacyCredit` by 1 and then sets `legacyPremiumStatus` on the server's settings row. Two separate writes, no transaction. Upgrades are stored per user as `legacyCredit` and per server as `legacyPremiumStatus`, and are unrelated to the account credit that pays for a custom bot subscription, which is a balance in euro cents.
* Both refusals are thrown as plain errors rather than known errors, so the dashboard shows a generic unknown error with no detail: "Already upgraded to premium" when the server is premium already, and "User doesn't have any lagacy credit" (sic) when the balance is zero.
* After the mutation the page opens `/invite?guildId=<guildId>&botId=<DISCORD_LEGACY_PREMIUM_CLIENT_ID>` in a new tab and navigates back to the server page. The legacy application id is `688714342392135731` in `.env.example`.
* The 5 versus 10 minutes is one cron: `0 */5 * * * *` when the bot instance runs with `isPremium`, `0 */10 * * * *` otherwise. `isPremium` also picks the intents the client asks Discord for: GuildMembers and GuildPresences when the instance is premium and privileged, GuildVoiceStates when it is premium.
* Twitch and YouTube assert `isPremium` and throw `BOT_IS_NOT_PREMIUM`, "The bot is not a premium version and lacks certain features needed for this counter." The finer Members filters go through `throwAvailabiltyIssue`: a non-premium instance raises the same error, a premium instance missing the intents, which is what the legacy premium bot is, raises `BOT_HAS_NO_ENOUGH_PRIVILEGED_INTENTS`, "The bot does not have enough privileged intents to use this counter."
* With both bots in one server, only the instance advertising the highest compute priority updates the channels. Each bot re-advertises every 5 minutes and the advertisement expires after 15.
* Self-hosting: there are no server upgrades. A self-hosted bot is premium and privileged as long as `DISCORD_BOT_INSTANCE_IS_PREMIUM` and `DISCORD_BOT_INSTANCE_IS_PRIVILEGED` stay at their default `true` in `.env` and both privileged intents are enabled in the Developer Portal.

</details>
