Refactored userSchema.statics.findProfile()'s tokebot profile generation procedure.

This commit is contained in:
rainbow napkin 2025-10-11 09:43:26 -04:00
parent e9b9539477
commit 42ad17072f
3 changed files with 40 additions and 48 deletions

View file

@ -152,50 +152,6 @@ statSchema.statics.tattooToke = async function(toke){
await stats.save();
}
/**
* Gets toke count from statistics document
* @returns {Number} Number of tokes across the entire site
*/
statSchema.statics.getTokeCount = async function(){
//get stats doc
const stats = await this.getStats();
//return toke count
return stats.tokes.length;
}
/**
* Gets toke counts for each individual callout in a map
* @returns {Map} Map of toke counts for each individual callout registered to the server
*/
statSchema.statics.getTokeCommandCounts = async function(){
//get stats doc
const stats = await this.getStats()
//Create empty map to hold toke command counts
const count = new Map();
//for each toke
stats.tokes.forEach((toke) => {
//For each toke command called in the current toke
toke.toke.forEach((command) => {
//Get the current count for the current command
var curCount = count.get(command);
//if the current count is null
if(curCount == null){
//Set it to one
count.set(command, 1);
}else{
//Set it to ++curCount
count.set(command, curCount + 1);
}
});
});
//return the toke command count
return count;
}
/**
* Ingests legacy tokes handed over by the migration model
* @param {Array} rawLegacyTokes - List of strings containing contents of legacy cytube/fore.st toke logs
@ -282,7 +238,7 @@ statSchema.statics.dropLegacyTokes = async function(){
statDB.tokes = tokes;
//Save the stat document
statDB.save();
await statDB.save();
//Tell of our success
console.log("Removed migration tokes!");
@ -292,4 +248,36 @@ statSchema.statics.dropLegacyTokes = async function(){
}
//Methods
/**
* Gets toke counts for each individual callout in a map
* @returns {Map} Map of toke counts for each individual callout registered to the server
*/
statSchema.methods.calculateTokeCommandCounts = async function(){
//Create empty map to hold toke command counts
const count = new Map();
//for each toke
this.tokes.forEach((toke) => {
//For each toke command called in the current toke
toke.toke.forEach((command) => {
//Get the current count for the current command
var curCount = count.get(command);
//if the current count is null
if(curCount == null){
//Set it to one
count.set(command, 1);
}else{
//Set it to ++curCount
count.set(command, curCount + 1);
}
});
});
//return the toke command count
return count;
}
module.exports = mongoose.model("statistics", statSchema);

View file

@ -311,13 +311,16 @@ userSchema.statics.findProfile = async function(user, includeEmail = false){
return null;
//If someone's looking for tokebot
}else if(user.user.toLowerCase() == "tokebot"){
//Pull statistics document from the database
const statDB = await statModel.getStats();
//fake a profile hashtable for tokebot
const profile = {
id: -420,
user: "Tokebot",
date: (await statModel.getStats()).firstLaunch,
tokes: await statModel.getTokeCommandCounts(),
tokeCount: await statModel.getTokeCount(),
date: statDB.firstLaunch,
tokes: await statDB.calculateTokeCommandCounts(),
tokeCount: statDB.tokes.length,
img: "/nonfree/johnny.png",
signature: "!TOKE",
bio: "!TOKE OR DIE!"

1
www/nonfree Submodule

@ -0,0 +1 @@
Subproject commit 8f3f78be454a156aa7b6a9a811cd656cf4bd80b2