UNPKG

@yuna0x0/anilist-node

Version:

A lightweight Node.js wrapper for the AniList API

91 lines (83 loc) 2.31 kB
/** * Access threads on AniList * @since 1.11.0 * @memberof AniList */ class Thread { /** * @description This constructor is meant for internal use and is apart of initializing. You cannot access this * through the AniList class and are not expect to. * @param { Utilities } utilities - The AniList Utilities class. * @hideconstructor */ constructor(utilities) { this.util = utilities; } /** * Get a specific thread by its AniList ID * @param {Number} id - The AniList ID of the thread * * @returns {ThreadEntry} * @since 1.11.0 */ get(id) { let queryVars = this.util.generateQueryHeaders("Thread", id); return this.util .send( `${queryVars[1]} id title body user { id name } replyCommentId viewCount isLocked isSticky isSubscribed replyUser { id name } isLiked repliedAt createdAt updatedAt likes { id name } categories { id name } mediaCategories { id title { english native romaji userPreferred } type } } }`, queryVars[0] ) .then((data) => { return data.Thread; }); } /** * [Require Login] Delete a thread * @param {Number} id - The AniList thread ID to delete * * @returns {Boolean} Returns true if successful * @since 1.12.0 */ async delete(id) { if (typeof id !== "number") { throw new Error("ID is not a number type."); } return this.util.send(`mutation ($id: Int) { DeleteThread(id: $id) { deleted } }`, { id: id }).then((data) => { return data.DeleteThread.deleted; }); } /** * Get thread comments for a thread * @param {Number} id - The AniList thread ID * @param {Number} page - The page number * @param {Number} perPage - How many entries per page * * @returns {ThreadComment[]} * @since 1.12.0 */ getComments(id, page = 1, perPage = 25) { if (typeof id !== "number") { throw new Error("ID is not a number type."); } return this.util .send( `query ($threadID: Int, $page: Int, $perPage: Int) { Page(page:$page, perPage:$perPage) { threadComments(threadId: $threadID) { id user { id name } comment isLiked createdAt updatedAt likes { id name } childComments isLocked } } }`, { threadID: id, page: page, perPage: perPage } ) .then((data) => { return data.threadComments; }); } } module.exports = Thread;