UNPKG

loriapi

Version:

A simple library for fetching information from Loritta, a popular Discord bot made by the Brazilian developer MrPowerGamerBR.

125 lines 5.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LoriApi = void 0; const axios_1 = require("axios"); const validTransactionTypes = [ "PAYMENT", "DAILY_REWARD", "COINFLIP_BET", "COINFLIP_BET_GLOBAL", "EMOJI_FIGHT_BET", "RAFFLE", "HOME_BROKER", "SHIP_EFFECT", "SPARKLYPOWER_LSX", "SONHOS_BUNDLE_PURCHASE", "INACTIVE_DAILY_TAX", "DIVINE_INTERVENTION", "BOT_VOTE", "POWERSTREAM", "EVENTS", "LORI_COOL_CARDS", "LORITTA_ITEM_SHOP", "BOM_DIA_E_CIA", "GARTICOS" ]; var UserFields; (function (UserFields) { UserFields["ID"] = "id"; UserFields["XP"] = "xp"; UserFields["DREAMS"] = "sonhos"; UserFields["ABOUT_ME"] = "aboutMe"; UserFields["GENDER"] = "gender"; UserFields["EMOJI_FIGHT_EMOJI"] = "emojiFightEmoji"; })(UserFields || (UserFields = {})); class LoriApi { constructor(options) { this.loriKey = options.loriKey; // Validate the API key if (this.loriKey.length < 51 || !this.loriKey.startsWith("lorixp_") || this.loriKey.length > 52) { console.log({ success: false, error: { message: "Invalid Loritta API key", }, }); process.exit(1); } } async getUserData(userId) { try { const response = await axios_1.default.get(`https://api.loritta.website/v1/users/${userId}`, { headers: { Authorization: this.loriKey, }, }); const completeData = { ...response.data, LorittaCluster: response.headers["loritta-cluster"], LorittaTokenCreator: response.headers["loritta-token-creator"], LorittaTokenUser: response.headers["loritta-token-user"], }; // Return a plain object instead of a Proxy return completeData; } catch (error) { console.error({ success: false, error: { message: "Failed to fetch user data", details: error, }, }); throw error; } } /** * Fetches user transactions with optional filters for transaction types and date ranges. * * @param userId - The ID of the user * @param transactionTypes - An array of allowed transaction types (e.g., ["PAYMENT", "SPARKLYPOWER_LSX"]) * @param beforeDate - The end date for filtering transactions, in ISO string or Unix timestamp * @param afterDate - The start date for filtering transactions, in ISO string or Unix timestamp * @returns An object containing transaction data and headers */ async getUserDataTransactions(userId, transactionTypes, beforeDate, afterDate) { // List of valid transaction types const validTransactionTypes = [ "PAYMENT", "DAILY_REWARD", "COINFLIP_BET", "COINFLIP_BET_GLOBAL", "EMOJI_FIGHT_BET", "RAFFLE", "HOME_BROKER", "SHIP_EFFECT", "SPARKLYPOWER_LSX", "SONHOS_BUNDLE_PURCHASE", "INACTIVE_DAILY_TAX", "DIVINE_INTERVENTION", "BOT_VOTE", "POWERSTREAM", "EVENTS", "LORI_COOL_CARDS", "LORITTA_ITEM_SHOP", "BOM_DIA_E_CIA", "GARTICOS" ]; // Validate transaction types if provided const typesArray = transactionTypes?.join(",").split(",") ?? []; const invalidTypes = typesArray.filter(type => !validTransactionTypes.includes(type.trim())); if (invalidTypes.length > 0) { throw new Error(`Invalid transaction type(s): ${invalidTypes.join(", ")}. Valid types are: ${validTransactionTypes.join(", ")}`); } // Default date set to August 11, 2020 in ISO format const defaultDate = "2020-08-11T00:00:00.000Z"; // Convert Unix timestamps to ISO strings if needed const formatDate = (date) => typeof date === "number" ? new Date(date * 1000).toISOString() : date; const params = { limit: 10, offset: 0, transactionTypes: typesArray.join(",") || validTransactionTypes.join(","), beforeDate: formatDate(beforeDate) || defaultDate, afterDate: formatDate(afterDate) || defaultDate, }; try { const response = await axios_1.default.get(`https://api.loritta.website/v1/users/${userId}/transactions`, { headers: { Authorization: this.loriKey, }, params, }); return { transactions: response.data.transactions, headers: { LorittaCluster: response.headers["loritta-cluster"], LorittaTokenCreator: response.headers["loritta-token-creator"], LorittaTokenUser: response.headers["loritta-token-user"], }, paging: response.data.paging, }; } catch (error) { console.error({ success: false, error: { message: "Failed to fetch user transactions", details: error, }, }); throw error; } } } exports.LoriApi = LoriApi; //# sourceMappingURL=LoriApp.js.map