The Javascript wrapper made for The All Seeing Eye's API http://npmjs.com/tase
Find a file
2025-12-27 14:56:01 -07:00
src fixed unknown user records for one user scans 2025-12-27 14:55:49 -07:00
.gitignore useless ahh files! 2025-10-09 20:55:54 -07:00
.npmignore useless ahh files! 2025-10-09 20:55:54 -07:00
bun.lock create websocket client 2025-12-13 17:39:42 -07:00
LICENSE repository (probably a useless commit & license 2025-10-09 22:42:05 -07:00
package-lock.json 2.0.1 2025-12-27 14:56:01 -07:00
package.json 2.0.1 2025-12-27 14:56:01 -07:00
README.md Rewrote the wrapper description 2025-12-13 20:35:20 -07:00
tsconfig.json browser support 2025-10-09 21:07:08 -07:00
tsup.config.ts setup typescript 2025-10-09 20:51:25 -07:00

The All Seeing Eye API

This is the official wrapper for determining if a user was caught in a server that breaks ROBLOX's Terms Of Service, ranging from Bypassing (specifically NSFW) Servers to Condo and Rule34 servers!

This package was made with the intention of supporting everything.

  • Usable between NodeJS and Browser Environments
  • Made to support all Javascript language specifications (ECMAScript and CommonJS)
  • Made in & supports TypeScript!

All examples below are written in ECMAScript, but you can use require too!

Creating a Client

Creating a client is simple!

import { Client, isTASEError } from "tase"

const TASEClient = new TASEClient({
    token: "ey***.***.***pI"
})

await TASEClient.login()
    .then(session => console.log(`Logged in as ${session.appName} as ${session.keyName}!`))
    .catch(ex => {
        if(isTASEError(ex)){
            console.log(ex.cause)
        }
    })
Name Type Default Use
token string None This is required for most actions on the API.
server string? api.tasebot.org This is intended for testing.
reconnectTime string? 5000 If the client disconnects from the appeal socket, it'll automatically reconnect in this interval.

Check Functions

// Scan one user
await TASEClient.check("1343809149376528434")

// Scan multiple users
await TASEClient.scan(["1422001427085266975", "1438300200690126998"])

Appeal Notifications

Before using these functions, you will need to know the following details:

  • Appeal notifications are one time for privacy, make sure your code does not error before using refetchNotifications.
  • Notifications are not sent by default. You will need the user to authorize your bot.
  • Legacy keys are unable to use this API, as they have a completely different data structure from new keys.
function HandleAppeal(UserId: string){
    // do whatever business you have with these notifications
}

TASEClient.subscribeToNotifications(HandleAppeal)

await TASEClient.refetchNotifications()
    .then((Notifications) => Notifications?.forEach(HandleAppeal))

Data Endpoints

TASE also provides a few useful data endpoints you may need to know about.

Guild Types

TASEClient.getTypes() // Array<GuildType>
Key Value Type Purpose
id string The type's main identifier, this should be used in database configurations, as they will never change.
name string The display name of the type.
emoji string | null A unicode emoji representing this type. This can be used to spice up certain UI elements.
summary string A short summary on why this server is flagged and the criteria for servers under this type.

Session Data

TASEClient.session // SessionDetails | null
Key Value Type Purpose
appName string The name of the application assigned to the token.
keyName string The name of the current token.
expires Date | null When does this key expire?
ownedBy string Who is this key owned by? (returns a Discord UserID associated with the person who made the key)
legacy boolean Is this key using the legacy system?