Class Client

Stoat.js Clients

Hierarchy

  • AsyncEventEmitter<Events>
    • Client

Constructors

  • Create Stoat.js Client

    Parameters

    • Optionaloptions: Partial<ClientOptions>
    • Optionalconfiguration: {
          app: string;
          build: {
              commit_sha: string;
              commit_timestamp: string;
              origin_url: string;
              semver: string;
              timestamp: string;
          };
          features: {
              autumn: { enabled: boolean; url: string };
              captcha: { enabled: boolean; key: string };
              email: boolean;
              invite_only: boolean;
              january: { enabled: boolean; url: string };
              legal_links: {
                  guidelines: string;
                  privacy_policy: string;
                  terms_of_service: string;
              };
              limits: {
                  default: {
                      bots: number;
                      file_upload_size_limits: { [key: string]: number };
                      message_attachments: number;
                      message_length: number;
                      outgoing_friend_requests: number;
                      servers: number;
                      video: boolean;
                      video_aspect_ratio: number[];
                      video_resolution: number[];
                      voice_quality: number;
                  };
                  global: {
                      body_limit_size: number;
                      group_size: number;
                      message_embeds: number;
                      message_reactions: number;
                      message_replies: number;
                      new_user_hours: number;
                      restrict_server_creation: string[];
                      server_channels: number;
                      server_emoji: number;
                      server_roles: number;
                  };
                  new_user: {
                      bots: number;
                      file_upload_size_limits: { [key: string]: number };
                      message_attachments: number;
                      message_length: number;
                      outgoing_friend_requests: number;
                      servers: number;
                      video: boolean;
                      video_aspect_ratio: number[];
                      video_resolution: number[];
                      voice_quality: number;
                  };
              };
              livekit: {
                  enabled: boolean;
                  nodes: { lat: number; lon: number; name: string; public_url: string }[];
              };
          };
          revolt: string;
          vapid: string;
          ws: string;
      }

      Deprecated - Please use Client.initConfig if you need to override config.

      • app: string

        URL pointing to the client serving this node

      • build: {
            commit_sha: string;
            commit_timestamp: string;
            origin_url: string;
            semver: string;
            timestamp: string;
        }

        Build information

        • commit_sha: string

          Commit Hash

        • commit_timestamp: string

          Commit Timestamp

        • origin_url: string

          Git Origin URL

        • semver: string

          Git Semver

        • timestamp: string

          Build Timestamp

      • features: {
            autumn: { enabled: boolean; url: string };
            captcha: { enabled: boolean; key: string };
            email: boolean;
            invite_only: boolean;
            january: { enabled: boolean; url: string };
            legal_links: {
                guidelines: string;
                privacy_policy: string;
                terms_of_service: string;
            };
            limits: {
                default: {
                    bots: number;
                    file_upload_size_limits: { [key: string]: number };
                    message_attachments: number;
                    message_length: number;
                    outgoing_friend_requests: number;
                    servers: number;
                    video: boolean;
                    video_aspect_ratio: number[];
                    video_resolution: number[];
                    voice_quality: number;
                };
                global: {
                    body_limit_size: number;
                    group_size: number;
                    message_embeds: number;
                    message_reactions: number;
                    message_replies: number;
                    new_user_hours: number;
                    restrict_server_creation: string[];
                    server_channels: number;
                    server_emoji: number;
                    server_roles: number;
                };
                new_user: {
                    bots: number;
                    file_upload_size_limits: { [key: string]: number };
                    message_attachments: number;
                    message_length: number;
                    outgoing_friend_requests: number;
                    servers: number;
                    video: boolean;
                    video_aspect_ratio: number[];
                    video_resolution: number[];
                    voice_quality: number;
                };
            };
            livekit: {
                enabled: boolean;
                nodes: { lat: number; lon: number; name: string; public_url: string }[];
            };
        }

        Features enabled on this Revolt node

        • autumn: { enabled: boolean; url: string }

          File server service configuration

          • enabled: boolean

            Whether the service is enabled

          • url: string

            URL pointing to the service

        • captcha: { enabled: boolean; key: string }

          hCaptcha configuration

          • enabled: boolean

            Whether captcha is enabled

          • key: string

            Client key used for solving captcha

        • email: boolean

          Whether email verification is enabled

        • invite_only: boolean

          Whether this server is invite only

        • january: { enabled: boolean; url: string }

          Proxy service configuration

          • enabled: boolean

            Whether the service is enabled

          • url: string

            URL pointing to the service

        • legal_links: { guidelines: string; privacy_policy: string; terms_of_service: string }

          Legal links

          • guidelines: string

            Guidelines URL

          • privacy_policy: string

            Privacy Policy URL

          • terms_of_service: string

            Terms of Service URL

        • limits: {
              default: {
                  bots: number;
                  file_upload_size_limits: { [key: string]: number };
                  message_attachments: number;
                  message_length: number;
                  outgoing_friend_requests: number;
                  servers: number;
                  video: boolean;
                  video_aspect_ratio: number[];
                  video_resolution: number[];
                  voice_quality: number;
              };
              global: {
                  body_limit_size: number;
                  group_size: number;
                  message_embeds: number;
                  message_reactions: number;
                  message_replies: number;
                  new_user_hours: number;
                  restrict_server_creation: string[];
                  server_channels: number;
                  server_emoji: number;
                  server_roles: number;
              };
              new_user: {
                  bots: number;
                  file_upload_size_limits: { [key: string]: number };
                  message_attachments: number;
                  message_length: number;
                  outgoing_friend_requests: number;
                  servers: number;
                  video: boolean;
                  video_aspect_ratio: number[];
                  video_resolution: number[];
                  voice_quality: number;
              };
          }

          Limits

          • default: {
                bots: number;
                file_upload_size_limits: { [key: string]: number };
                message_attachments: number;
                message_length: number;
                outgoing_friend_requests: number;
                servers: number;
                video: boolean;
                video_aspect_ratio: number[];
                video_resolution: number[];
                voice_quality: number;
            }

            Default User Limits

            • bots: number

              Format: int64

              Max Owned Bots

            • file_upload_size_limits: { [key: string]: number }
            • message_attachments: number

              Format: int64

              max message attachments

            • message_length: number

              Format: int64

              Max message content length

            • outgoing_friend_requests: number

              Format: int64

              Max Outgoing Friend Requests

            • servers: number

              Format: int64

              max servers

            • video: boolean

              video streaming enabled

            • video_aspect_ratio: number[]

              min/max aspect ratios

            • video_resolution: number[]

              max video resolution (vertical, horizontal)

            • voice_quality: number

              Format: int64

              max audio quality

          • global: {
                body_limit_size: number;
                group_size: number;
                message_embeds: number;
                message_reactions: number;
                message_replies: number;
                new_user_hours: number;
                restrict_server_creation: string[];
                server_channels: number;
                server_emoji: number;
                server_roles: number;
            }

            Global Limits

            • body_limit_size: number

              Format: int64

            • group_size: number

              Format: int64

              max group size

            • message_embeds: number

              Format: int64

              max message embeds

            • message_reactions: number

              Format: int64

              max reactions per message

            • message_replies: number

              Format: int64

              max replies

            • new_user_hours: number

              Format: int64

              New user hours

            • restrict_server_creation: string[]

              restrict server creation to these users. if blank, all users can create servers

            • server_channels: number

              Format: int64

              max server channels

            • server_emoji: number

              Format: int64

              max server emoji

            • server_roles: number

              Format: int64

              max server roles

          • new_user: {
                bots: number;
                file_upload_size_limits: { [key: string]: number };
                message_attachments: number;
                message_length: number;
                outgoing_friend_requests: number;
                servers: number;
                video: boolean;
                video_aspect_ratio: number[];
                video_resolution: number[];
                voice_quality: number;
            }

            New User Limits

            • bots: number

              Format: int64

              Max Owned Bots

            • file_upload_size_limits: { [key: string]: number }
            • message_attachments: number

              Format: int64

              max message attachments

            • message_length: number

              Format: int64

              Max message content length

            • outgoing_friend_requests: number

              Format: int64

              Max Outgoing Friend Requests

            • servers: number

              Format: int64

              max servers

            • video: boolean

              video streaming enabled

            • video_aspect_ratio: number[]

              min/max aspect ratios

            • video_resolution: number[]

              max video resolution (vertical, horizontal)

            • voice_quality: number

              Format: int64

              max audio quality

        • livekit: {
              enabled: boolean;
              nodes: { lat: number; lon: number; name: string; public_url: string }[];
          }

          Voice server configuration

          • enabled: boolean

            Whether voice is enabled

          • nodes: { lat: number; lon: number; name: string; public_url: string }[]

            All livekit nodes

      • revolt: string

        Revolt API Version

      • vapid: string

        Web Push VAPID public key

      • ws: string

        WebSocket URL

    Returns Client

