UNPKG

replapi-it

Version:
331 lines (305 loc) 15.3 kB
> ___ > Replit's API is constantly changing, which means this will as well. I will try to keep it easy to use but be aware that your project may stop working at any point. > ___ ## Install ```sh npm install replapi-it ``` ## Usage ### Main API ```js const Client = require('replapi-it'); //A Replit connect.sid cookie const client = new Client('SID'); client.on('ready', () => { }) ``` If you don't know how to find your connect.sid cookie, look [here](https://replit.com/talk/learn/How-to-Get-Your-SID-Cookie/145979) ### Example Logs the number of followers a user has ```js const Client = require('replapi-it'); const client = new Client('SID'); client.on('ready', async () => { let user = await client.users.fetch('PikachuB2005'); console.log(user.followerCount); }) ``` #### Client * `<Client>.user`: a [`CurrentUser`](#CurrentUser) object of the logged in user * `<Client>.repl`: a [`Repl`](#Repl) object of the current repl, if any * `<Client>.users`: a [`UserManager`](#UserManager) object * `<Client>.repls`: a [`ReplManager`](#ReplManager) object * `<Client>.posts`: a [`PostManager`](#PostManager) object * `<Client>.comments`: a [`CommentManager`](#CommentManager) object * `<Client>.on('notification', callback)`: notifications event listener * `callback`: a callback function #### User * `<User>.repls`: a [`ReplManager`](#ReplManager) object * `<User>.followers`: a [`FollowerManager`](#FollowerManager) object * `<User>.follows`: a [`FollowingManager`](#FollowingManager) object * `<User>.posts`: a [`PostManager`](#PostManager) object * `<User>.id`: the user's id * `<User>.username`: the user's username * `<User>.firstName`: the user's first name * `<User>.lastName`: the user's last name * `<User>.locale`: the user's language * `<User>.isVerified`: if the user is verified or not * `<User>.displayName`: the user's display name * `<User>.fullName`: the user's full name * `<User>.url`: the url to the user's profile * `<User>.bio`: the user's bio * `<User>.socials`: the user's social media urls * `<User>.roles`: the user's roles * `<User>.isFollowedByCurrentUser`: if you are following the user * `<User>.isFollowingCurrentUser`: if you're following the user * `<User>.isBlockedByCurrentUser`: if you've blocked the user * `<User>.isBlockingCurrentUser`: if the user blocked you * `<User>.isLoggedIn`: if the user is logged in (`<User>.isOnline` is recommended) * `<User>.isSubscribed`: * `<User>.followerCount`: how many followers the user has * `<User>.followCount`: how many people the user is following * `<User>.isHacker`: if the user has Hacker plan * `<User>.image`: the url to the user's profile picture * `<User>.coverImage`: the url and offset to the user's profile banner image * `<User>.timeCreated`: when the user's account was created * `<User>.lastSeen`: when the user was last online * `<User>.isOnline`: if the user is online * `<User>.setFollowing(boolean)`: follow or unfollow the user * `<User>.setBlocking(boolean)`: block or unblock the user #### CurrentUser Also contains *most* [`User`](#User) properties and methods, excluding follow / block values * `<CurrentUser>.notifications`: a [`NotificationManager`](#NotificationManager) object * `<CurrentUser>.email`: the user's email * `<CurrentUser>.emailNotifications`: if the user should be emailed notifications * `<CurrentUser>.hasRepl`: if the user has any repls * `<CurrentUser>.hasPrivacyRole`: * `<CurrentUser>.warnings`: any warnings the user has recieved * `<CurrentUser>.isBannedFromBoards`: if the user is banned from boards * `<CurrentUser>.canUpdateEmail`: if the user can change their email * `<CurrentUser>.canUpdateUsername`: if the user can change their username * `<CurrentUser>.device`: if the user is using a mobile or mac device * `<CurrentUser>.sidebarClosed`: if the user's sidebar is closed * `<CurrentUser>.hasProfileImage`: if the user has a profile image * `<CurrentUser>.socialSignup`: * `<CurrentUser>.githubInfo`: the user's github info * `<CurrentUser>.usernameRepl`: the user's repl whose title matches their username * `<CurrentUser>.daysSinceSignup`: how many days since the user signed up * `<CurrentUser>.storage`: the user's storage limit and usage * `<CurrentUser>.editorPreferences`: the user's editor preferences * `<CurrentUser>.countryCode`: the user's country code * `<CurrentUser>.auth`: google / github / facebook auth * `<CurrentUser>.change(options)`: updates the current user's settings * `options`: * `image`: a path to an image file to set your profile picture * `firstName`: changes your first name * `lastName`: changes your last name * `bio`: changes your bio * `emailNotifications`: if you should recieve email notifications #### Repl * `<Repl>.threads`: a list of [`Thread`](#Thread) objects * `<Repl>.multiplayers`: a [`MultiplayerManager`](#MultiplayManager) object * `<Repl>.comments`: a [`CommentManager`](#CommentManager) object * `<Repl>.id`: the repl's id * `<Repl>.isProject`: * `<Repl>.isPrivate`: if the repl is private * `<Repl>.isStarred`: if the repl is starred * `<Repl>.title`: the repl's title * `<Repl>.slug`: the repl's title slug * `<Repl>.imageUrl`: the url to the repl's image * `<Repl>.folderId`: the folder the repl is in * `<Repl>.isRenamed`: if the repl is renamed * `<Repl>.commentCount`: how many comments the user has * `<Repl>.likeCount`: how many likes the repl has * `<Repl>.currentUserDidLike`: if you liked the repl * `<Repl>.templateCategory`: the category of the template used to create the repl * `<Repl>.wasPosted`: if the repl was posted * `<Repl>.wasPublished`: if the repl was published * `<Repl>.language`: the id of the repl's language (you're probably looking for `<Repl>.templateInfo.label`) * `<Repl>.lang`: the repls language (you're probably looking for `<Repl>.templateInfo.label`) * `<Repl>.iconUrl`: the url of the repl's icon * `<Repl>.templateLabel`: label of the repl's template repl * `<Repl>.url`: the repl's url * `<Repl>.inviteUrl`: the url to invite users to the repl * `<Repl>.multiplayerInvites`: invites to the repl * `<Repl>.historyUrl`: the repl's history url * `<Repl>.analyticsUrl`: the repl's analytics url * `<Repl>.rootOriginReplUrl`: the url to the repl's origin repl * `<Repl>.isOwner`: if you are the owner of the repl * `<Repl>.config`: the repl's config data * `<Repl>.pinnedToProfile`: if the repl is pinned to your profile * `<Repl>.size`: the repl's size, in bytes. * `<Repl>.hostedUrl`: the repl's hosted url, used for iframes * `<Repl>.terminalUrl`: the repl's terminal url * `<Repl>.database`: data about the repl's database * `<Repl>.template`: the repl's template * `<Repl>.isProjectFork`: if the repl is a fork * `<Repl>.publicForkCount`: how many public forks the repl has * `<Repl>.runCount`: how many times the repl has been run * `<Repl>.isAlwaysOn`: if the repl is always on * `<Repl>.isBoosted`: if the repl is boosted * `<Repl>.tags`: the repl's tags * `<Repl>.lastPublishedAt`: when the repl was last published * `<Repl>.multiplayers`: a [`<Collection>`](#Collection) of [`User`](#User) objects of people invited to the repl * `<Repl>.nixedLanguage`: if the repl was nixed * `<Repl>.publishedAs`: returns undefined, 'RegularRepl', or 'Template' * `<Repl>.attachments`: * `<Repl>.description`: the repl's description * `<Repl>.markdownDescription`: the repl's description, with markdown * `<Repl>.hasExplainCode`: if the repl has explain code * `<Repl>.hasGenerateCode`: if the repl has generate code * `<Repl>.templateInfo`: info about the repl's template * `<Repl>.domains`: * `<Repl>.apexProxy`: the ip of the repl's apex proxy * `<Repl>.replViewSettings`: the repl's view settings * `<Repl>.powerUpCosts`: the repl's power up costs * `<Repl>.isTutorial`:if the repl is a tutorial * `<Repl>.owner`: a [`User`](#User) object of the repl's owner * `<Repl>.timeCreated`: when the repl was created * `<Repl>.timeUpdated`: when the repl was updated * `<Repl>.currentUserPermissions`: your permissions for the repl * `<Repl>.fetchThreads(options)`: returns the repls'd threads * `<Repl>.database`: A [`Repl Database`](https://docs.replit.com/hosting/database-faq) object * `<Repl>.fork(options)`: forks the repl * `options`: * `cache`: cache the result(s). default: true * `title`: the repl's title * `description`: the repl's description * `isPrivate`: if the repl should be private * `<Repl>.delete()`: deletes the repl * `<Repl>.change(options)`: updates the repl * `options`: * `title`: the repl's title * `description`: the repl's description * `isPrivate`: if the repl should be private * `<Repl>.comment(body)`: comments on the repl * `<Repl>.connect()`: Connect to the repl The following require you to be connected to the repl: * `<Repl>.env`: the repl's environmental variables (secrets) * `<Repl>.files`: a [`FileManager`](#FileManager) object * `<Repl>.console`: a [`Console`](#Console) object * `<Repl>.disconnect()`: disconnects from the repl #### UserManager * `<Usermanager>.cache`: a [`Collection`](#Collection) of [`User`](#User) objects * `<Usermanager>.fetch(userResolvable, options)`: a Promise of a [`User`](#User) object * `userResolvable`: A username, id, or [`User`](#User) * `options`: * `force`: doesn't check the cache. default: false * `cache`: cache the result(s). default: true * `<Usermanager>.search(query, options)`: a [`Collection`](#Collection) of [`User`](#User) objects * `query`: what to search * `options`: * `cache`: cache the result(s). default: true * `limit`: the maximum number of results. default: 10 #### ReplManager * `<Replmanager>.cache`: a [`Collection`](#Collection) of [`Repl`](#Repl) objects * `<Client>.<Replmanager>.fetch(replResolvable, options)`: a [`User`](#User) object * `replResolvable`: A url, id, or [`Repl`](#Repl) * `options`: * `force`: doesn't check the cache. default: false * `cache`: cache the result(s). default: true * `<Replmanager>.generateTitle()`: a randomly generated repl title * `<Client>.<ReplManager>.create(options)`: creates a new repl * `options`: * `title`: the repl's title * `description`: the repl's description * `language`: the repl's language * `isPrivate`: if the repl is private #### Collection A Map object with extra methods. Meant to be like [discord.js's Collection](https://discord.js.org/#/docs/collection/main/class/Collection) #### PostManager * `<PostManager>.cache` a [`Collection`](#Collection) * `<PostManager>.trending(options)`: a [`Collection`](#Collection) of trending posts * `options`: * `force`: doesn't check the cache. default: false * `cache`: cache the result(s). default: true * `limit`: the maximum number of results * `tags`: tags included in the results #### CommentManager * `<Client>.<CommentManager>.fetch(commentResolvable, options)`: returns a [`Comment`](#Comment) object * `commentResolvable`: a comment id * `options`: * `cache`: cache the result(s). default: true * `<Repl>.<CommentManager>.fetch(options)`: returns a [`Collection`](#Collection) of [`Comment`](#Comment) objects * `options`: * `cache`: cache the result(s). default: true * `limit`: the maximum number of results * `<User>.<CommentManager>.fetch(options)`: returns a [`Collection`](#Collection) of [`Comment`](#Comment) objects * `options`: * `cache`: cache the result(s). default: true * `limit`: the maximum number of results #### Post * `<Post>.id`: the post's id * `<Post>.title`: the post's title * `<Post>.commentCount`: how many replies the post has * `<Post>.body`: the body of the post * `<Post>.user`: a [`User`](#User) object * `<Post>.repl`: a [`Repl`](#Repl) object * `<Post>.comment`: a [`Comment`](#Comment) object * `<Post>.timeCreated`: when the post was created * `<Post>.timeUpdated`: when the post was last updated #### Comment * `<Comment>.comments`: an array of [`Comment`](#Comment) objects * `<Comment>.id`: the comment's id * `<Comment>.body`: the comment's body * `<Comment>.bodyNoMarkdown`: the comment's body without markdown * `<Comment>.curretUserPermissions`: your current permissions for the comment * `<Comment>.timeCreated`: when the comment was created * `<Comment>.timeUpdated`: when the comment was last updated * `<Comment>.user`: a [`User`](#User) object * `<Comment>.repl`: a [`Repl`](#Repl) object * `<Comment>.reply(body)`: reply to the comment #### FollowerManager * `<FollowerManager>.fetch(options)`: a [`Collection`](#Collection) of [`User`](#User) objects * `options`: * `cache`: cache the result(s). default: true * `limit`: the maximum number of results #### FollowingManager * `<FollowingManager>.fetch(options)`: a [`Collection`](#Collection) of [`User`](#User) objects * `options`: * `cache`: cache the result(s). default: true * `limit`: the maximum number of results * `<FollowingManager>.events`: a [`UserEventManager`](#UserEventManager) #### MultiplayerManager * `<MultiplayerManager>.cache`: a [`Collection`](#Collection) of [`User`](#User) objects * `<MultiplayerManager>.invite(userResolvable)`: invite a user to the repl * `<MultiplayerManager>.remove(userResolvable)`: remove a user from the repl #### FileManager * `<FileManager>.persisting`: if the manager is currently persisting * `<FileManager>.read(path)`: returns the contents of a file * `<FileManager>.write(path, content)`: writes to a file * `<FileManager>.mkdir(path)`: makes a directory * `<FileManager>.remove(path)`: removes a file / directory * `<FileManager>.move(oldPath, newPath)`: moves a file/directory * `<FileManager>.readdir(path)`: get an array of files in a directory * `<FileManager>.recursedir(path)`: get an array of recursed files in a directory * `<FileManager>.presist()`: makes the files update when edited * `<FileManager>.snapshot()`: updates the files to what they are currently #### Console * `<Console>.send(input)`: sends something to the console * `<Console>.run()`: runs the repl * `<Console>.stop()`: stops the repl #### UserEventManager * `<UserEventManager>.cache`: a [`Collection`](#Collection) of [`UserEvent`](#UserEvent) objects * `<UserEventManager>.fetch(options)`: a [`Collection`](#Collection) of [`UserEvent`](#UserEvent) objects * `options`: * `cache`: cache the result(s). default: true * `limit`: the maximum number of results #### UserEvent * `<UserEvent>.id`: the id of the event * `<UserEvent>.eventType`: the type of the event * `<UserEvent>.post`: a [`Post`](#Post) object * `<UserEvent>.timeUpdated`: when the event was last updated * `<UserEvent>.user`: a [`User`](#User) object * `<UserEvent>.repl`: a [`Repl`](#Repl) object * `<UserEvent>.comment`: a [`Comment`](#Comment) object #### NotificationManager * `<NotificationManager>.cache`: a [`Collection`](#Collection) of [`Notification`](#Notification) objects * `<NotificationManager>.fetch(options)`: a [`Collection`](#Collection) of [`Notification`](#Notification) objects * `options`: * `cache`: cache the result(s). default: true * `limit`: the maximum number of results * `seen`: if the notifications have been seen or not. default: false * `<NotificationManager>.markAsRead()`: marks your notifications as read * `<NotificationManager>.startEvents()`: starts sending notification events for new notifications * `<NotificationManager>.stopEvents()`: stops the sending of notification events