Fixed !clear command to clear server-side chatBuffer as well as client buffers.
This commit is contained in:
parent
9eeed591ad
commit
de11803cea
|
|
@ -118,16 +118,55 @@ class chatBuffer{
|
|||
}
|
||||
|
||||
/**
|
||||
* Saves RAM-Based buffer to Channel Document in DB
|
||||
* @param {String} reason - Reason for DB save, formatted as 'x minutes/seconds of in/activity', used for logging purposes
|
||||
* @param {Mongoose.Document} chanDB - Channel Doc to work with, can be left empty for method to auto-find through channel name.
|
||||
* Clears out buffer timers to prevent saving
|
||||
*/
|
||||
async saveDB(reason, chanDB){
|
||||
clearTimers(){
|
||||
//clear existing timers
|
||||
clearTimeout(this.inactivityTimer);
|
||||
clearTimeout(this.busyTimer);
|
||||
this.inactivityTimer = null;
|
||||
this.busyTimer = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears RAM-Based chat buffer and saves the result to DB
|
||||
* @param {String} name - Name of user to clear chats from. Left as null or an empty string, it will clear the entire buffer.
|
||||
*/
|
||||
async clearBuffer(name){
|
||||
//Clear out DB Timers
|
||||
this.clearTimers();
|
||||
|
||||
let reason = "clearing chat";
|
||||
|
||||
//If we have a null or empty string passed as name
|
||||
if(name == null || name == ""){
|
||||
//Nuke that fcker
|
||||
this.buffer = [];
|
||||
//Otherwise
|
||||
}else{
|
||||
reason = `clearing ${name}'s chats`
|
||||
|
||||
//Iterate through chat buffer by index
|
||||
for(let chatIndex in this.buffer){
|
||||
//If the current chat we're looking at was submitted by the given user
|
||||
if(this.buffer[chatIndex].user.toLowerCase() == name.toLowerCase()){
|
||||
//Splice that fcker out
|
||||
this.buffer.splice(chatIndex, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await this.saveDB(reason);
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves RAM-Based buffer to Channel Document in DB
|
||||
* @param {String} reason - Reason for DB save, formatted as 'x minutes/seconds of in/activity', used for logging purposes
|
||||
* @param {Mongoose.Document} chanDB - Channel Doc to work with, can be left empty for method to auto-find through channel name.
|
||||
*/
|
||||
async saveDB(reason, chanDB){
|
||||
//Clear out DB Timers
|
||||
this.clearTimers();
|
||||
|
||||
//if the server is in screamy boi mode
|
||||
if(config.verbose){
|
||||
|
|
|
|||
|
|
@ -334,7 +334,11 @@ class chatHandler{
|
|||
|
||||
//If no user was entered OR the user was found
|
||||
if(user == null || target != null){
|
||||
//Send command out to browsers to drop chats from buffer
|
||||
this.server.io.in(chan).emit("clearChat", {user});
|
||||
|
||||
//Clear serverside buffer, down to the DB
|
||||
activeChan.chatBuffer.clearBuffer(user);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -176,8 +176,11 @@ module.exports.errorMiddleware = function(err, req, res, next){
|
|||
module.exports.dumpError = function(err, date = new Date()){
|
||||
try{
|
||||
const content = `Error Date: ${date.toLocaleString()} (UTC-${date.getTimezoneOffset()/60})\nError Type: ${err.name}\nError Msg:${err.message}\nStack Trace:\n\n${err.stack}`;
|
||||
const path = `log/crash/${date.getTime()}.log`;
|
||||
|
||||
fs.writeFile(`log/crash/${date.getTime()}.log`, content);
|
||||
fs.writeFile(path, content);
|
||||
|
||||
module.exports.consoleWarn(`Warning: Unexpected Server Crash gracefully dumped to '${path}'... SOMETHING MAY BE VERY BROKEN!!!!`);
|
||||
}catch(doubleErr){
|
||||
module.exports.consoleWarn("Yo Dawg, I herd you like errors, so I put an error in your error dump, so you can dump while you dump:");
|
||||
module.exports.consoleWarn(err);
|
||||
|
|
|
|||
Loading…
Reference in a new issue