Properties

"[brandSymbol]": Events

This field doesn't actually exist, it's just a way to make TS properly infer the events from classes that extend AsyncEventEmitter

account: AccountCollection
api: API.API
channelUnreads: ChannelUnreadCollection
channelWebhooks: ChannelWebhookCollection
configuration:
    | undefined
    | {
        app: string;
        build: {
            commit_sha: string;
            commit_timestamp: string;
            origin_url: string;
            semver: string;
            timestamp: string;
        };
        features: {
            autumn: { enabled: boolean; url: string };
            captcha: { enabled: boolean; key: string };
            email: boolean;
            invite_only: boolean;
            january: { enabled: boolean; url: string };
            legal_links: {
                guidelines: string;
                privacy_policy: string;
                terms_of_service: string;
            };
            limits: {
                default: {
                    bots: number;
                    file_upload_size_limits: { [key: string]: number };
                    message_attachments: number;
                    message_length: number;
                    outgoing_friend_requests: number;
                    servers: number;
                    video: boolean;
                    video_aspect_ratio: number[];
                    video_resolution: number[];
                    voice_quality: number;
                };
                global: {
                    body_limit_size: number;
                    group_size: number;
                    message_embeds: number;
                    message_reactions: number;
                    message_replies: number;
                    new_user_hours: number;
                    restrict_server_creation: string[];
                    server_channels: number;
                    server_emoji: number;
                    server_roles: number;
                };
                new_user: {
                    bots: number;
                    file_upload_size_limits: { [key: string]: number };
                    message_attachments: number;
                    message_length: number;
                    outgoing_friend_requests: number;
                    servers: number;
                    video: boolean;
                    video_aspect_ratio: number[];
                    video_resolution: number[];
                    voice_quality: number;
                };
            };
            livekit: {
                enabled: boolean;
                nodes: { lat: number; lon: number; name: string; public_url: string }[];
            };
        };
        revolt: string;
        vapid: string;
        ws: string;
    }

