Win-back: servers that removed Noti. Removing the bot keeps the server's whole setup, so the dashboard can ask why and offer a one-click re-add. The bot is not in these servers - access comes from the servers the viewer manages.

Constructors

Methods

  • Why Noti was removed from this server: one of EXIT_REASONS plus an optional note (<= 300 chars). Once per removal - 409 when another manager already answered. 403 if the viewer does not manage the server, 400 if it was not removed in the last 90 days, 429 (Retry-After) over 10 answers a minute.

    Parameters

    • __namedParameters: {
          auth: string;
          guildId: string;
          note?: string;
          reason:
              | "other"
              | "otherBot"
              | "missingFeature"
              | "tooExpensive"
              | "tooNoisy"
              | "broken"
              | "temporary";
      }
      • auth: string
      • guildId: string
      • Optionalnote?: string
      • reason:
            | "other"
            | "otherBot"
            | "missingFeature"
            | "tooExpensive"
            | "tooNoisy"
            | "broken"
            | "temporary"

    Returns Promise<WebResponse<{
        leftAt: string;
        note: null | string;
        reason:
            | "other"
            | "otherBot"
            | "missingFeature"
            | "tooExpensive"
            | "tooNoisy"
            | "broken"
            | "temporary";
    }>>

  • A click on the card's button (click) or its X (dismiss - hidden for this viewer only, for the rest of the 90 days). Answers { recorded: false } for an arm the server did not give this server, or a preview.

    Parameters

    • __namedParameters: {
          auth: string;
          event: {
              key: string;
              type: "click" | "dismiss";
              variant: string;
          };
          guildId: string;
      }
      • auth: string
      • event: {
            key: string;
            type: "click" | "dismiss";
            variant: string;
        }
        • key: string
        • type: "click" | "dismiss"
        • variant: string
      • guildId: string

    Returns Promise<WebResponse<{
        recorded: boolean;
    }>>

  • The viewer's managed servers that removed Noti in the last 90 days and have no exit reason yet (newest first).

    Parameters

    • __namedParameters: {
          auth: string;
      }
      • auth: string

    Returns Promise<WebResponse<{
        servers: RemovedServer[];
    }>>

  • The win-back cards for the viewer (max 3, newest removal first): "Noti left - your setup is still saved". The server records that they were shown - do NOT send views. Pass env like the oauth2 redirect's state so the invite returns to this dashboard. Empty when no win-back experiment is running.

    Parameters

    • __namedParameters: {
          auth: string;
          env?: string;
      }
      • auth: string
      • Optionalenv?: string

    Returns Promise<WebResponse<{
        winbacks: WinBackCard[];
    }>>