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:
+2
-1
@@ -1,9 +1,10 @@
|
||||
class ChatBlob:
|
||||
def __init__(self, title, msg, prefix="", suffix=""):
|
||||
def __init__(self, title, msg, prefix="", suffix="", embed=True):
|
||||
self.title = title
|
||||
self.msg = msg.strip("\n")
|
||||
self.page_prefix = prefix
|
||||
self.page_postfix = suffix
|
||||
self.embed = embed
|
||||
|
||||
def __str__(self):
|
||||
return f"ChatBlob('{self.title}', '{self.msg}')"
|
||||
|
||||
+26
-16
@@ -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)
|
||||
|
||||
+2
-2
@@ -53,8 +53,8 @@ class Conn(Bot):
|
||||
if num_messages > 30:
|
||||
self.logger.warning("automatically clearing outgoing message queue (%d messages)" % num_messages)
|
||||
self.packet_queue.clear()
|
||||
elif num_messages > 10:
|
||||
self.logger.warning("%d messages in outgoing message queue" % num_messages)
|
||||
# elif num_messages > 10:
|
||||
# self.logger.warning("%d messages in outgoing message queue" % num_messages)
|
||||
|
||||
def __str__(self):
|
||||
return self.id
|
||||
|
||||
+17
-9
@@ -1,6 +1,7 @@
|
||||
import inspect
|
||||
import threading
|
||||
import time
|
||||
import typing
|
||||
|
||||
from conf.config import BotConfig
|
||||
from core.aochat import server_packets, client_packets
|
||||
@@ -11,15 +12,19 @@ from core.conn import Conn
|
||||
from core.db import DB
|
||||
from core.decorators import instance
|
||||
from core.dict_object import DictObject
|
||||
|
||||
from core.fifo_queue import FifoQueue
|
||||
from core.job_scheduler import JobScheduler
|
||||
from core.logger import Logger
|
||||
from core.lookup.character_service import CharacterService
|
||||
from core.public_channel_service import PublicChannelService
|
||||
from core.setting_service import SettingService
|
||||
from core.setting_types import BooleanSettingType
|
||||
from core.text import Text
|
||||
from modules.core.accounting.services.access_service import AccessService
|
||||
from core.setting_types import BooleanSettingType
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from core.lookup.character_service import CharacterService
|
||||
from core.public_channel_service import PublicChannelService
|
||||
from core.setting_service import SettingService
|
||||
from modules.core.accounting.services.access_service import AccessService
|
||||
from core.event_service import EventService
|
||||
|
||||
|
||||
@instance("bot")
|
||||
@@ -42,8 +47,8 @@ class IgnCore:
|
||||
self.dimension = None
|
||||
self.last_timer_event = 0
|
||||
self.start_time = int(time.time())
|
||||
self.major_version = "IGNCore v2.8"
|
||||
self.minor_version = "4"
|
||||
self.major_version = "IGNCore v2.9"
|
||||
self.minor_version = "0"
|
||||
self.incoming_queue = FifoQueue()
|
||||
self.mass_message_queue = None
|
||||
self.conns = DictObject()
|
||||
@@ -55,7 +60,7 @@ class IgnCore:
|
||||
self.text: Text = registry.get_instance("text")
|
||||
self.setting_service: SettingService = registry.get_instance("setting_service")
|
||||
self.access_service: AccessService = registry.get_instance("access_service")
|
||||
self.event_service = registry.get_instance("event_service")
|
||||
self.event_service: EventService = registry.get_instance("event_service")
|
||||
self.job_scheduler: JobScheduler = registry.get_instance("job_scheduler")
|
||||
self.command_service = registry.get_instance("command_service")
|
||||
|
||||
@@ -113,7 +118,7 @@ class IgnCore:
|
||||
"created_at INT NOT NULL, "
|
||||
"INDEX `command` (`command`) USING BTREE, "
|
||||
"INDEX `char_id` (`char_id`) USING BTREE, "
|
||||
"INDEX `channel` (`channel`) USING BTREE) ENGINE MEMORY")
|
||||
"INDEX `channel` (`channel`) USING BTREE)")
|
||||
|
||||
# self.db.exec("UPDATE db_version SET verified = 0")
|
||||
self.db.exec("UPDATE db_version SET verified = 1 WHERE file = 'db_version'")
|
||||
@@ -440,5 +445,8 @@ class IgnCore:
|
||||
def get_char_name(self):
|
||||
return self.conns["main"].char_name
|
||||
|
||||
def get_conn(self):
|
||||
return self.conns["main"]
|
||||
|
||||
def get_char_id(self):
|
||||
return self.conns["main"].char_id
|
||||
|
||||
@@ -32,6 +32,8 @@ class Logger:
|
||||
def format_chat_message(self, msg):
|
||||
msg = re.sub(r"<a\s+href=\".+?[^\\]\">", "[link]", msg, flags=re.UNICODE | re.DOTALL)
|
||||
msg = re.sub(r"<a\s+href='.+?'>", "[link]", msg, flags=re.UNICODE | re.DOTALL)
|
||||
msg = re.sub(r"<a\s+href=user://\w+?>(\w+?)</a>", "\1", msg, flags=re.UNICODE | re.DOTALL)
|
||||
|
||||
msg = re.sub(r"<font\s+.+?>", "", msg, flags=re.UNICODE)
|
||||
msg = re.sub("</font>", "", msg, flags=re.UNICODE)
|
||||
msg = re.sub("</a>", "[/link]", msg, flags=re.UNICODE)
|
||||
|
||||
@@ -50,7 +50,9 @@ class MessageHubService:
|
||||
f"Incorrect number of arguments for handler '{callback.__module__}.{callback.__name__}()'")
|
||||
|
||||
if destination in self.hub:
|
||||
raise Exception(f"Message hub destination '{destination}' already subscribed")
|
||||
self.logger.error(f"Message hub destination '{destination}' already subscribed")
|
||||
return
|
||||
# raise Exception(f"Message hub destination '{destination}' already subscribed")
|
||||
|
||||
for source in default_sources:
|
||||
if source not in self.sources:
|
||||
|
||||
@@ -39,6 +39,7 @@ class SettingService:
|
||||
if module.split(".")[0] not in self.bot.modules:
|
||||
return
|
||||
setting.set_name(name)
|
||||
setting.module = module
|
||||
setting.set_description(description)
|
||||
setting.set_extended_description(extended_description)
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ class SettingType:
|
||||
def __init__(self):
|
||||
self.setting_service = Registry.get_instance("setting_service")
|
||||
self.name = None
|
||||
self.module = ""
|
||||
|
||||
def set_name(self, name):
|
||||
self.name = name
|
||||
|
||||
Reference in New Issue
Block a user