stoatbot.js
    Preparing search index...

    Class TextChannel

    Represents a text channel in a server.

    Hierarchy (View Summary)

    Implements

    Index

    Constructors

    • Creates a new TextChannel instance.

      Parameters

      • client: client

        The client instance.

      • data: {
            _id: string;
            channel_type: "TextChannel";
            default_permissions?: { a: number; d: number } | null;
            description?: string | null;
            icon?:
                | {
                    _id: string;
                    content_type: string;
                    deleted?: boolean
                    | null;
                    filename: string;
                    message_id?: string | null;
                    metadata:
                        | { type: "File" }
                        | { type: "Text" }
                        | { height: number; type: "Image"; width: number }
                        | { height: number; type: "Video"; width: number }
                        | { type: "Audio" };
                    object_id?: string | null;
                    reported?: boolean | null;
                    server_id?: string | null;
                    size: number;
                    tag: string;
                    user_id?: string | null;
                }
                | null;
            last_message_id?: string
            | null;
            name: string;
            nsfw?: boolean;
            role_permissions?: { [key: string]: { a: number; d: number } };
            server: string;
        }

        The raw data for the text channel from the API.

        • _id: string

          Unique Id

        • channel_type: "TextChannel"
        • Optionaldefault_permissions?: { a: number; d: number } | null

          Default permissions assigned to users in this channel

        • Optionaldescription?: string | null

          Channel description

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

          Custom icon attachment

        • Optionallast_message_id?: string | null

          Id of the last message sent in this channel

        • name: string

          Display name of the channel

        • Optionalnsfw?: boolean

          Whether this channel is marked as not safe for work

        • Optionalrole_permissions?: { [key: string]: { a: number; d: number } }

          Permissions assigned based on role to this channel

        • server: string

          Id of the server this channel belongs to

      Returns TextChannel

    Properties

    client: client

    The client instance.

    description: string | null = null

    The description of the channel, or null if none is set.

    icon: Attachment | null = null

    The icon of the channel, or null if none is set.

    id: string

    The unique identifier for the object.

    lastMessageId: string | null = null

    The ID of the last message sent in this text channel, if any.

    messages: MessageManager = ...

    Manages the messages in this text channel.

    name: string

    The name of the channel.

    nsfw: boolean = false

    Whether the channel is marked as NSFW (Not Safe For Work).

    overwrites: Map<string, Overwrite> = ...

    The permission overwrites for the channel.

    serverId: string

    The ID of the server this channel belongs to.

    type: TEXT = ChannelTypes.TEXT

    The type of the channel, which is always TEXT for text channels.

    Accessors

    Methods

    • Deletes the current channel instance from the client's channel collection.

      This method interacts with the client's channel management system to remove the channel. Once deleted, the channel will no longer be accessible through the client.

      Returns Promise<void>

      A promise that resolves when the channel has been successfully deleted.

      const channel = client.channels.get('1234567890');
      if (channel) {
      await channel.delete();
      console.log('Channel deleted successfully.');
      }
    • Deletes a webhook.

      Parameters

      • webhookId: string

        The ID of the webhook to delete

      • token: string

        The token of the webhook

      Returns Promise<void>

      Promise that resolves when the webhook is deleted

      await channel.deleteWebhook("webhookId", "webhookToken");
      console.log("Webhook deleted successfully");
    • Sends a message through a webhook in this channel.

      Parameters

      • webhookId: string

        The ID of the webhook to send the message through

      • token: string

        The token of the webhook

      • content: string | MessageOptions

        The message content. Can be a string or MessageOptions object with attachments and embeds

      Returns Promise<
          {
              _id: string;
              attachments?: | {
                  _id: string;
                  content_type: string;
                  deleted?: boolean
                  | null;
                  filename: string;
                  message_id?: string | null;
                  metadata:
                      | { type: "File" }
                      | { type: "Text" }
                      | { height: number; type: "Image"; width: number }
                      | { height: number; type: "Video"; width: number }
                      | { type: "Audio" };
                  object_id?: string | null;
                  reported?: boolean | null;
                  server_id?: string | null;
                  size: number;
                  tag: string;
                  user_id?: string | null;
              }[]
              | null;
              author: string;
              channel: string;
              content?: string
              | null;
              edited?: string | null;
              embeds?:
                  | (
                      | {
                          colour?: string
                          | null;
                          description?: string | null;
                          icon_url?: string | null;
                          image?:
                              | {
                                  height: number;
                                  size: "Large"
                                  | "Preview";
                                  url: string;
                                  width: number;
                              }
                              | null;
                          original_url?: string
                          | null;
                          site_name?: string | null;
                          special?:
                              | { type: "None" }
                              | { type: "GIF" }
                              | { id: string; timestamp?: string | null; 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?: string | null; type: "AppleMusic" }
                              | { id: string; type: "Streamable" }
                              | null;
                          title?: string | null;
                          type: "Website";
                          url?: string | null;
                          video?: { height: number; url: string; width: number } | null;
                      }
                      | {
                          height: number;
                          size: "Large"
                          | "Preview";
                          type: "Image";
                          url: string;
                          width: number;
                      }
                      | { height: number; type: "Video"; url: string; width: number }
                      | {
                          colour?: string | null;
                          description?: string | null;
                          icon_url?: string | null;
                          media?:
                              | {
                                  _id: string;
                                  content_type: string;
                                  deleted?: boolean
                                  | null;
                                  filename: string;
                                  message_id?: string | null;
                                  metadata:
                                      | { type: "File" }
                                      | { type: "Text" }
                                      | { height: number; type: "Image"; width: number }
                                      | { height: number; type: "Video"; width: number }
                                      | { type: "Audio" };
                                  object_id?: string | null;
                                  reported?: boolean | null;
                                  server_id?: string | null;
                                  size: number;
                                  tag: string;
                                  user_id?: string | null;
                              }
                              | null;
                          title?: string
                          | null;
                          type: "Text";
                          url?: string | null;
                      }
                      | { type: "None" }
                  )[]
                  | null;
              flags?: number;
              interactions?: {
                  reactions?: string[] | null;
                  restrict_reactions?: boolean;
              };
              masquerade?: | {
                  avatar?: string
                  | null;
                  colour?: string | null;
                  name?: string | null;
              }
              | null;
              member?: | {
                  _id: { server: string; user: string };
                  avatar?:
                      | {
                          _id: string;
                          content_type: string;
                          deleted?: boolean
                          | null;
                          filename: string;
                          message_id?: string | null;
                          metadata:
                              | { type: "File" }
                              | { type: "Text" }
                              | { height: number; type: "Image"; width: number }
                              | { height: number; type: "Video"; width: number }
                              | { type: "Audio" };
                          object_id?: string | null;
                          reported?: boolean | null;
                          server_id?: string | null;
                          size: number;
                          tag: string;
                          user_id?: string | null;
                      }
                      | null;
                  joined_at: string;
                  nickname?: string
                  | null;
                  roles?: string[];
                  timeout?: string | null;
              }
              | null;
              mentions?: string[]
              | null;
              nonce?: string | null;
              pinned?: boolean | null;
              reactions?: { [key: string]: string[] };
              replies?: string[] | null;
              role_mentions?: string[] | null;
              system?:
                  | { 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" }
                  | null;
              user?:
                  | {
                      _id: string;
                      avatar?: | {
                          _id: string;
                          content_type: string;
                          deleted?: boolean
                          | null;
                          filename: string;
                          message_id?: string | null;
                          metadata:
                              | { type: "File" }
                              | { type: "Text" }
                              | { height: number; type: "Image"; width: number }
                              | { height: number; type: "Video"; width: number }
                              | { type: "Audio" };
                          object_id?: string | null;
                          reported?: boolean | null;
                          server_id?: string | null;
                          size: number;
                          tag: string;
                          user_id?: string | null;
                      }
                      | null;
                      badges?: number;
                      bot?: { owner: string }
                      | null;
                      discriminator: string;
                      display_name?: string | null;
                      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?: | {
                          presence?: "Online"
                          | "Idle"
                          | "Focus"
                          | "Busy"
                          | "Invisible"
                          | null;
                          text?: string | null;
                      }
                      | null;
                      username: string;
                  }
                  | null;
              webhook?: { avatar?: string | null; name: string }
              | null;
          },
      >

      Promise resolving to the sent message

      // Send a simple text message
      await channel.sendWebhookMessage("webhookId", "token", "Hello, world!");

      // Send a message with embeds and attachments
      await channel.sendWebhookMessage("webhookId", "token", {
      content: "Check out this image!",
      attachments: ["https://example.com/image.png"],
      embeds: [myEmbed]
      });
    • Sets default permissions for this channel.

      Parameters

      • allow:
            | (
                | "ManageChannel"
                | "ManageServer"
                | "ManagePermissions"
                | "ManageRole"
                | "ManageCustomisation"
                | "KickMembers"
                | "BanMembers"
                | "TimeoutMembers"
                | "AssignRoles"
                | "ChangeNickname"
                | "ManageNicknames"
                | "ChangeAvatar"
                | "RemoveAvatars"
                | "ViewChannel"
                | "ReadMessageHistory"
                | "SendMessage"
                | "ManageMessages"
                | "ManageWebhooks"
                | "InviteOthers"
                | "SendEmbeds"
                | "UploadFiles"
                | "Masquerade"
                | "React"
                | "Connect"
                | "Speak"
                | "Video"
                | "MuteMembers"
                | "DeafenMembers"
                | "MoveMembers"
                | "MentionEveryone"
                | "MentionRoles"
                | "GrantAll"
            )[]
            | undefined

        Array of permissions to allow by default.

      Returns Promise<void>

      A promise that resolves when the permissions have been updated.

      If the channel ID is invalid.

      // Allow specific permissions
      await channel.setDefaultPermissions(["ViewChannel", "SendMessage"]);
    • Sets default permissions for this channel.

      Parameters

      • options: {
            allow?: (
                | "ManageChannel"
                | "ManageServer"
                | "ManagePermissions"
                | "ManageRole"
                | "ManageCustomisation"
                | "KickMembers"
                | "BanMembers"
                | "TimeoutMembers"
                | "AssignRoles"
                | "ChangeNickname"
                | "ManageNicknames"
                | "ChangeAvatar"
                | "RemoveAvatars"
                | "ViewChannel"
                | "ReadMessageHistory"
                | "SendMessage"
                | "ManageMessages"
                | "ManageWebhooks"
                | "InviteOthers"
                | "SendEmbeds"
                | "UploadFiles"
                | "Masquerade"
                | "React"
                | "Connect"
                | "Speak"
                | "Video"
                | "MuteMembers"
                | "DeafenMembers"
                | "MoveMembers"
                | "MentionEveryone"
                | "MentionRoles"
                | "GrantAll"
            )[];
            deny?: (
                | "ManageChannel"
                | "ManageServer"
                | "ManagePermissions"
                | "ManageRole"
                | "ManageCustomisation"
                | "KickMembers"
                | "BanMembers"
                | "TimeoutMembers"
                | "AssignRoles"
                | "ChangeNickname"
                | "ManageNicknames"
                | "ChangeAvatar"
                | "RemoveAvatars"
                | "ViewChannel"
                | "ReadMessageHistory"
                | "SendMessage"
                | "ManageMessages"
                | "ManageWebhooks"
                | "InviteOthers"
                | "SendEmbeds"
                | "UploadFiles"
                | "Masquerade"
                | "React"
                | "Connect"
                | "Speak"
                | "Video"
                | "MuteMembers"
                | "DeafenMembers"
                | "MoveMembers"
                | "MentionEveryone"
                | "MentionRoles"
                | "GrantAll"
            )[];
        }

        Object containing allow and/or deny permissions.

      Returns Promise<void>

      A promise that resolves when the permissions have been updated.

      If the channel ID is invalid or if both allow and deny are undefined.

      // Allow specific permissions only
      await channel.setDefaultPermissions({ allow: ["ViewChannel", "SendMessage"] });

      // Deny specific permissions only
      await channel.setDefaultPermissions({ deny: ["ManageMessages"] });

      // Set both allow and deny permissions
      await channel.setDefaultPermissions({
      allow: ["ViewChannel"],
      deny: ["ManageMessages"]
      });
    • Sets default permissions for this channel (legacy format).

      Parameters

      Returns Promise<void>

      A promise that resolves when the permissions have been updated.

      If the channel ID is invalid.

      // Legacy format
      await channel.setDefaultPermissions({
      a: ["ViewChannel"],
      d: ["ManageMessages"]
      });
    • Sets role permissions for this channel.

      Parameters

      • roleId: string

        The ID of the role to set permissions for.

      • allow:
            | (
                | "ManageChannel"
                | "ManageServer"
                | "ManagePermissions"
                | "ManageRole"
                | "ManageCustomisation"
                | "KickMembers"
                | "BanMembers"
                | "TimeoutMembers"
                | "AssignRoles"
                | "ChangeNickname"
                | "ManageNicknames"
                | "ChangeAvatar"
                | "RemoveAvatars"
                | "ViewChannel"
                | "ReadMessageHistory"
                | "SendMessage"
                | "ManageMessages"
                | "ManageWebhooks"
                | "InviteOthers"
                | "SendEmbeds"
                | "UploadFiles"
                | "Masquerade"
                | "React"
                | "Connect"
                | "Speak"
                | "Video"
                | "MuteMembers"
                | "DeafenMembers"
                | "MoveMembers"
                | "MentionEveryone"
                | "MentionRoles"
                | "GrantAll"
            )[]
            | undefined

        Array of permissions to allow for the role.

      Returns Promise<void>

      A promise that resolves when the permissions have been updated.

      If the channel ID is invalid.

      // Allow specific permissions
      await channel.setRolePermissions(roleId, ["ViewChannel", "SendMessage"]);
    • Sets role permissions for this channel.

      Parameters

      • roleId: string

        The ID of the role to set permissions for.

      • allow:
            | (
                | "ManageChannel"
                | "ManageServer"
                | "ManagePermissions"
                | "ManageRole"
                | "ManageCustomisation"
                | "KickMembers"
                | "BanMembers"
                | "TimeoutMembers"
                | "AssignRoles"
                | "ChangeNickname"
                | "ManageNicknames"
                | "ChangeAvatar"
                | "RemoveAvatars"
                | "ViewChannel"
                | "ReadMessageHistory"
                | "SendMessage"
                | "ManageMessages"
                | "ManageWebhooks"
                | "InviteOthers"
                | "SendEmbeds"
                | "UploadFiles"
                | "Masquerade"
                | "React"
                | "Connect"
                | "Speak"
                | "Video"
                | "MuteMembers"
                | "DeafenMembers"
                | "MoveMembers"
                | "MentionEveryone"
                | "MentionRoles"
                | "GrantAll"
            )[]
            | undefined

        Array of permissions to allow for the role.

      • deny:
            | (
                | "ManageChannel"
                | "ManageServer"
                | "ManagePermissions"
                | "ManageRole"
                | "ManageCustomisation"
                | "KickMembers"
                | "BanMembers"
                | "TimeoutMembers"
                | "AssignRoles"
                | "ChangeNickname"
                | "ManageNicknames"
                | "ChangeAvatar"
                | "RemoveAvatars"
                | "ViewChannel"
                | "ReadMessageHistory"
                | "SendMessage"
                | "ManageMessages"
                | "ManageWebhooks"
                | "InviteOthers"
                | "SendEmbeds"
                | "UploadFiles"
                | "Masquerade"
                | "React"
                | "Connect"
                | "Speak"
                | "Video"
                | "MuteMembers"
                | "DeafenMembers"
                | "MoveMembers"
                | "MentionEveryone"
                | "MentionRoles"
                | "GrantAll"
            )[]
            | undefined

        Array of permissions to deny for the role.

      Returns Promise<void>

      A promise that resolves when the permissions have been updated.

      If the channel ID is invalid.

      // Set both allow and deny permissions
      await channel.setRolePermissions(roleId, ["ViewChannel"], ["ManageMessages"]);
    • Sets role permissions for this channel.

      Parameters

      • roleId: string

        The ID of the role to set permissions for.

      • options: {
            allow?: (
                | "ManageChannel"
                | "ManageServer"
                | "ManagePermissions"
                | "ManageRole"
                | "ManageCustomisation"
                | "KickMembers"
                | "BanMembers"
                | "TimeoutMembers"
                | "AssignRoles"
                | "ChangeNickname"
                | "ManageNicknames"
                | "ChangeAvatar"
                | "RemoveAvatars"
                | "ViewChannel"
                | "ReadMessageHistory"
                | "SendMessage"
                | "ManageMessages"
                | "ManageWebhooks"
                | "InviteOthers"
                | "SendEmbeds"
                | "UploadFiles"
                | "Masquerade"
                | "React"
                | "Connect"
                | "Speak"
                | "Video"
                | "MuteMembers"
                | "DeafenMembers"
                | "MoveMembers"
                | "MentionEveryone"
                | "MentionRoles"
                | "GrantAll"
            )[];
            deny?: (
                | "ManageChannel"
                | "ManageServer"
                | "ManagePermissions"
                | "ManageRole"
                | "ManageCustomisation"
                | "KickMembers"
                | "BanMembers"
                | "TimeoutMembers"
                | "AssignRoles"
                | "ChangeNickname"
                | "ManageNicknames"
                | "ChangeAvatar"
                | "RemoveAvatars"
                | "ViewChannel"
                | "ReadMessageHistory"
                | "SendMessage"
                | "ManageMessages"
                | "ManageWebhooks"
                | "InviteOthers"
                | "SendEmbeds"
                | "UploadFiles"
                | "Masquerade"
                | "React"
                | "Connect"
                | "Speak"
                | "Video"
                | "MuteMembers"
                | "DeafenMembers"
                | "MoveMembers"
                | "MentionEveryone"
                | "MentionRoles"
                | "GrantAll"
            )[];
        }

        Object containing allow and/or deny permissions.

      Returns Promise<void>

      A promise that resolves when the permissions have been updated.

      If the channel ID is invalid or if both allow and deny are undefined.

      // Allow specific permissions only
      await channel.setRolePermissions(roleId, { allow: ["ViewChannel", "SendMessage"] });

      // Deny specific permissions only
      await channel.setRolePermissions(roleId, { deny: ["ManageMessages"] });

      // Set both allow and deny permissions
      await channel.setRolePermissions(roleId, {
      allow: ["ViewChannel"],
      deny: ["ManageMessages"]
      });