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
JavaScript
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
;