Class MessageCollection

Collection of Messages

Hierarchy (View Summary)

Constructors

Properties

client: Client
getUnderlyingObject: (id: string) => HydratedMessage
updateUnderlyingObject: SetStoreFunction<Record<string, HydratedMessage>>

Methods

  • Create a new instance of an object

    Parameters

    • id: string

      Id

    • type:
          | "user"
          | "server"
          | "channel"
          | "bot"
          | "channelUnread"
          | "channelWebhook"
          | "emoji"
          | "message"
          | "serverMember"
          | "session"

      Type

    • instance: Message

      Instance

    • context: unknown

      Context

    • Optionaldata: unknown

      Data

    Returns void

  • Get or create

    Parameters

    • id: string

      Id

    • data: {
          _id: string;
          attachments?:
              | null
              | {
                  _id: string;
                  content_type: string;
                  deleted?: null
                  | boolean;
                  filename: string;
                  message_id?: null | string;
                  metadata:
                      | { type: "File" }
                      | { type: "Text" }
                      | { height: number; type: "Image"; width: number }
                      | { height: number; type: "Video"; width: number }
                      | { type: "Audio" };
                  object_id?: null | string;
                  reported?: null | boolean;
                  server_id?: null | string;
                  size: number;
                  tag: string;
                  user_id?: null | string;
              }[];
          author: string;
          channel: string;
          content?: null
          | string;
          edited?: null | string;
          embeds?:
              | null
              | (
                  | {
                      colour?: null
                      | string;
                      description?: null | string;
                      icon_url?: null | string;
                      image?:
                          | null
                          | {
                              height: number;
                              size: "Large"
                              | "Preview";
                              url: string;
                              width: number;
                          };
                      original_url?: null
                      | string;
                      site_name?: null | string;
                      special?:
                          | null
                          | { type: "None" }
                          | { type: "GIF" }
                          | { id: string; timestamp?: null | string; type: "YouTube" }
                          | { content_type: "Channel"; id: string; type: "Lightspeed" }
                          | {
                              content_type: "Video" | "Channel" | "Clip";
                              id: string;
                              type: "Twitch";
                          }
                          | { content_type: string; id: string; type: "Spotify" }
                          | { type: "Soundcloud" }
                          | { content_type: "Album" | "Track"; id: string; type: "Bandcamp" }
                          | { album_id: string; track_id?: null | string; type: "AppleMusic" }
                          | { id: string; type: "Streamable" };
                      title?: null | string;
                      type: "Website";
                      url?: null | string;
                      video?: null | { height: number; url: string; width: number };
                  }
                  | {
                      height: number;
                      size: "Large"
                      | "Preview";
                      type: "Image";
                      url: string;
                      width: number;
                  }
                  | { height: number; type: "Video"; url: string; width: number }
                  | {
                      colour?: null | string;
                      description?: null | string;
                      icon_url?: null | string;
                      media?:
                          | null
                          | {
                              _id: string;
                              content_type: string;
                              deleted?: null
                              | boolean;
                              filename: string;
                              message_id?: null | string;
                              metadata:
                                  | { type: "File" }
                                  | { type: "Text" }
                                  | { height: number; type: "Image"; width: number }
                                  | { height: number; type: "Video"; width: number }
                                  | { type: "Audio" };
                              object_id?: null | string;
                              reported?: null | boolean;
                              server_id?: null | string;
                              size: number;
                              tag: string;
                              user_id?: null | string;
                          };
                      title?: null
                      | string;
                      type: "Text";
                      url?: null | string;
                  }
                  | { type: "None" }
              )[];
          flags?: number;
          interactions?: {
              reactions?: null | string[];
              restrict_reactions?: boolean;
          };
          masquerade?: | null
          | { avatar?: null
          | string; colour?: null | string; name?: null | string };
          member?:
              | null
              | {
                  _id: { server: string; user: string };
                  avatar?:
                      | null
                      | {
                          _id: string;
                          content_type: string;
                          deleted?: null
                          | boolean;
                          filename: string;
                          message_id?: null | string;
                          metadata:
                              | { type: "File" }
                              | { type: "Text" }
                              | { height: number; type: "Image"; width: number }
                              | { height: number; type: "Video"; width: number }
                              | { type: "Audio" };
                          object_id?: null | string;
                          reported?: null | boolean;
                          server_id?: null | string;
                          size: number;
                          tag: string;
                          user_id?: null | string;
                      };
                  joined_at: string;
                  nickname?: null
                  | string;
                  roles?: string[];
                  timeout?: null | string;
              };
          mentions?: null
          | string[];
          nonce?: null | string;
          pinned?: null | boolean;
          reactions?: { [key: string]: string[] };
          replies?: null | string[];
          system?:
              | null
              | { content: string; type: "text" }
              | { by: string; id: string; type: "user_added" }
              | { by: string; id: string; type: "user_remove" }
              | { id: string; type: "user_joined" }
              | { id: string; type: "user_left" }
              | { id: string; type: "user_kicked" }
              | { id: string; type: "user_banned" }
              | { by: string; name: string; type: "channel_renamed" }
              | { by: string; type: "channel_description_changed" }
              | { by: string; type: "channel_icon_changed" }
              | { from: string; to: string; type: "channel_ownership_changed" }
              | { by: string; id: string; type: "message_pinned" }
              | { by: string; id: string; type: "message_unpinned" };
          user?:
              | null
              | {
                  _id: string;
                  avatar?: | null
                  | {
                      _id: string;
                      content_type: string;
                      deleted?: null
                      | boolean;
                      filename: string;
                      message_id?: null | string;
                      metadata:
                          | { type: "File" }
                          | { type: "Text" }
                          | { height: number; type: "Image"; width: number }
                          | { height: number; type: "Video"; width: number }
                          | { type: "Audio" };
                      object_id?: null | string;
                      reported?: null | boolean;
                      server_id?: null | string;
                      size: number;
                      tag: string;
                      user_id?: null | string;
                  };
                  badges?: number;
                  bot?: null
                  | { owner: string };
                  discriminator: string;
                  display_name?: null | string;
                  flags?: number;
                  online: boolean;
                  privileged?: boolean;
                  relations?: {
                      _id: string;
                      status:
                          | "User"
                          | "None"
                          | "Friend"
                          | "Outgoing"
                          | "Incoming"
                          | "Blocked"
                          | "BlockedOther";
                  }[];
                  relationship: | "User"
                  | "None"
                  | "Friend"
                  | "Outgoing"
                  | "Incoming"
                  | "Blocked"
                  | "BlockedOther";
                  status?: | null
                  | {
                      presence?: null
                      | "Online"
                      | "Idle"
                      | "Focus"
                      | "Busy"
                      | "Invisible";
                      text?: null | string;
                  };
                  username: string;
              };
          webhook?: null
          | { avatar?: null | string; name: string };
      }

      Data

      • _id: string

        Unique Id

      • Optionalattachments?:
            | null
            | {
                _id: string;
                content_type: string;
                deleted?: null
                | boolean;
                filename: string;
                message_id?: null | string;
                metadata:
                    | { type: "File" }
                    | { type: "Text" }
                    | { height: number; type: "Image"; width: number }
                    | { height: number; type: "Video"; width: number }
                    | { type: "Audio" };
                object_id?: null | string;
                reported?: null | boolean;
                server_id?: null | string;
                size: number;
                tag: string;
                user_id?: null | string;
            }[]

        Array of attachments

      • author: string

        Id of the user or webhook that sent this message

      • channel: string

        Id of the channel this message was sent in

      • Optionalcontent?: null | string

        Message content

      • Optionaledited?: null | string

        Time at which this message was last edited

      • Optionalembeds?:
            | null
            | (
                | {
                    colour?: null
                    | string;
                    description?: null | string;
                    icon_url?: null | string;
                    image?:
                        | null
                        | {
                            height: number;
                            size: "Large"
                            | "Preview";
                            url: string;
                            width: number;
                        };
                    original_url?: null
                    | string;
                    site_name?: null | string;
                    special?:
                        | null
                        | { type: "None" }
                        | { type: "GIF" }
                        | { id: string; timestamp?: null | string; type: "YouTube" }
                        | { content_type: "Channel"; id: string; type: "Lightspeed" }
                        | {
                            content_type: "Video" | "Channel" | "Clip";
                            id: string;
                            type: "Twitch";
                        }
                        | { content_type: string; id: string; type: "Spotify" }
                        | { type: "Soundcloud" }
                        | { content_type: "Album" | "Track"; id: string; type: "Bandcamp" }
                        | { album_id: string; track_id?: null | string; type: "AppleMusic" }
                        | { id: string; type: "Streamable" };
                    title?: null | string;
                    type: "Website";
                    url?: null | string;
                    video?: null | { height: number; url: string; width: number };
                }
                | {
                    height: number;
                    size: "Large"
                    | "Preview";
                    type: "Image";
                    url: string;
                    width: number;
                }
                | { height: number; type: "Video"; url: string; width: number }
                | {
                    colour?: null | string;
                    description?: null | string;
                    icon_url?: null | string;
                    media?:
                        | null
                        | {
                            _id: string;
                            content_type: string;
                            deleted?: null
                            | boolean;
                            filename: string;
                            message_id?: null | string;
                            metadata:
                                | { type: "File" }
                                | { type: "Text" }
                                | { height: number; type: "Image"; width: number }
                                | { height: number; type: "Video"; width: number }
                                | { type: "Audio" };
                            object_id?: null | string;
                            reported?: null | boolean;
                            server_id?: null | string;
                            size: number;
                            tag: string;
                            user_id?: null | string;
                        };
                    title?: null
                    | string;
                    type: "Text";
                    url?: null | string;
                }
                | { type: "None" }
            )[]

        Attached embeds to this message

      • Optionalflags?: number

        Format: uint32

      • Optionalinteractions?: { reactions?: null | string[]; restrict_reactions?: boolean }

        Information about how this message should be interacted with

        • Optionalreactions?: null | string[]

          Reactions which should always appear and be distinct

        • Optionalrestrict_reactions?: boolean

          Whether reactions should be restricted to the given list

          Can only be set to true if reactions list is of at least length 1

      • Optionalmasquerade?: null | { avatar?: null | string; colour?: null | string; name?: null | string }

        Name and / or avatar overrides for this message

      • Optionalmember?:
            | null
            | {
                _id: { server: string; user: string };
                avatar?:
                    | null
                    | {
                        _id: string;
                        content_type: string;
                        deleted?: null
                        | boolean;
                        filename: string;
                        message_id?: null | string;
                        metadata:
                            | { type: "File" }
                            | { type: "Text" }
                            | { height: number; type: "Image"; width: number }
                            | { height: number; type: "Video"; width: number }
                            | { type: "Audio" };
                        object_id?: null | string;
                        reported?: null | boolean;
                        server_id?: null | string;
                        size: number;
                        tag: string;
                        user_id?: null | string;
                    };
                joined_at: string;
                nickname?: null
                | string;
                roles?: string[];
                timeout?: null | string;
            }

        The member that sent this message

      • Optionalmentions?: null | string[]

        Array of user ids mentioned in this message

      • Optionalnonce?: null | string

        Unique value generated by client sending this message

      • Optionalpinned?: null | boolean

        Whether or not the message in pinned

      • Optionalreactions?: { [key: string]: string[] }

        Hashmap of emoji IDs to array of user IDs

      • Optionalreplies?: null | string[]

        Array of message ids this message is replying to

      • Optionalsystem?:
            | null
            | { content: string; type: "text" }
            | { by: string; id: string; type: "user_added" }
            | { by: string; id: string; type: "user_remove" }
            | { id: string; type: "user_joined" }
            | { id: string; type: "user_left" }
            | { id: string; type: "user_kicked" }
            | { id: string; type: "user_banned" }
            | { by: string; name: string; type: "channel_renamed" }
            | { by: string; type: "channel_description_changed" }
            | { by: string; type: "channel_icon_changed" }
            | { from: string; to: string; type: "channel_ownership_changed" }
            | { by: string; id: string; type: "message_pinned" }
            | { by: string; id: string; type: "message_unpinned" }

        System message

      • Optionaluser?:
            | null
            | {
                _id: string;
                avatar?: | null
                | {
                    _id: string;
                    content_type: string;
                    deleted?: null
                    | boolean;
                    filename: string;
                    message_id?: null | string;
                    metadata:
                        | { type: "File" }
                        | { type: "Text" }
                        | { height: number; type: "Image"; width: number }
                        | { height: number; type: "Video"; width: number }
                        | { type: "Audio" };
                    object_id?: null | string;
                    reported?: null | boolean;
                    server_id?: null | string;
                    size: number;
                    tag: string;
                    user_id?: null | string;
                };
                badges?: number;
                bot?: null
                | { owner: string };
                discriminator: string;
                display_name?: null | string;
                flags?: number;
                online: boolean;
                privileged?: boolean;
                relations?: {
                    _id: string;
                    status:
                        | "User"
                        | "None"
                        | "Friend"
                        | "Outgoing"
                        | "Incoming"
                        | "Blocked"
                        | "BlockedOther";
                }[];
                relationship: | "User"
                | "None"
                | "Friend"
                | "Outgoing"
                | "Incoming"
                | "Blocked"
                | "BlockedOther";
                status?: | null
                | {
                    presence?: null
                    | "Online"
                    | "Idle"
                    | "Focus"
                    | "Busy"
                    | "Invisible";
                    text?: null | string;
                };
                username: string;
            }

        The user that sent this message

      • Optionalwebhook?: null | { avatar?: null | string; name: string }

        The webhook that sent this message

    • isNew: boolean = false

      Whether this object is new

    Returns Message