get rid of the MessageDistributor module... & update discord, to work with API v10

Added discord commands (issue: as they're running over the event hub, they're processed on the same track as other events. => activity ingame triggers the next run; otherwise there's some delay for responses)
relay is a standard module now.
This commit is contained in:
2022-04-15 17:05:30 +02:00
parent fd84d82af2
commit a3a26f2ba4
32 changed files with 1036 additions and 729 deletions
+26 -16
View File
@@ -66,6 +66,10 @@ class CommandService:
self.register_command_channel("Private Message", self.PRIVATE_MESSAGE_CHANNEL)
self.register_command_channel("Org Channel", self.ORG_CHANNEL)
self.register_command_channel("Private Channel", self.PRIVATE_CHANNEL)
self.relay_hub_service.register_message_source("tell_logger")
self.relay_hub_service.register_message_source("system_logger")
self.relay_hub_service.register_message_source("access_denied_logger")
self.relay_hub_service.register_message_source("member_logger")
def start(self):
access_levels = {}
@@ -205,16 +209,10 @@ class CommandService:
if not followup:
if channel == "msg":
if message.lower().startswith("mail"):
self.relay_hub_service.send_message("tell_logger", char_id, "mail |usage hidden|",
"mail |usage hidden|")
self.relay_hub_service.send_message("tell_logger", DictObject({'char_id': char_id, 'name': self.character_service.resolve_char_to_name(char_id)}), f"[FROM] {self.character_service.resolve_char_to_name(char_id)}: mail |usage hidden|",
f"[FROM] {self.character_service.resolve_char_to_name(char_id)}: mail |usage hidden|")
else:
self.relay_hub_service.send_message("tell_logger", char_id, message, message)
else:
if message.lower().startswith("mail"):
self.relay_hub_service.send_message("dc_relay_log", char_id, "mail |usage hidden|",
"mail |usage hidden|")
else:
self.relay_hub_service.send_message("dc_relay_log", char_id, message, message)
self.relay_hub_service.send_message("tell_logger", DictObject({'char_id': char_id, 'name': self.character_service.resolve_char_to_name(char_id)}), f"[FROM] {self.character_service.resolve_char_to_name(char_id)}: {message}", f"[FROM] {self.character_service.resolve_char_to_name(char_id)}: {message}")
# message = html.unescape(message)
command_str, command_args = self.get_command_parts(message)
@@ -253,12 +251,15 @@ class CommandService:
self.relay_hub_service.send_message("access_denied_logger", sender,
f"[ERROR] {sender.name}: {message}",
f"[ERROR] {sender.name}: {message}")
self.bot.send_mass_message(char_id, self.getresp("global", "error_processing"))
if channel == "discord":
reply(self.getresp("global", "error_processing"))
else:
self.bot.send_mass_message(char_id, self.getresp("global", "error_processing"))
# record command usage
self.usage_service.add_usage(command_str, handler["callback"].__qualname__, char_id, channel)
else:
self.access_denied_response(message, sender, cmd_config, reply)
self.access_denied_response(message, sender, cmd_config, reply, channel)
else:
# handlers were found, but no handler regex matched
help_text = self.get_help_text(char_id, command_str, channel)
@@ -266,7 +267,7 @@ class CommandService:
reply(self.format_help_text(command_str, help_text))
else:
# the command is known, but no help is returned, therefore user does not have access to command
self.access_denied_response(message, sender, cmd_config, reply)
self.access_denied_response(message, sender, cmd_config, reply, channel)
# if access_level['label'] != "all":
# self.relay_hub_service.send_message("access_denied_logger", sender,
# f"[DENIED] {sender.name}: {message}",
@@ -280,20 +281,29 @@ class CommandService:
0)
self.relay_hub_service.send_message("access_denied_logger", sender, f"[ERROR] {sender.name}: {message}",
f"[ERROR] {sender.name}: {message}")
self.bot.send_mass_message(char_id, self.getresp("global", "error_processing"))
if channel == "discord":
reply(self.getresp("global", "error_processing"))
else:
self.bot.send_mass_message(char_id, self.getresp("global", "error_processing"))
def handle_unknown_command(self, command_str, command_args, channel, sender, reply):
self.relay_hub_service.send_message("access_denied_logger", sender,
f"[UNKNOWN] {sender.name}: {command_str} {command_args}",
f"[UNKNOWN] {sender.name}: {command_str} {command_args}")
if sender.access_level["label"] != "all":
self.bot.send_mass_message(sender.char_id, self.getresp("global", "unknown_command", {"cmd": command_str}))
if channel == "discord":
self.getresp("global", "unknown_command", {"cmd": command_str})
else:
self.bot.send_mass_message(sender.char_id, self.getresp("global", "unknown_command", {"cmd": command_str}))
def access_denied_response(self, message, sender, cmd_config, reply):
def access_denied_response(self, message, sender, cmd_config, reply, channel):
self.relay_hub_service.send_message("access_denied_logger", sender, f"[DENIED] {sender.name}: {message}",
f"[DENIED] {sender.name}: {message}")
if sender.access_level["label"] != "all":
self.bot.send_mass_message(sender.char_id, self.getresp("global", "access_denied"))
if channel == "discord":
reply(self.getresp("global", "access_denied"))
else:
self.bot.send_mass_message(sender.char_id, self.getresp("global", "access_denied"))
def get_command_parts(self, message):
parts = message.split(" ", 1)