plugCubed / plugAPI

A generic API for creating plug.dj bots
MIT License
78 stars 45 forks source link

Add error emitter #90

Open 0xVasconcelos opened 9 years ago

0xVasconcelos commented 9 years ago

Add error emitters to manually handle.

ex: bot.on('error', function(err){});

Especially if fails to connect, throw a error on connection fail.

Only log to app error logger is not flexible.

Talos51 commented 9 years ago

Hi ! Yes it could be great to add an error listener, but I rather think you can handle your code, for now, with

try{
    ... your code ...
} 
catch(err){
    ...handle err here ...
}

Errors aren't just logged insofar as they can crash an app, with a try{] catch(){], you can receive the triggered error and do what you want with it. It could be a welcomed feature for V4 but since NodeJS is written like this, every fatal error will lead to a process kill by NodeJS so... ( I'm not a NodeJS expert on that point btw )

Thanks.

0xVasconcelos commented 9 years ago

I already tried try and catch and won't work, the code is using process.exit().

I forked, if I have some progress i'll make a pull request.

Thanks!

thedark1337 commented 9 years ago

I was going to work on throwing errors or using callbacks, depending on if a callback is being used or not in version 4.0 but if you could contribute your code as well that'd be great :+1:

0xVasconcelos commented 9 years ago

Yes, I don't have so much time to work on it, but I'll try. But, you can make a option on instance call to throw errors or just log to app error logger, will be awesome. I'm trying to implement your API in a cool project and I need to instantiate your API several times, so without error throwing is impossible to implement.

thedark1337 commented 9 years ago

I've made it so it returns the error in async mode in a callback and throws an error in sync mode in the latest version. Would you still like me to add the option to emit errors instead as an option?

johnRivs commented 9 years ago

So does that mean, we can listen for error when the bot fails because plugdj is in maintenance mode, and responde accordingly without the node app crashing? :O

That'd save my life.

thedark1337 commented 9 years ago

Plug does send a message to everyone ( a system message) for when maintenance is about to begin, i can add in that in the next release and you can listen to it and handle it your own way... ex


bot.on(bot.PLUG_MAINT, function(data) {
 // handle maintenance here.
 });

Not currently Implemented but will be soonish.

Currently what is implemented is better error handling for Sync and offloading most errors for async to the developer of the bot..

johnRivs commented 9 years ago

The maintenance example you showed seems cool.

I'm gonna have a look around the error thing, cuz I'm done dealing with unlistened errors.

thedark1337 commented 9 years ago

@johnRivs I've added a warning when plug alerts there will be a maintenance mode soon and the example code i gave should work (its actually MAINT_MODE though) in the latest version :+1: