|
@@ -4,8 +4,15 @@ import time
|
|
|
from command_system import RollbotResponse, RollbotFailure, as_plugin
|
|
|
|
|
|
|
|
|
+def lift_response(call, response):
|
|
|
+ @as_plugin(call)
|
|
|
+ def response_func(db, msg):
|
|
|
+ return RollbotResponse(msg, txt=response)
|
|
|
+ return response_func
|
|
|
+
|
|
|
+
|
|
|
class Rollbot:
|
|
|
- def __init__(self, logger=logging.getLogger(__name__), plugin_classes={}, aliases={}, lookup={}, sleep_time=0.0, session_factory=None, callback=None):
|
|
|
+ def __init__(self, logger=logging.getLogger(__name__), plugin_classes={}, aliases={}, responses={}, lookup={}, sleep_time=0.0, session_factory=None, callback=None):
|
|
|
self.logger = logger
|
|
|
self.session_factory = session_factory or (lambda: None)
|
|
|
self.callback = callback or (lambda txt, gid: self.logger.info(f"Responding to {gid} with {txt}"))
|
|
@@ -26,6 +33,14 @@ class Rollbot:
|
|
|
self.to_stop.add(plugin_instance)
|
|
|
self.logger.info(f"Finished loading plugins, {len(self.commands)} commands found")
|
|
|
|
|
|
+ self.logger.info("Loading simple responses")
|
|
|
+ for cmd, response in responses.items():
|
|
|
+ if cmd in self.commands:
|
|
|
+ self.logger.error(f"Duplicate command word '{cmd}'")
|
|
|
+ raise ValueError(f"Duplicate command word '{cmd}'")
|
|
|
+ self.commands[cmd] = lift_response(cmd, response)(logger=logger)
|
|
|
+ self.logger.info(f"Finished loading simple responses, {len(self.commands)} total commands available")
|
|
|
+
|
|
|
self.logger.info("Loading aliases")
|
|
|
for alias, cmd in aliases.items():
|
|
|
if cmd not in self.commands:
|