Type declaration

  • undefined
  • {
        app: string;
        build: {
            commit_sha: string;
            commit_timestamp: string;
            origin_url: string;
            semver: string;
            timestamp: string;
        };
        features: {
            autumn: { enabled: boolean; url: string };
            captcha: { enabled: boolean; key: string };
            email: boolean;
            invite_only: boolean;
            january: { enabled: boolean; url: string };
            legal_links: {
                guidelines: string;
                privacy_policy: string;
                terms_of_service: string;
            };
            limits: {
                default: {
                    bots: number;
                    file_upload_size_limits: { [key: string]: number };
                    message_attachments: number;
                    message_length: number;
                    outgoing_friend_requests: number;
                    servers: number;
                    video: boolean;
                    video_aspect_ratio: number[];
                    video_resolution: number[];
                    voice_quality: number;
                };
                global: {
                    body_limit_size: number;
                    group_size: number;
                    message_embeds: number;
                    message_reactions: number;
                    message_replies: number;
                    new_user_hours: number;
                    restrict_server_creation: string[];
                    server_channels: number;
                    server_emoji: number;
                    server_roles: number;
                };
                new_user: {
                    bots: number;
                    file_upload_size_limits: { [key: string]: number };
                    message_attachments: number;
                    message_length: number;
                    outgoing_friend_requests: number;
                    servers: number;
                    video: boolean;
                    video_aspect_ratio: number[];
                    video_resolution: number[];
                    voice_quality: number;
                };
            };
            livekit: {
                enabled: boolean;
                nodes: { lat: number; lon: number; name: string; public_url: string }[];
            };
        };
        revolt: string;
        vapid: string;
        ws: string;
    }
    • app: string

      URL pointing to the client serving this node

    • build: {
          commit_sha: string;
          commit_timestamp: string;
          origin_url: string;
          semver: string;
          timestamp: string;
      }

      Build information

      • commit_sha: string

        Commit Hash

      • commit_timestamp: string

        Commit Timestamp

      • origin_url: string

        Git Origin URL

      • semver: string

        Git Semver

      • timestamp: string

        Build Timestamp

    • features: {
          autumn: { enabled: boolean; url: string };
          captcha: { enabled: boolean; key: string };
          email: boolean;
          invite_only: boolean;
          january: { enabled: boolean; url: string };
          legal_links: {
              guidelines: string;
              privacy_policy: string;
              terms_of_service: string;
          };
          limits: {
              default: {
                  bots: number;
                  file_upload_size_limits: { [key: string]: number };
                  message_attachments: number;
                  message_length: number;
                  outgoing_friend_requests: number;
                  servers: number;
                  video: boolean;
                  video_aspect_ratio: number[];
                  video_resolution: number[];
                  voice_quality: number;
              };
              global: {
                  body_limit_size: number;
                  group_size: number;
                  message_embeds: number;
                  message_reactions: number;
                  message_replies: number;
                  new_user_hours: number;
                  restrict_server_creation: string[];
                  server_channels: number;
                  server_emoji: number;
                  server_roles: number;
              };
              new_user: {
                  bots: number;
                  file_upload_size_limits: { [key: string]: number };
                  message_attachments: number;
                  message_length: number;
                  outgoing_friend_requests: number;
                  servers: number;
                  video: boolean;
                  video_aspect_ratio: number[];
                  video_resolution: number[];
                  voice_quality: number;
              };
          };
          livekit: {
              enabled: boolean;
              nodes: { lat: number; lon: number; name: string; public_url: string }[];
          };
      }

      Features enabled on this Revolt node

      • autumn: { enabled: boolean; url: string }

        File server service configuration

        • enabled: boolean

          Whether the service is enabled

        • url: string

          URL pointing to the service

      • captcha: { enabled: boolean; key: string }

        hCaptcha configuration

        • enabled: boolean

          Whether captcha is enabled

        • key: string

          Client key used for solving captcha

      • email: boolean

        Whether email verification is enabled

      • invite_only: boolean

        Whether this server is invite only

      • january: { enabled: boolean; url: string }

        Proxy service configuration

        • enabled: boolean

          Whether the service is enabled

        • url: string

          URL pointing to the service

      • legal_links: { guidelines: string; privacy_policy: string; terms_of_service: string }

        Legal links

        • guidelines: string

          Guidelines URL

        • privacy_policy: string

          Privacy Policy URL

        • terms_of_service: string

          Terms of Service URL

      • limits: {
            default: {
                bots: number;
                file_upload_size_limits: { [key: string]: number };
                message_attachments: number;
                message_length: number;
                outgoing_friend_requests: number;
                servers: number;
                video: boolean;
                video_aspect_ratio: number[];
                video_resolution: number[];
                voice_quality: number;
            };
            global: {
                body_limit_size: number;
                group_size: number;
                message_embeds: number;
                message_reactions: number;
                message_replies: number;
                new_user_hours: number;
                restrict_server_creation: string[];
                server_channels: number;
                server_emoji: number;
                server_roles: number;
            };
            new_user: {
                bots: number;
                file_upload_size_limits: { [key: string]: number };
                message_attachments: number;
                message_length: number;
                outgoing_friend_requests: number;
                servers: number;
                video: boolean;
                video_aspect_ratio: number[];
                video_resolution: number[];
                voice_quality: number;
            };
        }

        Limits

        • default: {
              bots: number;
              file_upload_size_limits: { [key: string]: number };
              message_attachments: number;
              message_length: number;
              outgoing_friend_requests: number;
              servers: number;
              video: boolean;
              video_aspect_ratio: number[];
              video_resolution: number[];
              voice_quality: number;
          }

          Default User Limits

          • bots: number

            Format: int64

            Max Owned Bots

          • file_upload_size_limits: { [key: string]: number }
          • message_attachments: number

            Format: int64

            max message attachments

          • message_length: number

            Format: int64

            Max message content length

          • outgoing_friend_requests: number

            Format: int64

            Max Outgoing Friend Requests

          • servers: number

            Format: int64

            max servers

          • video: boolean

            video streaming enabled

          • video_aspect_ratio: number[]

            min/max aspect ratios

          • video_resolution: number[]

            max video resolution (vertical, horizontal)

          • voice_quality: number

            Format: int64

            max audio quality

        • global: {
              body_limit_size: number;
              group_size: number;
              message_embeds: number;
              message_reactions: number;
              message_replies: number;
              new_user_hours: number;
              restrict_server_creation: string[];
              server_channels: number;
              server_emoji: number;
              server_roles: number;
          }

          Global Limits

          • body_limit_size: number

            Format: int64

          • group_size: number

            Format: int64

            max group size

          • message_embeds: number

            Format: int64

            max message embeds

          • message_reactions: number

            Format: int64

            max reactions per message

          • message_replies: number

            Format: int64

            max replies

          • new_user_hours: number

            Format: int64

            New user hours

          • restrict_server_creation: string[]

            restrict server creation to these users. if blank, all users can create servers

          • server_channels: number

            Format: int64

            max server channels

          • server_emoji: number

            Format: int64

            max server emoji

          • server_roles: number

            Format: int64

            max server roles

        • new_user: {
              bots: number;
              file_upload_size_limits: { [key: string]: number };
              message_attachments: number;
              message_length: number;
              outgoing_friend_requests: number;
              servers: number;
              video: boolean;
              video_aspect_ratio: number[];
              video_resolution: number[];
              voice_quality: number;
          }

          New User Limits

          • bots: number

            Format: int64

            Max Owned Bots

          • file_upload_size_limits: { [key: string]: number }
          • message_attachments: number

            Format: int64

            max message attachments

          • message_length: number

            Format: int64

            Max message content length

          • outgoing_friend_requests: number

            Format: int64

            Max Outgoing Friend Requests

          • servers: number

            Format: int64

            max servers

          • video: boolean

            video streaming enabled

          • video_aspect_ratio: number[]

            min/max aspect ratios

          • video_resolution: number[]

            max video resolution (vertical, horizontal)

          • voice_quality: number

            Format: int64

            max audio quality

      • livekit: {
            enabled: boolean;
            nodes: { lat: number; lon: number; name: string; public_url: string }[];
        }

        Voice server configuration

        • enabled: boolean

          Whether voice is enabled

        • nodes: { lat: number; lon: number; name: string; public_url: string }[]

          All livekit nodes

    • revolt: string

      Revolt API Version

    • vapid: string

      Web Push VAPID public key

    • ws: string

      WebSocket URL

