diff --git a/core/igncore.py b/core/igncore.py index 8d6e92e..714ecba 100644 --- a/core/igncore.py +++ b/core/igncore.py @@ -42,7 +42,7 @@ class Tyrbot: self.last_timer_event = 0 self.start_time = int(time.time()) self.major_version = "IGNCore v2.6" - self.minor_version = "2" + self.minor_version = "3" self.incoming_queue = FifoQueue() self.mass_message_queue = None self.conns = DictObject() diff --git a/core/public_channel_service.py b/core/public_channel_service.py index 35f0554..e590d84 100644 --- a/core/public_channel_service.py +++ b/core/public_channel_service.py @@ -36,10 +36,10 @@ class PublicChannelService(BaseModule): priority=30) self.event_service.register_event_type(self.ORG_CHANNEL_MESSAGE_EVENT) self.event_service.register_event_type(self.ORG_MSG_EVENT) - self.setting_service.register_new('core.system', 'org_id', 0, - NumberSettingType(), 'OrgID used for roster') - self.setting_service.register_new('core.system', 'org_name', "", - TextSettingType(allow_empty=True), 'OrgName used for roster') + self.setting_service.register('core.system', 'org_id', 0, + NumberSettingType(), 'OrgID used for roster') + self.setting_service.register('core.system', 'org_name', "", + TextSettingType(allow_empty=True), 'OrgName used for roster') def start(self): org_id_setting = self.setting_service.get("org_id") diff --git a/core/setting_service.py b/core/setting_service.py index f8adfb4..56b1590 100644 --- a/core/setting_service.py +++ b/core/setting_service.py @@ -25,14 +25,9 @@ class SettingService: for name, method in get_attrs(inst).items(): if hasattr(method, "setting"): setting_name, value, description, extended_description, obj = getattr(method, "setting") - self.register(setting_name, value, description, obj, inst.module_name, extended_description) + self.register(inst.module_name, setting_name, value, obj, description, extended_description) - def register(self, name, value, description, setting, module, extended_description=None): - """Deprecated. Use register_new()""" - self.logger.warning(f"Using deprecated register method for setting '{name}' in module {module}") - self.register_new(module, name, value, setting, description, extended_description) - - def register_new(self, module, name, value, setting, description, extended_description=None): + def register(self, module, name, value, setting, description, extended_description=None): """Call during start""" name = name.lower() module = module.lower() @@ -44,10 +39,10 @@ class SettingService: setting.set_extended_description(extended_description) if not description: - self.logger.warning("No description specified for setting '%s'" % name) + self.logger.warning(f"No description specified for setting '{name}'") if " " in name: - raise Exception("One or more spaces found in setting name '%s' for module '%s'" % (name, module)) + raise Exception(f"One or more spaces found in setting name '{name}' for module '{module}'") row = self.db.query_single("SELECT name, value, description FROM setting WHERE name = ?", [name]) diff --git a/core/translation_service.py b/core/translation_service.py index a894ff4..441570e 100644 --- a/core/translation_service.py +++ b/core/translation_service.py @@ -33,8 +33,8 @@ class TranslationService: self.event_service.register_event_type("reload_translation") def start(self): - self.setting_service.register_new("core.system", self.LANGUAGE_SETTING, "en_US", - TextSettingType(self.lang_codes), "Language of the Bot") + self.setting_service.register("core.system", self.LANGUAGE_SETTING, "en_US", + TextSettingType(self.lang_codes), "Language of the Bot") self.language = self.setting_service.get_value(self.LANGUAGE_SETTING) self.register_translation("global", self.load_global_msg) diff --git a/modules/core/accounting/services/account_service.py b/modules/core/accounting/services/account_service.py index 580dd14..0603aab 100644 --- a/modules/core/accounting/services/account_service.py +++ b/modules/core/accounting/services/account_service.py @@ -118,18 +118,18 @@ class AccountService: self.event_service.register_event_type(self.MAIN_CHANGED_EVENT_TYPE) self.event_service.register_event_type(self.MEMBER_LOGON) self.event_service.register_event_type(self.MEMBER_LOGOFF) - self.setting_service.register_new(self.module_name, "is_alliance_bot", False, BooleanSettingType(), + self.setting_service.register(self.module_name, "is_alliance_bot", False, BooleanSettingType(), "Is this bot used as an alliancebot") - self.setting_service.register_new(self.module_name, "alt_verification", False, BooleanSettingType(), + self.setting_service.register(self.module_name, "alt_verification", False, BooleanSettingType(), "alts require admin verification") # Default preferences - self.setting_service.register_new(self.module_name, "pref_autoinvite", False, BooleanSettingType(), + self.setting_service.register(self.module_name, "pref_autoinvite", False, BooleanSettingType(), "Default Value for the auto invite preference") - self.setting_service.register_new(self.module_name, "pref_raidinvite", True, BooleanSettingType(), + self.setting_service.register(self.module_name, "pref_raidinvite", True, BooleanSettingType(), "Default Value for the raid invite (Massinvite) preference") - self.setting_service.register_new(self.module_name, "pref_raidspam", True, BooleanSettingType(), + self.setting_service.register(self.module_name, "pref_raidspam", True, BooleanSettingType(), "Default Value for the raid spam (Mass Message) preference") - self.setting_service.register_new(self.module_name, "pref_newsspam", True, BooleanSettingType(), + self.setting_service.register(self.module_name, "pref_newsspam", True, BooleanSettingType(), "Default Value for the news spam (News on logon) preference") v = self.setting_service.get_value("pref_raidspam") diff --git a/modules/core/colors/color_controller.py b/modules/core/colors/color_controller.py index 5676282..ffc224f 100644 --- a/modules/core/colors/color_controller.py +++ b/modules/core/colors/color_controller.py @@ -13,27 +13,27 @@ class ColorController(BaseModule): # noinspection LongLine def start(self): - self.setting_service.register_new(self.module_name, "header_color", "#FFFF00", ColorSettingType(), + self.setting_service.register(self.module_name, "header_color", "#FFFF00", ColorSettingType(), "Color for headers") - self.setting_service.register_new(self.module_name, "header2_color", "#FCA712", ColorSettingType(), + self.setting_service.register(self.module_name, "header2_color", "#FCA712", ColorSettingType(), "Color for sub-headers") - self.setting_service.register_new(self.module_name, "highlight_color", "#00FF00", ColorSettingType(), + self.setting_service.register(self.module_name, "highlight_color", "#00FF00", ColorSettingType(), "Color for highlight") - self.setting_service.register_new(self.module_name, "notice_color", "#FF8C00", ColorSettingType(), + self.setting_service.register(self.module_name, "notice_color", "#FF8C00", ColorSettingType(), "Color for important notices") - self.setting_service.register_new(self.module_name, "neutral_color", "#E6E1A6", ColorSettingType(), + self.setting_service.register(self.module_name, "neutral_color", "#E6E1A6", ColorSettingType(), "Color for neutral faction") - self.setting_service.register_new(self.module_name, "omni_color", "#FA8484", ColorSettingType(), + self.setting_service.register(self.module_name, "omni_color", "#FA8484", ColorSettingType(), "Color for omni faction") - self.setting_service.register_new(self.module_name, "clan_color", "#F79410", ColorSettingType(), + self.setting_service.register(self.module_name, "clan_color", "#F79410", ColorSettingType(), "Color for clan faction") - self.setting_service.register_new(self.module_name, "unknown_color", "#FF0000", ColorSettingType(), + self.setting_service.register(self.module_name, "unknown_color", "#FF0000", ColorSettingType(), "Color for unknown faction") - self.setting_service.register_new(self.module_name, "org_channel_color", "#89D2E8", ColorSettingType(), + self.setting_service.register(self.module_name, "org_channel_color", "#89D2E8", ColorSettingType(), "Default org channel color") - self.setting_service.register_new(self.module_name, "private_channel_color", "#89D2E8", ColorSettingType(), + self.setting_service.register(self.module_name, "private_channel_color", "#89D2E8", ColorSettingType(), "Default private channel color") - self.setting_service.register_new(self.module_name, "private_message_color", "#89D2E8", ColorSettingType(), + self.setting_service.register(self.module_name, "private_message_color", "#89D2E8", ColorSettingType(), "Default private message color") - self.setting_service.register_new(self.module_name, "blob_color", "#FFFFFF", ColorSettingType(), + self.setting_service.register(self.module_name, "blob_color", "#FFFFFF", ColorSettingType(), "Default blob content color") diff --git a/modules/core/discord/discord_controller.py b/modules/core/discord/discord_controller.py index 5a7393e..407f5a3 100644 --- a/modules/core/discord/discord_controller.py +++ b/modules/core/discord/discord_controller.py @@ -107,7 +107,7 @@ class DiscordController: self.setting_service: SettingService = registry.get_instance("setting_service") def pre_start(self): - self.setting_service.register_new(self.module_name, "discord_token", "", HiddenSettingType(allow_empty=True), + self.setting_service.register(self.module_name, "discord_token", "", HiddenSettingType(allow_empty=True), "Enter your Discord token her") def get_name(self, discord_id): @@ -589,7 +589,7 @@ class DiscordController: else: response = f"{html.escape(msg.author.nick if msg.author.nick else msg.author.name, False)}: " \ f"{html.escape(emojis.decode(msg.clean_content), False)}" - await msg.delete(delay=3600) + await msg.delete(delay=3600) self.relay_hub_service.send_message("public_relay", [msg.author.nick, msg.author], response, response) if self.is_command(msg.content): diff --git a/modules/core/riadmin/riadmin_controller.py b/modules/core/riadmin/riadmin_controller.py index 1199c7d..8432901 100644 --- a/modules/core/riadmin/riadmin_controller.py +++ b/modules/core/riadmin/riadmin_controller.py @@ -48,11 +48,11 @@ class RIAdminController: "raid_instance_id INT NOT NULL, " "char_id INT PRIMARY KEY, " "is_leader TINYINT NOT NULL) ENGINE MEMORY") - self.setting_service.register_new(self.module_name, "riadmin_network", - "[905848882, 272234, 1923370, 313107, 1217210821, 1134420908]", - TextSettingType(), "Allowed bots (charID's)", - extended_description="This setting is *NOT* synchronized across the network;" - " this needs to be done manually!") + self.setting_service.register(self.module_name, "riadmin_network", + "[905848882, 272234, 1923370, 313107, 1217210821, 1134420908]", + TextSettingType(), "Allowed bots (charID's)", + extended_description="This setting is *NOT* synchronized across the network;" + " this needs to be done manually!") @event(event_type="buddy_logoff", description="Track raiders") def raider_logoff(self, _, event_data): diff --git a/modules/core/system/message_hub_controller.py b/modules/core/system/message_hub_controller.py index f19f145..3bb14ac 100644 --- a/modules/core/system/message_hub_controller.py +++ b/modules/core/system/message_hub_controller.py @@ -14,19 +14,16 @@ class MessageHubController: self.message_hub_service = registry.get_instance("message_hub_service") self.getresp = partial(registry.get_instance("translation_service").get_response, "module/system") - def start(self): - pass - @command(command="messagehub", params=[], access_level="admin", description="Show the current message hub subscriptions") def messagehub_cmd(self, _): blob = self.getresp("messagehub_info") + "\n" subscriptions = self.message_hub_service.hub for destination, obj in subscriptions.items(): - edit_subs_link = self.text.make_tellcmd(destination, "messagehub edit %s" % destination) - blob += "\n%s\n" % edit_subs_link + edit_subs_link = self.text.make_tellcmd(destination, f"messagehub edit {destination}") + blob += f"\n{edit_subs_link}\n" for source in obj.sources: - blob += " └ %s\n" % source + blob += f" └ {source}\n" return ChatBlob(self.getresp("messagehub_title", {"count": len(subscriptions)}), blob) @@ -43,13 +40,13 @@ class MessageHubController: if source in obj.invalid_sources: continue - sub_link = self.text.make_tellcmd("Subscribe", "messagehub subscribe %s %s" % (destination, source)) - unsub_link = self.text.make_tellcmd("Unsubscribe", "messagehub unsubscribe %s %s" % (destination, source)) + sub_link = self.text.make_tellcmd("Subscribe", f"messagehub subscribe {destination} {source}") + unsub_link = self.text.make_tellcmd("Unsubscribe", f"messagehub unsubscribe {destination} {source}") status = "" if source in obj.sources: count += 1 - status = "%s" % self.getresp("subscribed") - blob += "%s [%s] [%s] %s\n\n" % (source, sub_link, unsub_link, status) + status = f"{self.getresp('subscribed')}" + blob += f"{source} [{sub_link}] [{unsub_link}] {status}\n\n" return ChatBlob( self.getresp("messagehub_edit_title", {"destination": destination.capitalize(), "count": count}), blob) diff --git a/modules/core/system/system_controller.py b/modules/core/system/system_controller.py index 503bbcc..c26bd8e 100644 --- a/modules/core/system/system_controller.py +++ b/modules/core/system/system_controller.py @@ -34,24 +34,24 @@ class SystemController: def start(self): self.ts.register_translation("module/system", self.load_system_msg) - self.setting_service.register_new(self.module_name, "expected_shutdown", True, BooleanSettingType(), - "Helps bot to determine if last shutdown was expected or due to a problem") - self.setting_service.register_new("core.system", "symbol", "!", - TextSettingType(["!", "#", "*", "@", "$", "+", "-"]), - "Symbol for executing bot commands") - self.setting_service.register_new("core.system", "org_channel_max_page_length", 7500, - NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]), - "Maximum size of blobs in org channel") - self.setting_service.register_new("core.system", "private_message_max_page_length", 7500, - NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]), - "Maximum size of blobs in private messages") - self.setting_service.register_new("core.system", "private_channel_max_page_length", 7500, - NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]), - "Maximum size of blobs in private channel") + self.setting_service.register(self.module_name, "expected_shutdown", True, BooleanSettingType(), + "Helps bot to determine if last shutdown was expected or due to a problem") + self.setting_service.register(self.module_name, "symbol", "!", + TextSettingType(["!", "#", "*", "@", "$", "+", "-"]), + "Symbol for executing bot commands") + self.setting_service.register(self.module_name, "org_channel_max_page_length", 7500, + NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]), + "Maximum size of blobs in org channel") + self.setting_service.register(self.module_name, "private_message_max_page_length", 7500, + NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]), + "Maximum size of blobs in private messages") + self.setting_service.register(self.module_name, "private_channel_max_page_length", 7500, + NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]), + "Maximum size of blobs in private channel") - self.setting_service.register_new("core.system", "accept_commands_from_slave_bots", True, BooleanSettingType(), - "Accept and respond to commands sent to slave bots (only applies if you have " - "added slave bots in the config)") + self.setting_service.register(self.module_name, "accept_commands_from_slave_bots", True, BooleanSettingType(), + "Accept and respond to commands sent to slave bots (only applies if you have " + "added slave bots in the config)") def load_system_msg(self): with open("modules/core/system/system.msg", mode="r", encoding="utf-8") as f: diff --git a/modules/core/system/util_controller.py b/modules/core/system/util_controller.py index 0bbad67..1258419 100644 --- a/modules/core/system/util_controller.py +++ b/modules/core/system/util_controller.py @@ -9,6 +9,7 @@ import psutil from core.chat_blob import ChatBlob from core.command_param_types import Any, Character from core.decorators import instance, command +from core.lookup.character_service import CharacterService from core.util import Util @@ -23,6 +24,7 @@ class UtilController: self.access_service = registry.get_instance("access_service") self.event_service = registry.get_instance("event_service") self.public_channel_service = registry.get_instance("public_channel_service") + self.character_service: CharacterService = registry.get_instance("character_service") self.getresp = registry.get_instance("translation_service").get_response @command(command="checkaccess", params=[Character("character")], access_level="moderator", @@ -94,14 +96,13 @@ class UtilController: bots_connected += f"{_id} - {conn.char_name} ({conn.char_id})\n" for channel_id, name in self.public_channel_service.get_all_public_channels().items(): - pub_channels += "%s - %d\n" % (name, channel_id) + pub_channels += f"{name} - {channel_id:d}\n" for event_type in self.event_service.get_event_types(): - event_types += "%s\n" % event_type + event_types += f"{event_type}\n" for access_level in self.access_service.get_access_levels(): - access_levels += "%s (%d)\n" % (access_level["label"], access_level["level"]) - + access_levels += f"{access_level['label']} ({access_level['level']:d})\n" blob = self.getresp("module/system", "status_blob", { "bot_ver": f"{self.bot.major_version}.{self.bot.minor_version}", "os_ver": platform.system() + " " + platform.release(), @@ -112,7 +113,7 @@ class UtilController: "db_type": self.db.type if not self.db.MARIADB else f"{self.db.MARIADB} with " f"{self.db.pool_size} active connections", "mem_usage": self.util.format_number(psutil.Process(os.getpid()).memory_info().rss / 1024), - "superadmin": "Not Set", + "superadmin": ", ".join([self.character_service.get_char_name(x) or str(x) for x in self.bot.superadmin]), "bl_used": self.buddy_service.get_buddy_list_size(), "bl_size": self.buddy_service.buddy_list_size, "uptime": self.util.time_to_readable(int(time.time()) - self.bot.start_time, max_levels=None), diff --git a/modules/onlinebot/Darknet/darknet_controller.py b/modules/onlinebot/Darknet/darknet_controller.py index 83c3bb0..ea7adb0 100644 --- a/modules/onlinebot/Darknet/darknet_controller.py +++ b/modules/onlinebot/Darknet/darknet_controller.py @@ -36,21 +36,21 @@ class DarkController: self.message_hub_service.register_message_source(self.MESSAGE_SOURCE) def start(self): - self.setting_service.register_new(self.module_name, "dark_relay", "true", BooleanSettingType(), + self.setting_service.register(self.module_name, "dark_relay", "true", BooleanSettingType(), "Is the Module Enabled?") - self.setting_service.register_new(self.module_name, "dark_wts", "true", BooleanSettingType(), + self.setting_service.register(self.module_name, "dark_wts", "true", BooleanSettingType(), "Is the WTS channel visible?") - self.setting_service.register_new(self.module_name, "dark_wtb", "true", BooleanSettingType(), + self.setting_service.register(self.module_name, "dark_wtb", "true", BooleanSettingType(), "Is the WTB channel visible?") - self.setting_service.register_new(self.module_name, "dark_lr", "true", BooleanSettingType(), + self.setting_service.register(self.module_name, "dark_lr", "true", BooleanSettingType(), "Is the Lootrights channel visible?") - self.setting_service.register_new(self.module_name, "dark_gen", "true", BooleanSettingType(), + self.setting_service.register(self.module_name, "dark_gen", "true", BooleanSettingType(), "Is the General channel visible?") - self.setting_service.register_new(self.module_name, "dark_pvp", "true", BooleanSettingType(), + self.setting_service.register(self.module_name, "dark_pvp", "true", BooleanSettingType(), "Is the PvP channel visible?") - self.setting_service.register_new(self.module_name, "dark_pvm", "true", BooleanSettingType(), + self.setting_service.register(self.module_name, "dark_pvm", "true", BooleanSettingType(), "Is the PVM channel visible?") - self.setting_service.register_new(self.module_name, "dark_event", "true", BooleanSettingType(), + self.setting_service.register(self.module_name, "dark_event", "true", BooleanSettingType(), "Is the Event channel visible?") def handle_private_channel_invite(self, conn: Conn, packet: server_packets.PrivateChannelInvited): diff --git a/modules/onlinebot/alliance/alliance_relay_controller.py b/modules/onlinebot/alliance/alliance_relay_controller.py index f269b2b..44d2074 100644 --- a/modules/onlinebot/alliance/alliance_relay_controller.py +++ b/modules/onlinebot/alliance/alliance_relay_controller.py @@ -30,14 +30,14 @@ class AllianceRelayController: self.message_hub_service.register_message_source(self.MESSAGE_SOURCE) def start(self): - self.setting_service.register_new(self.module_name, "arelaybot", "", - TextSettingType(allow_empty=True), "Bot for alliance relay") + self.setting_service.register(self.module_name, "arelaybot", "", + TextSettingType(allow_empty=True), "Bot for alliance relay") - self.setting_service.register_new(self.module_name, "arelay_enabled", False, - BooleanSettingType(), "Enable the alliance relay") + self.setting_service.register(self.module_name, "arelay_enabled", False, + BooleanSettingType(), "Enable the alliance relay") - self.setting_service.register_new(self.module_name, "arelay_color", "#C3C3C3", - ColorSettingType(), + self.setting_service.register(self.module_name, "arelay_color", "#C3C3C3", + ColorSettingType(), "Color of messages from relay") self.message_hub_service.register_message_destination(self.MESSAGE_SOURCE, self.handle_relay_hub_message, [], diff --git a/modules/orgbot/alliance/alliance_relay.py b/modules/orgbot/alliance/alliance_relay.py index f9a0944..db43e48 100644 --- a/modules/orgbot/alliance/alliance_relay.py +++ b/modules/orgbot/alliance/alliance_relay.py @@ -5,7 +5,7 @@ from core.aochat.client_packets import PrivateChannelLeave from core.chat_blob import ChatBlob from core.command_param_types import Const, Character, Options, Any from core.conn import Conn -from core.decorators import instance, command +from core.decorators import instance, command, setting from core.logger import Logger from core.lookup.character_service import CharacterService from core.setting_service import SettingService @@ -35,17 +35,6 @@ class AllianceRelay: self.message_hub_service.register_message_source(self.MESSAGE_SOURCE) def start(self): - - self.setting_service.register_new(self.module_name, "relay_symbols", {'default': "-"}, DictionarySettingType(), "Symbol for external relay") - self.setting_service.register_new(self.module_name, "relay_symbol_methods", {'default': "always"}, DictionarySettingType(), "When to relay messages") - self.setting_service.register_new(self.module_name, "relay_bots", {}, DictionarySettingType(), "Bot for alliance relay") - self.setting_service.register_new(self.module_name, "relay_command", {"default": "!agcr"}, DictionarySettingType(), "Relay command for the relay") - self.setting_service.register_new(self.module_name, "relay_enabled", {"default": True}, DictionarySettingType(), "Enable the alliance relay") - self.setting_service.register_new(self.module_name, "relay_guild_abbreviations", {"default": self.public_channel_service.get_org_name()}, DictionarySettingType(), "Abbreviation to use for org name") - self.setting_service.register_new(self.module_name, "relay_color_base", {"default": "#00FF00"}, DictionarySettingType(), "Base color for alliance relay") - self.setting_service.register_new(self.module_name, "relay_color_org", {"default": "#FFFF00"}, DictionarySettingType(), "Org color for alliance relay") - self.setting_service.register_new(self.module_name, "relay_color_sender", {"default": "#FF8C00"}, DictionarySettingType(), "Name color for alliance relay") - self.setting_service.register_new(self.module_name, "relay_color_msg", {"default": "#FF8C00"}, DictionarySettingType(), "Message color for alliance relay") self.message_hub_service.register_message_destination(self.MESSAGE_SOURCE, self.handle_relay_hub_message, ["org_channel"], @@ -381,35 +370,45 @@ class AllianceRelay: packet = client_packets.PrivateChannelMessage(int(alliance), self.text.format_message(msg, False), "\0") self.bot.conns["main"].send_packet(packet) + @setting(name="relay_symbols", value={"default": "-"}, description="Symbol for external relay") def relay_symbols(self) -> DictionarySettingType: - return self.setting_service.get("relay_symbols") + return DictionarySettingType() + @setting(name="relay_symbol_methods", value={'default': "always"}, description="Relay methods for the relays") def relay_symbol_methods(self) -> DictionarySettingType: - return self.setting_service.get("relay_symbol_methods") + return DictionarySettingType() + @setting(name="relay_bots", value={}, description="Bots used for relaying") def relay_bots(self) -> DictionarySettingType: - return self.setting_service.get("relay_bots") + return DictionarySettingType() + @setting(name="relay_enabled", value={"default": True}, description="Enabled status of the relays") def relay_enabled(self) -> DictionarySettingType: - return self.setting_service.get("relay_enabled") + return DictionarySettingType() + @setting(name="relay_guild_abbreviations", value={"default": "UNSET"}, description="Abbreviations used for the relays") def relay_guild_abbreviations(self) -> DictionarySettingType: - return self.setting_service.get("relay_guild_abbreviations") + return DictionarySettingType() + @setting(name="relay_color_base", value={"default": "#00FF00"}, description="Base color used for the relays") def relay_color_base(self) -> DictionarySettingType: - return self.setting_service.get("relay_color_base") + return DictionarySettingType() + @setting(name="relay_color_org", value={"default": "#FFFF00"}, description="Abbrv color used for the relays") def relay_color_org(self) -> DictionarySettingType: - return self.setting_service.get("relay_color_org") + return DictionarySettingType() + @setting(name="relay_color_sender", value={"default": "#FF8C00"}, description="Sender color used for the relays") def relay_color_sender(self) -> DictionarySettingType: - return self.setting_service.get("relay_color_sender") + return DictionarySettingType() + @setting(name="relay_color_msg", value={"default": "#FF8C00"}, description="Message color used for the relays") def relay_color_msg(self) -> DictionarySettingType: - return self.setting_service.get("relay_color_msg") + return DictionarySettingType() + @setting(name="relay_command", value={"default": "!agcr"}, description="Relay command used for the relays") def relay_command(self) -> DictionarySettingType: - return self.setting_service.get("relay_command") + return DictionarySettingType() def check_color(self, msg: str): if not msg.startswith('#'): diff --git a/modules/orgbot/org/org_controller.py b/modules/orgbot/org/org_controller.py index ce95d47..c987656 100644 --- a/modules/orgbot/org/org_controller.py +++ b/modules/orgbot/org/org_controller.py @@ -41,11 +41,10 @@ class OrgChannelController: def start(self): self.message_hub_service.register_message_destination( self.MESSAGE_SOURCE, self.handle_incoming_relay_message, - ["private_channel", "discord", "websocket_relay", "tell_relay", "broadcast", - "raffle", "cloak_reminder", "wave_counter", "shutdown_notice", "raid"], + ["private_channel", "websocket_relay", "cloak_reminder", "wave_counter", "shutdown_notice"], [self.MESSAGE_SOURCE]) - self.setting_service.register_new(self.module_name, "prefix_org_priv", True, BooleanSettingType(), + self.setting_service.register(self.module_name, "prefix_org_priv", True, BooleanSettingType(), "Should the prefix [org] be displayed in relayed messages") def handle_incoming_relay_message(self, ctx): diff --git a/modules/raidbot/tower/tower_controller.py b/modules/raidbot/tower/tower_controller.py index 0ec6a77..5229955 100644 --- a/modules/raidbot/tower/tower_controller.py +++ b/modules/raidbot/tower/tower_controller.py @@ -84,7 +84,7 @@ class TowerController: victory.location.playfield = self.playfield_controller.get_playfield_by_name(playfield_name) or \ DictObject() victory.location.playfield.long_name = playfield_name - print(victory) + # print(victory) self.event_service.fire_event(self.TOWER_VICTORY_EVENT, victory) elif packet.channel_id == self.ALL_TOWERS_ID: attack = self.get_attack_event(packet) diff --git a/modules/standard/MessageDistributor/message_distributor.py b/modules/standard/MessageDistributor/message_distributor.py index f5224f3..efc7306 100644 --- a/modules/standard/MessageDistributor/message_distributor.py +++ b/modules/standard/MessageDistributor/message_distributor.py @@ -12,6 +12,7 @@ from core.logger import Logger from core.lookup.character_service import CharacterService from core.lookup.pork_service import PorkService from core.message_hub_service import MessageHubService +from core.registry import Registry from core.setting_service import SettingService from core.setting_types import NumberSettingType from core.text import Text @@ -47,40 +48,42 @@ class MessageDistributor: self.relay_hub_service.register_message_source("access_denied_logger") self.relay_hub_service.register_message_source("member_logger") + def start(self): self.relay_hub_service.register_message_destination("tell_log", self.handle_logging_tell, ["tell_logger"], ["tell_log"]) - self.setting_service.register_new(self.module_name, "dc_tell_log", 0, NumberSettingType(allow_empty=True), + self.setting_service.register(self.module_name, "dc_tell_log", 0, NumberSettingType(allow_empty=True), "ChannelID for the Tell Log") self.relay_hub_service.register_message_destination("access_denied_log", self.handle_logging_denied, ["access_denied_logger"], ["access_denied_log"]) - self.setting_service.register_new(self.module_name, "dc_denied_log", 0, NumberSettingType(allow_empty=True), + self.setting_service.register(self.module_name, "dc_denied_log", 0, NumberSettingType(allow_empty=True), "ChannelID for the Access Denied Log") self.relay_hub_service.register_message_destination("relay_log", self.handle_logging_relay, ["alliance", "public_relay"], ["relay_log"]) - self.setting_service.register_new(self.module_name, "dc_relay_log", 0, NumberSettingType(allow_empty=True), + self.setting_service.register(self.module_name, "dc_relay_log", 0, NumberSettingType(allow_empty=True), "ChannelID for the Relay Log") self.relay_hub_service.register_message_destination("public_relay", self.handle_public_relay, ["alliance"], ["public_relay"]) - self.setting_service.register_new(self.module_name, "dc_relay_public", 0, NumberSettingType(allow_empty=True), + self.setting_service.register(self.module_name, "dc_relay_public", 0, NumberSettingType(allow_empty=True), "ChannelID for the Public Relay Channel") self.relay_hub_service.register_message_destination("system", self.handle_logging_system, ["system_logger"], ["system"]) - self.setting_service.register_new(self.module_name, "dc_system_log", 0, NumberSettingType(allow_empty=True), + self.setting_service.register(self.module_name, "dc_system_log", 0, NumberSettingType(allow_empty=True), "ChannelID for the System Channel") self.relay_hub_service.register_message_destination("dc_member_log", self.handle_logging_members, ["member_logger"], ["dc_member_log"]) - self.setting_service.register_new(self.module_name, "dc_member_log", 0, NumberSettingType(allow_empty=True), + self.setting_service.register(self.module_name, "dc_member_log", 0, NumberSettingType(allow_empty=True), "ChannelID for the Member Log") - self.relay_hub_service.register_message_destination("dc_darknet_log", self.handle_darknet_log, ["darknet"], - [""]) - self.setting_service.register_new(self.module_name, "dc_darknet_log", 0, NumberSettingType(allow_empty=True), - "ChannelID for the Darknet Log") + if Registry.get_instance("darknet", is_optional=True): + self.relay_hub_service.register_message_destination("dc_darknet_log", self.handle_darknet_log, ["darknet"], + [""]) + self.setting_service.register(self.module_name, "dc_darknet_log", 0, NumberSettingType(allow_empty=True), + "ChannelID for the Darknet Log") def handle_public_relay(self, ctx): if self.setting_service.get_value("dc_relay_public") != "0": diff --git a/modules/standard/datanet/relay_controller.py b/modules/standard/datanet/relay_controller.py index e51b8d9..5f56c75 100644 --- a/modules/standard/datanet/relay_controller.py +++ b/modules/standard/datanet/relay_controller.py @@ -43,35 +43,34 @@ class RelayController: def start(self): self.message_hub_service.register_message_destination(self.MESSAGE_SOURCE, self.handle_message_from_hub, - ["private_channel", "org_channel", - "discord", "tell_relay"], + ["private_channel", "org_channel"], [self.MESSAGE_SOURCE]) - self.setting_service.register_new(self.module_name, "websocket_relay_enabled", False, BooleanSettingType(), + self.setting_service.register(self.module_name, "websocket_relay_enabled", False, BooleanSettingType(), "Enable the websocket relay") - self.setting_service.register_new(self.module_name, "websocket_relay_server_address", + self.setting_service.register(self.module_name, "websocket_relay_server_address", "ws://localhost/subscribe/relay", - TextSettingType(["ws://localhost/subscribe/relay"]), + TextSettingType(["ws://localhost/subscribe/relay"]), "The address of the websocket relay server", "All bots on the relay must connect to the same server and channel. " "If using the public relay server, use a unique channel name.") - self.setting_service.register_new(self.module_name, "websocket_relay_channel_color", "#FFFF00", - ColorSettingType(), "Color of the channel in websocket relay messages") - self.setting_service.register_new(self.module_name, "websocket_relay_message_color", "#FCA712", - ColorSettingType(), + self.setting_service.register(self.module_name, "websocket_relay_channel_color", "#FFFF00", + ColorSettingType(), "Color of the channel in websocket relay messages") + self.setting_service.register(self.module_name, "websocket_relay_message_color", "#FCA712", + ColorSettingType(), "Color of the message content in websocket relay messages") - self.setting_service.register_new(self.module_name, "websocket_relay_sender_color", "#00DE42", - ColorSettingType(), "Color of the sender in websocket relay messages") - self.setting_service.register_new(self.module_name, "websocket_encryption_key", "", - HiddenSettingType(allow_empty=True), + self.setting_service.register(self.module_name, "websocket_relay_sender_color", "#00DE42", + ColorSettingType(), "Color of the sender in websocket relay messages") + self.setting_service.register(self.module_name, "websocket_encryption_key", "", + HiddenSettingType(allow_empty=True), "An encryption key used to encrypt messages over a public websocket relay") - self.setting_service.register_new(self.module_name, "ws_relay_prefix", "", TextSettingType(allow_empty=True), + self.setting_service.register(self.module_name, "ws_relay_prefix", "", TextSettingType(allow_empty=True), "Name of this relay (if you don't want to use org or bot name)") - self.setting_service.register_new(self.module_name, "ws_msg_relay_prefix", "||", - TextSettingType(["!", "#", "*", "@", "$", "+", "-"]), + self.setting_service.register(self.module_name, "ws_msg_relay_prefix", "||", + TextSettingType(["!", "#", "*", "@", "$", "+", "-"]), "Prefix for Messages which should get relayed") - self.setting_service.register_new(self.module_name, "ws_relay_type", "with_symbol", - TextSettingType(["with_symbol", "unless_symbol", "always"]), + self.setting_service.register(self.module_name, "ws_relay_type", "with_symbol", + TextSettingType(["with_symbol", "unless_symbol", "always"]), "Relay Messages", ) self.initialize_encrypter(self.setting_service.get("websocket_encryption_key").get_value()) diff --git a/modules/standard/datanet/ws_controller.py b/modules/standard/datanet/ws_controller.py index 9c71c89..826beb1 100644 --- a/modules/standard/datanet/ws_controller.py +++ b/modules/standard/datanet/ws_controller.py @@ -36,10 +36,10 @@ class WebsocketRelayController(BaseModule): def pre_start(self): self.event_service.register_event_type(self.WS_RELAY) - self.setting_service.register_new(self.module_name, + self.setting_service.register(self.module_name, 'relay_address', 'ws://localhost:25500', - TextSettingType([], allow_empty=True), + TextSettingType([], allow_empty=True), "relay for timers, tower info, ...") @timerevent(budatime="1s", description="Relay messages from Data relay to the internal message hub", diff --git a/modules/standard/loot/loot_controller.py b/modules/standard/loot/loot_controller.py index 01e12a8..0c82a80 100644 --- a/modules/standard/loot/loot_controller.py +++ b/modules/standard/loot/loot_controller.py @@ -93,7 +93,7 @@ class LootController: if self.loot_list[item_index]: self.last_modify = int(time.time()) self.bot.send_private_channel_message( - "Removed %s from loot list." % self.loot_list.pop(item_index).get_item_str()) + f"Removed {self.loot_list.pop(item_index).get_item_str()} from loot list.") else: return "Item error." except KeyError: @@ -115,7 +115,7 @@ class LootController: loot_item.count += 1 self.last_modify = int(time.time()) self.bot.send_private_channel_message( - "Increased item count for %s to %d." % (loot_item.get_item_str(), loot_item.count)) + f"Increased item count for {loot_item.get_item_str()} to {loot_item.count:d}.") else: return "Item error." except KeyError: @@ -137,7 +137,7 @@ class LootController: loot_item.count = loot_item.count - 1 if loot_item.count > 1 else 1 self.last_modify = int(time.time()) self.bot.send_private_channel_message( - "Decreased item count for %s to %d." % (loot_item.get_item_str(), loot_item.count)) + f"Decreased item count for {loot_item.get_item_str()} to {loot_item.count:d}.") else: return "Item error." except KeyError: @@ -173,12 +173,12 @@ class LootController: self.last_modify = int(time.time()) if old_item is not None: - text = "moved from %s to %s." % (old_item.get_item_str(), loot_item.get_item_str()) - self.bot.send_mass_message(request.sender.char_id, "You have %s" % text) + text = f"moved from {old_item.get_item_str()} to {loot_item.get_item_str()}." + self.bot.send_mass_message(request.sender.char_id, f"You have {text}") self.bot.send_private_channel_message(request.sender.name + " " + text) else: - text = "added to %s." % loot_item.get_item_str() - self.bot.send_mass_message(request.sender.char_id, "You have %s" % text) + text = f"added to {loot_item.get_item_str()}." + self.bot.send_mass_message(request.sender.char_id, f"You have {text}") self.bot.send_private_channel_message(request.sender.name + " " + text) except KeyError: @@ -193,8 +193,8 @@ class LootController: loot_item.bidders.remove(request.sender.name) self.last_modify = int(time.time()) - text = "removed from %s." % loot_item.get_item_str() - self.bot.send_private_message(request.sender.char_id, "You were %s" % text) + text = f"removed from {loot_item.get_item_str()}." + self.bot.send_private_message(request.sender.char_id, f"You were {text}") self.bot.send_private_channel_message(request.sender.name + " was " + text) else: return "You are not added to any loot." @@ -230,15 +230,14 @@ class LootController: "loot", f"{loot_item.get_item_str()}", request.sender.char_id) - blob += "%d. %s\n" % (i, loot_item.get_item_str()) - blob += " | Winners: %s\n\n" % ', '.join(winners) + blob += f"{i:d}. {loot_item.get_item_str()}\n" + blob += f" | Winners: {', '.join(winners)}\n\n" if loot_item.count == 0: remove.append(i) for i in remove: self.loot_list.pop(i) - msg = ChatBlob("Roll results", blob) - msg.page_prefix = "Time is up! " + msg = ChatBlob("Roll results", blob, "\n________________\n\nTime is UP!\n", "\n________________") self.bot.send_private_channel_message(msg if len(blob) > 0 else "No one was added to any loot") if self.loot_list: count = 1 @@ -250,6 +249,8 @@ class LootController: del self.loot_list[key] self.loot_list[count] = loot_item count += 1 + if len(self.loot_list) > 0: + self.bot.send_private_channel_message(f"Theres still loot left to roll, the list has been rebuilt.") else: return "No loot to roll." @@ -267,9 +268,9 @@ class LootController: if item: self.add_item_to_loot(item, item.comment, item_count) - self.bot.send_private_channel_message("Added %s to loot list." % item.name) + self.bot.send_private_channel_message(f"Added {item.name} to loot list.") else: - return "Failed to add item with ID %s." % raid_item_id + return f"Failed to add item with ID {raid_item_id}." @command(command="loot", params=[Const("addraid"), Any("raid"), Any("category")], description="Add all loot from pre-defined raid", access_level="leader", sub_command="modify") @@ -313,7 +314,7 @@ class LootController: self.add_item_to_loot(item, item_count=item_count) - self.bot.send_private_channel_message("%s was added to loot list." % item.name) + self.bot.send_private_channel_message(f"{item.name} was added to loot list.") @command(command="loot", params=[Const("additem", is_optional=True), Any("item"), Int("item_count", is_optional=True)], @@ -397,8 +398,8 @@ class LootController: f"[ {self.text.make_tellcmd('REM', f'loot remitem {i}')} ]\n\n" else: if len(bidders) > 0: - blob += "%s\n\n" % ', '.join(bidders) + blob += f"{', '.join(bidders)}\n\n" else: blob += "None added\n\n" - return ChatBlob("Loot (%d)" % len(self.loot_list), blob) + return ChatBlob(f"Loot ({len(self.loot_list):d})", blob) diff --git a/modules/standard/loot/loot_lists_controller.py b/modules/standard/loot/loot_lists_controller.py index 5cc1f0d..a1d8190 100644 --- a/modules/standard/loot/loot_lists_controller.py +++ b/modules/standard/loot/loot_lists_controller.py @@ -113,7 +113,7 @@ class LootListsController: self.command_alias_service.add_alias("alba", "albtraum") self.command_alias_service.add_alias("lt", "loottables") - self.command_alias_service.add_alias("raids", "loottables") + # self.command_alias_service.add_alias("raids", "loottables") self.command_alias_service.add_alias("ltables", "loottables") self.command_alias_service.add_alias("loots", "loottables") diff --git a/modules/standard/news/worldboss_controller.py b/modules/standard/news/worldboss_controller.py index 2b9674c..910a6c1 100644 --- a/modules/standard/news/worldboss_controller.py +++ b/modules/standard/news/worldboss_controller.py @@ -38,7 +38,7 @@ class WorldBossController: self.setting_service: SettingService = registry.get_instance("setting_service") def pre_start(self): - self.setting_service.register_new(self.module_name, 'timer_spam', True, BooleanSettingType(), + self.setting_service.register(self.module_name, 'timer_spam', True, BooleanSettingType(), "should timers be spammed") @event(WebsocketRelayController.WS_RELAY, "save most current timers") diff --git a/modules/standard/raid/leader_controller.py b/modules/standard/raid/leader_controller.py index 832721c..b36b85e 100644 --- a/modules/standard/raid/leader_controller.py +++ b/modules/standard/raid/leader_controller.py @@ -34,9 +34,9 @@ class LeaderController: def pre_start(self): self.command_alias_service.add_alias("repeat", "leader echo") - self.setting_service.register_new(self.module_name, "leader_echo_color", "#00FF00", ColorSettingType(), + self.setting_service.register(self.module_name, "leader_echo_color", "#00FF00", ColorSettingType(), "Color with which the leader's messages will be echoed with") - self.setting_service.register_new(self.module_name, "leader_auto_echo", True, BooleanSettingType(), + self.setting_service.register(self.module_name, "leader_auto_echo", True, BooleanSettingType(), "If turned on, when someone assume the leader role, " "leader echo will automatically be activated for said person") diff --git a/modules/standard/track/track_controller.py b/modules/standard/track/track_controller.py index 886e8bb..04a74f2 100644 --- a/modules/standard/track/track_controller.py +++ b/modules/standard/track/track_controller.py @@ -47,12 +47,12 @@ class TrackController(BaseModule): def pre_start(self): self.event_service.register_event_type("track_logon") self.event_service.register_event_type("track_logoff") - self.setting_service.register_new(self.module_name, "track_on_color", "#FF0000", ColorSettingType(), + self.setting_service.register(self.module_name, "track_on_color", "#FF0000", ColorSettingType(), "Color for Track logon") - self.setting_service.register_new(self.module_name, "track_off_color", "#00FF00", ColorSettingType(), + self.setting_service.register(self.module_name, "track_off_color", "#00FF00", ColorSettingType(), "Color for Track logoff") - self.setting_service.register_new(self.module_name, "autotrack", 'none', - TextSettingType(['omni', 'clan', 'neutral', "none"]), + self.setting_service.register(self.module_name, "autotrack", 'none', + TextSettingType(['omni', 'clan', 'neutral', "none"]), "Autotrack all players initiating tower attacks towards this faction:") self.db.exec( "CREATE TABLE IF NOT EXISTS track("