1818from cloudbot .event import Event , PostHookEvent
1919from cloudbot .hook import Priority , Action
2020from cloudbot .util import database , async_util
21+ from cloudbot .util .func_utils import call_with_args
2122
2223logger = logging .getLogger ("cloudbot" )
2324
@@ -411,39 +412,15 @@ def _log_hook(self, hook):
411412 logger .info ("Loaded {}" .format (hook ))
412413 logger .debug ("Loaded {}" .format (repr (hook )))
413414
414- def _prepare_parameters (self , hook , event ):
415- """
416- Prepares arguments for the given hook
417-
418- :type hook: cloudbot.plugin.Hook
419- :type event: cloudbot.event.Event
420- :rtype: list
421- """
422- parameters = []
423- for required_arg in hook .required_args :
424- if hasattr (event , required_arg ):
425- value = getattr (event , required_arg )
426- parameters .append (value )
427- else :
428- logger .error ("Plugin {} asked for invalid argument '{}', cancelling execution!"
429- .format (hook .description , required_arg ))
430- logger .debug ("Valid arguments are: {} ({})" .format (dir (event ), event ))
431- return None
432- return parameters
433-
434415 def _execute_hook_threaded (self , hook , event ):
435416 """
436417 :type hook: Hook
437418 :type event: cloudbot.event.Event
438419 """
439420 event .prepare_threaded ()
440421
441- parameters = self ._prepare_parameters (hook , event )
442- if parameters is None :
443- return None
444-
445422 try :
446- return hook .function ( * parameters )
423+ return call_with_args ( hook .function , event )
447424 finally :
448425 event .close_threaded ()
449426
@@ -455,12 +432,8 @@ def _execute_hook_sync(self, hook, event):
455432 """
456433 yield from event .prepare ()
457434
458- parameters = self ._prepare_parameters (hook , event )
459- if parameters is None :
460- return None
461-
462435 try :
463- return (yield from hook .function ( * parameters ))
436+ return (yield from call_with_args ( hook .function , event ))
464437 finally :
465438 yield from event .close ()
466439
0 commit comments