configured: Accessor<boolean>
connectionFailureCount: Accessor<number>
entitlements: Accessor<Entitlement[]>

Entitlements the current user holds, as last sent by the server. Note that passing an expiration date will NOT remove its data, so you may need to keep track of expiration yourself.

events: EventClient<1>
options: ClientOptions
ready: Accessor<boolean>
serverMembers: ServerMemberCollection
user: undefined | User

Accessors

  • get authenticationHeader(): [string, string]

    Get authentication header

    Returns [string, string]

  • get limits(): | undefined
    | {
        bots: number;
        file_upload_size_limits: { [key: string]: number };
        message_attachments: number;
        message_length: number;
        outgoing_friend_requests: number;
        servers: number;
        video: boolean;
        video_aspect_ratio: number[];
        video_resolution: number[];
        voice_quality: number;
    }

    Backend enforced limits for the logged in user

    Returns
        | undefined
        | {
            bots: number;
            file_upload_size_limits: { [key: string]: number };
            message_attachments: number;
            message_length: number;
            outgoing_friend_requests: number;
            servers: number;
            video: boolean;
            video_aspect_ratio: number[];
            video_resolution: number[];
            voice_quality: number;
        }

    • undefined
    • {
          bots: number;
          file_upload_size_limits: { [key: string]: number };
          message_attachments: number;
          message_length: number;
          outgoing_friend_requests: number;
          servers: number;
          video: boolean;
          video_aspect_ratio: number[];
          video_resolution: number[];
          voice_quality: number;
      }
      • bots: number

        Format: int64

        Max Owned Bots

      • file_upload_size_limits: { [key: string]: number }
      • message_attachments: number

        Format: int64

        max message attachments

      • message_length: number

        Format: int64

        Max message content length

      • outgoing_friend_requests: number

        Format: int64

        Max Outgoing Friend Requests

      • servers: number

        Format: int64

        max servers

      • video: boolean

        video streaming enabled

      • video_aspect_ratio: number[]

        min/max aspect ratios

      • video_resolution: number[]

        max video resolution (vertical, horizontal)

      • voice_quality: number

        Format: int64

        max audio quality

  • get sessionId(): undefined | string

    Current session id

    Returns undefined | string

