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>
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

  • 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[]>