Plugin

NoNitroUpsell

Removes ALL of Discord's nitro upsells by tricking the client into thinking you have nitro.

index.ts
Download

Source

src/plugins/noNitroUpsell/index.ts
1/*
2 * FiveCord — a Discord client mod
3 * Copyright (c) 2025 FiveCord
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
7import { Devs } from "@utils/constants";
8import definePlugin from "@utils/types";
9import { UserStore } from "@webpack/common";
10import { User } from "discord-types/general";
11
12let user: ModifiedUser | undefined;
13let lastUserId: string | undefined;
14let uninject: (() => void) | undefined;
15
16interface ModifiedUser extends User {
17 _realPremiumType?: number;
18}
19
20export default definePlugin({
21 name: "NoNitroUpsell",
22 description: "Removes ALL of Discord's nitro upsells by tricking the client into thinking you have nitro.",
23 authors: [Devs.FiveCord],
24 ready(user: ModifiedUser): void {
25 if (!user) return;
26 if ("_realPremiumType" in user) return;
27
28 user._realPremiumType = user.premiumType ?? 0;
29 user.premiumType = 2;
30 lastUserId = user.id;
31 },
32 start(): void {
33 user = UserStore.getCurrentUser();
34 if (user) this.ready(user);
35
36 const onChange = (): void => {
37 const newUser = UserStore.getCurrentUser();
38 if (newUser && newUser.id !== lastUserId) {
39 user = newUser;
40 this.ready(user);
41 }
42 };
43
44 UserStore.addChangeListener(onChange);
45 uninject = () => UserStore.removeChangeListener(onChange);
46 },
47 stop(): void {
48 uninject?.();
49 const user = UserStore.getCurrentUser();
50 if (!user) return;
51 if (!("_realPremiumType" in user)) return;
52 UserStore?.getCurrentUser()?.premiumType;
53 // @ts-ignore
54 user.premiumType = user._realPremiumType;
55 delete user._realPremiumType;
56 }
57});
58