Methods

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends string | symbol

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • eventName: K
    • ...args: InternalGetAsyncEventEmitterEventParameters<AsyncEventEmitter<Events>, K>

    Returns boolean

  • Type Parameters

    • K extends string | symbol

    Parameters

    • eventName: K
    • ...args: InternalGetAsyncEventEmitterEventParameters<AsyncEventEmitter<Events>, K>

    Returns boolean

  • Returns (string | symbol)[] & (keyof AsyncEventEmitterPredefinedEvents)[] & (
        keyof Events
    )[]

  • Returns number

  • Fetches the server config. This is called automatically by login() or loginBot(), but you can call it first manually if you need to override any config options.

    Override example:

    await client.initConfig((config) => {
    config.ws = "wss://example.com";
    });

    Parameters

    • OptionalpreConfig: (
          config: {
              app: string;
              build: {
                  commit_sha: string;
                  commit_timestamp: string;
                  origin_url: string;
                  semver: string;
                  timestamp: string;
              };
              features: {
                  autumn: { enabled: boolean; url: string };
                  captcha: { enabled: boolean; key: string };
                  email: boolean;
                  invite_only: boolean;
                  january: { enabled: boolean; url: string };
                  legal_links: {
                      guidelines: string;
                      privacy_policy: string;
                      terms_of_service: string;
                  };
                  limits: {
                      default: {
                          bots: number;
                          file_upload_size_limits: { [key: string]: number };
                          message_attachments: number;
                          message_length: number;
                          outgoing_friend_requests: number;
                          servers: number;
                          video: boolean;
                          video_aspect_ratio: number[];
                          video_resolution: number[];
                          voice_quality: number;
                      };
                      global: {
                          body_limit_size: number;
                          group_size: number;
                          message_embeds: number;
                          message_reactions: number;
                          message_replies: number;
                          new_user_hours: number;
                          restrict_server_creation: string[];
                          server_channels: number;
                          server_emoji: number;
                          server_roles: number;
                      };
                      new_user: {
                          bots: number;
                          file_upload_size_limits: { [key: string]: number };
                          message_attachments: number;
                          message_length: number;
                          outgoing_friend_requests: number;
                          servers: number;
                          video: boolean;
                          video_aspect_ratio: number[];
                          video_resolution: number[];
                          voice_quality: number;
                      };
                  };
                  livekit: {
                      enabled: boolean;
                      nodes: { lat: number; lon: number; name: string; public_url: string }[];
                  };
              };
              revolt: string;
              vapid: string;
              ws: string;
          },
      ) => void

    Returns Promise<void>

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • eventName: K

    Returns number

  • Parameters

    • eventName: string | symbol

    Returns number

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • eventName: K

    Returns Exclude<
        InternalAsyncEventEmitterInternalListenerForEvent<
            AsyncEventEmitter<Events>,
            K,
            Events,
        >["listener"],
        undefined,
    >[]

  • Type Parameters

    • K extends string | symbol

    Parameters

    • eventName: K

    Returns Exclude<
        InternalAsyncEventEmitterInternalListenerForEvent<
            AsyncEventEmitter<Events>,
            K,
            Events,
        >["listener"],
        undefined,
    >[]

  • Log in with auth data, creating a new session in the process.

    Parameters

    • details:
          | { email: string; friendly_name?: null
          | string; password: string }
          | {
              friendly_name?: null | string;
              mfa_response?:
                  | null
                  | { password: string }
                  | { recovery_code: string }
                  | { totp_code: string };
              mfa_ticket: string;
          }

      Login data object

      • { email: string; friendly_name?: null | string; password: string }
        • email: string

          Email

        • Optionalfriendly_name?: null | string

          Friendly name used for the session

        • password: string

          Password

      • {
            friendly_name?: null | string;
            mfa_response?:
                | null
                | { password: string }
                | { recovery_code: string }
                | { totp_code: string };
            mfa_ticket: string;
        }
        • Optionalfriendly_name?: null | string

          Friendly name used for the session

        • Optionalmfa_response?: null | { password: string } | { recovery_code: string } | { totp_code: string }

          Valid MFA response

          This will take precedence over the password field where applicable

        • mfa_ticket: string

          Unvalidated or authorised MFA ticket

          Used to resolve the correct account

    Returns Promise<void>

    An on-boarding function if on-boarding is required, undefined otherwise

  • Log in as a bot

    Parameters

    • token: string

      Bot token

    Returns Promise<void>

  • Log out of current session

    This function prepares the client for disposal by removing all event listeners and killing the events socket.

    Returns Promise<void>

  • Prepare a markdown-based message to be displayed to the user as plain text.

    Parameters

    • source: string

      Source markdown text

    Returns string

    Modified plain text

  • Prepare a markdown-based message to be displayed to the user as plain text. This method will fetch each user or channel if they are missing. Useful for serviceworkers.

    Parameters

    • source: string

      Source markdown text

    Returns Promise<string>

    Modified plain text

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends string | symbol

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends string | symbol

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends string | symbol

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends string | symbol

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends string | symbol

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Proxy a file through January.

    Parameters

    • url: string

      URL to proxy

    Returns undefined | string

    Proxied media URL

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • eventName: K

    Returns InternalAsyncEventEmitterInternalListenerForEvent<
        AsyncEventEmitter<Events>,
        K,
        Events,
    >[]

  • Type Parameters

    • K extends string | symbol

    Parameters

    • eventName: K

    Returns InternalAsyncEventEmitterInternalListenerForEvent<
        AsyncEventEmitter<Events>,
        K,
        Events,
    >[]

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • event: K

    Returns this

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • Optionalevent: K

    Returns this

  • Parameters

    • event: string | symbol

    Returns this

  • Parameters

    • Optionalevent: string | symbol

    Returns this

  • Type Parameters

    • K extends (keyof AsyncEventEmitterPredefinedEvents) | (keyof Events)

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Type Parameters

    • K extends string | symbol

    Parameters

    • eventName: K
    • listener: Exclude<
          InternalAsyncEventEmitterInternalListenerForEvent<
              AsyncEventEmitter<Events>,
              K,
              Events,
          >["listener"],
          undefined,
      >

    Returns this

  • Internal

    Replace the current user's entitlements, from the events socket

    Parameters

    • entitlements: Entitlement[]

    Returns void

  • Parameters

    • n: number

    Returns this

  • Upload a file

    Parameters

    • tag: string

      Tag

    • file: File

      File

    • OptionaluploadUrl: string

      Media server upload route

    Returns Promise<string>

  • Returns Promise<boolean>

  • Type Parameters

    • EventMap extends {}
    • EventName extends PropertyKey = (keyof AsyncEventEmitterPredefinedEvents) | keyof EventMap

    Parameters

    • emitter: AsyncEventEmitter<EventMap>
    • eventName: (keyof AsyncEventEmitterPredefinedEvents) | EventName

    Returns number

  • Parameters

    • emitter: AsyncEventEmitter<any>
    • eventName: string | symbol

    Returns number

  • Type Parameters

    • EventMap extends {}
    • EventName extends PropertyKey = (keyof AsyncEventEmitterPredefinedEvents) | keyof EventMap

    Parameters

    • emitter: AsyncEventEmitter<EventMap>
    • eventName: EventName
    • Optionaloptions: AbortableMethods

    Returns AsyncGenerator<
        InternalGetAsyncEventEmitterEventParameters<
            AsyncEventEmitter<EventMap>,
            EventName,
            EventMap,
        >,
        void,
    >

  • Parameters

    • emitter: AsyncEventEmitter<any>
    • eventName: string | symbol
    • Optionaloptions: AbortableMethods

    Returns AsyncGenerator<any[], void>

  • Type Parameters

    • EventMap extends {}
    • EventName extends PropertyKey = (keyof AsyncEventEmitterPredefinedEvents) | keyof EventMap

    Parameters

    • emitter: AsyncEventEmitter<EventMap>
    • eventName: EventName
    • Optionaloptions: AbortableMethods

    Returns Promise<
        InternalGetAsyncEventEmitterEventParameters<
            AsyncEventEmitter<EventMap>,
            EventName,
            EventMap,
        >,
    >

  • Parameters

    • emitter: AsyncEventEmitter<any>
    • eventName: string | symbol
    • Optionaloptions: AbortableMethods

    Returns Promise<any[]>