Fixed warnings caused by non-existing messagehub channels.

Changed the setting registration, removed the warnings.
Loot roll messages are more obvious now.
Superadmins are meant to stay mostily hidden, but are being exposed in !system again.
This commit is contained in:
2021-08-29 17:54:18 +02:00
parent 82d2be8de2
commit 9f1da9a00d
24 changed files with 163 additions and 169 deletions
+1 -1
View File
@@ -42,7 +42,7 @@ class Tyrbot:
self.last_timer_event = 0 self.last_timer_event = 0
self.start_time = int(time.time()) self.start_time = int(time.time())
self.major_version = "IGNCore v2.6" self.major_version = "IGNCore v2.6"
self.minor_version = "2" self.minor_version = "3"
self.incoming_queue = FifoQueue() self.incoming_queue = FifoQueue()
self.mass_message_queue = None self.mass_message_queue = None
self.conns = DictObject() self.conns = DictObject()
+4 -4
View File
@@ -36,10 +36,10 @@ class PublicChannelService(BaseModule):
priority=30) priority=30)
self.event_service.register_event_type(self.ORG_CHANNEL_MESSAGE_EVENT) self.event_service.register_event_type(self.ORG_CHANNEL_MESSAGE_EVENT)
self.event_service.register_event_type(self.ORG_MSG_EVENT) self.event_service.register_event_type(self.ORG_MSG_EVENT)
self.setting_service.register_new('core.system', 'org_id', 0, self.setting_service.register('core.system', 'org_id', 0,
NumberSettingType(), 'OrgID used for roster') NumberSettingType(), 'OrgID used for roster')
self.setting_service.register_new('core.system', 'org_name', "", self.setting_service.register('core.system', 'org_name', "",
TextSettingType(allow_empty=True), 'OrgName used for roster') TextSettingType(allow_empty=True), 'OrgName used for roster')
def start(self): def start(self):
org_id_setting = self.setting_service.get("org_id") org_id_setting = self.setting_service.get("org_id")
+4 -9
View File
@@ -25,14 +25,9 @@ class SettingService:
for name, method in get_attrs(inst).items(): for name, method in get_attrs(inst).items():
if hasattr(method, "setting"): if hasattr(method, "setting"):
setting_name, value, description, extended_description, obj = getattr(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): def register(self, module, name, value, setting, description, 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):
"""Call during start""" """Call during start"""
name = name.lower() name = name.lower()
module = module.lower() module = module.lower()
@@ -44,10 +39,10 @@ class SettingService:
setting.set_extended_description(extended_description) setting.set_extended_description(extended_description)
if not 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: 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]) row = self.db.query_single("SELECT name, value, description FROM setting WHERE name = ?", [name])
+2 -2
View File
@@ -33,8 +33,8 @@ class TranslationService:
self.event_service.register_event_type("reload_translation") self.event_service.register_event_type("reload_translation")
def start(self): def start(self):
self.setting_service.register_new("core.system", self.LANGUAGE_SETTING, "en_US", self.setting_service.register("core.system", self.LANGUAGE_SETTING, "en_US",
TextSettingType(self.lang_codes), "Language of the Bot") TextSettingType(self.lang_codes), "Language of the Bot")
self.language = self.setting_service.get_value(self.LANGUAGE_SETTING) self.language = self.setting_service.get_value(self.LANGUAGE_SETTING)
self.register_translation("global", self.load_global_msg) self.register_translation("global", self.load_global_msg)
@@ -118,18 +118,18 @@ class AccountService:
self.event_service.register_event_type(self.MAIN_CHANGED_EVENT_TYPE) 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_LOGON)
self.event_service.register_event_type(self.MEMBER_LOGOFF) 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") "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") "alts require admin verification")
# Default preferences # 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") "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") "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") "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") "Default Value for the news spam (News on logon) preference")
v = self.setting_service.get_value("pref_raidspam") v = self.setting_service.get_value("pref_raidspam")
+12 -12
View File
@@ -13,27 +13,27 @@ class ColorController(BaseModule):
# noinspection LongLine # noinspection LongLine
def start(self): 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") "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") "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") "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") "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") "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") "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") "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") "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") "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") "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") "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") "Default blob content color")
+2 -2
View File
@@ -107,7 +107,7 @@ class DiscordController:
self.setting_service: SettingService = registry.get_instance("setting_service") self.setting_service: SettingService = registry.get_instance("setting_service")
def pre_start(self): 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") "Enter your Discord token her")
def get_name(self, discord_id): def get_name(self, discord_id):
@@ -589,7 +589,7 @@ class DiscordController:
else: else:
response = f"{html.escape(msg.author.nick if msg.author.nick else msg.author.name, False)}: " \ 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)}" 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) self.relay_hub_service.send_message("public_relay", [msg.author.nick, msg.author], response, response)
if self.is_command(msg.content): if self.is_command(msg.content):
+5 -5
View File
@@ -48,11 +48,11 @@ class RIAdminController:
"raid_instance_id INT NOT NULL, " "raid_instance_id INT NOT NULL, "
"char_id INT PRIMARY KEY, " "char_id INT PRIMARY KEY, "
"is_leader TINYINT NOT NULL) ENGINE MEMORY") "is_leader TINYINT NOT NULL) ENGINE MEMORY")
self.setting_service.register_new(self.module_name, "riadmin_network", self.setting_service.register(self.module_name, "riadmin_network",
"[905848882, 272234, 1923370, 313107, 1217210821, 1134420908]", "[905848882, 272234, 1923370, 313107, 1217210821, 1134420908]",
TextSettingType(), "Allowed bots (charID's)", TextSettingType(), "Allowed bots (charID's)",
extended_description="This setting is *NOT* synchronized across the network;" extended_description="This setting is *NOT* synchronized across the network;"
" this needs to be done manually!") " this needs to be done manually!")
@event(event_type="buddy_logoff", description="Track raiders") @event(event_type="buddy_logoff", description="Track raiders")
def raider_logoff(self, _, event_data): def raider_logoff(self, _, event_data):
+7 -10
View File
@@ -14,19 +14,16 @@ class MessageHubController:
self.message_hub_service = registry.get_instance("message_hub_service") self.message_hub_service = registry.get_instance("message_hub_service")
self.getresp = partial(registry.get_instance("translation_service").get_response, "module/system") self.getresp = partial(registry.get_instance("translation_service").get_response, "module/system")
def start(self):
pass
@command(command="messagehub", params=[], access_level="admin", @command(command="messagehub", params=[], access_level="admin",
description="Show the current message hub subscriptions") description="Show the current message hub subscriptions")
def messagehub_cmd(self, _): def messagehub_cmd(self, _):
blob = self.getresp("messagehub_info") + "\n" blob = self.getresp("messagehub_info") + "\n"
subscriptions = self.message_hub_service.hub subscriptions = self.message_hub_service.hub
for destination, obj in subscriptions.items(): for destination, obj in subscriptions.items():
edit_subs_link = self.text.make_tellcmd(destination, "messagehub edit %s" % destination) edit_subs_link = self.text.make_tellcmd(destination, f"messagehub edit {destination}")
blob += "\n%s\n" % edit_subs_link blob += f"\n{edit_subs_link}\n"
for source in obj.sources: for source in obj.sources:
blob += "%s\n" % source blob += f"{source}\n"
return ChatBlob(self.getresp("messagehub_title", {"count": len(subscriptions)}), blob) return ChatBlob(self.getresp("messagehub_title", {"count": len(subscriptions)}), blob)
@@ -43,13 +40,13 @@ class MessageHubController:
if source in obj.invalid_sources: if source in obj.invalid_sources:
continue continue
sub_link = self.text.make_tellcmd("Subscribe", "messagehub subscribe %s %s" % (destination, source)) sub_link = self.text.make_tellcmd("Subscribe", f"messagehub subscribe {destination} {source}")
unsub_link = self.text.make_tellcmd("Unsubscribe", "messagehub unsubscribe %s %s" % (destination, source)) unsub_link = self.text.make_tellcmd("Unsubscribe", f"messagehub unsubscribe {destination} {source}")
status = "" status = ""
if source in obj.sources: if source in obj.sources:
count += 1 count += 1
status = "<green>%s</green>" % self.getresp("subscribed") status = f"<green>{self.getresp('subscribed')}</green>"
blob += "%s [%s] [%s] %s\n\n" % (source, sub_link, unsub_link, status) blob += f"{source} [{sub_link}] [{unsub_link}] {status}\n\n"
return ChatBlob( return ChatBlob(
self.getresp("messagehub_edit_title", {"destination": destination.capitalize(), "count": count}), blob) self.getresp("messagehub_edit_title", {"destination": destination.capitalize(), "count": count}), blob)
+17 -17
View File
@@ -34,24 +34,24 @@ class SystemController:
def start(self): def start(self):
self.ts.register_translation("module/system", self.load_system_msg) self.ts.register_translation("module/system", self.load_system_msg)
self.setting_service.register_new(self.module_name, "expected_shutdown", True, BooleanSettingType(), 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") "Helps bot to determine if last shutdown was expected or due to a problem")
self.setting_service.register_new("core.system", "symbol", "!", self.setting_service.register(self.module_name, "symbol", "!",
TextSettingType(["!", "#", "*", "@", "$", "+", "-"]), TextSettingType(["!", "#", "*", "@", "$", "+", "-"]),
"Symbol for executing bot commands") "Symbol for executing bot commands")
self.setting_service.register_new("core.system", "org_channel_max_page_length", 7500, self.setting_service.register(self.module_name, "org_channel_max_page_length", 7500,
NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]), NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]),
"Maximum size of blobs in org channel") "Maximum size of blobs in org channel")
self.setting_service.register_new("core.system", "private_message_max_page_length", 7500, self.setting_service.register(self.module_name, "private_message_max_page_length", 7500,
NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]), NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]),
"Maximum size of blobs in private messages") "Maximum size of blobs in private messages")
self.setting_service.register_new("core.system", "private_channel_max_page_length", 7500, self.setting_service.register(self.module_name, "private_channel_max_page_length", 7500,
NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]), NumberSettingType([4500, 6000, 7500, 9000, 10500, 12000]),
"Maximum size of blobs in private channel") "Maximum size of blobs in private channel")
self.setting_service.register_new("core.system", "accept_commands_from_slave_bots", True, BooleanSettingType(), 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 " "Accept and respond to commands sent to slave bots (only applies if you have "
"added slave bots in the config)") "added slave bots in the config)")
def load_system_msg(self): def load_system_msg(self):
with open("modules/core/system/system.msg", mode="r", encoding="utf-8") as f: with open("modules/core/system/system.msg", mode="r", encoding="utf-8") as f:
+6 -5
View File
@@ -9,6 +9,7 @@ import psutil
from core.chat_blob import ChatBlob from core.chat_blob import ChatBlob
from core.command_param_types import Any, Character from core.command_param_types import Any, Character
from core.decorators import instance, command from core.decorators import instance, command
from core.lookup.character_service import CharacterService
from core.util import Util from core.util import Util
@@ -23,6 +24,7 @@ class UtilController:
self.access_service = registry.get_instance("access_service") self.access_service = registry.get_instance("access_service")
self.event_service = registry.get_instance("event_service") self.event_service = registry.get_instance("event_service")
self.public_channel_service = registry.get_instance("public_channel_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 self.getresp = registry.get_instance("translation_service").get_response
@command(command="checkaccess", params=[Character("character")], access_level="moderator", @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" 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(): for channel_id, name in self.public_channel_service.get_all_public_channels().items():
pub_channels += "%s - <highlight>%d</highlight>\n" % (name, channel_id) pub_channels += f"{name} - <highlight>{channel_id:d}</highlight>\n"
for event_type in self.event_service.get_event_types(): 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(): 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", { blob = self.getresp("module/system", "status_blob", {
"bot_ver": f"{self.bot.major_version}.{self.bot.minor_version}", "bot_ver": f"{self.bot.major_version}.{self.bot.minor_version}",
"os_ver": platform.system() + " " + platform.release(), "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 " "db_type": self.db.type if not self.db.MARIADB else f"{self.db.MARIADB} with "
f"{self.db.pool_size} active connections", f"{self.db.pool_size} active connections",
"mem_usage": self.util.format_number(psutil.Process(os.getpid()).memory_info().rss / 1024), "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_used": self.buddy_service.get_buddy_list_size(),
"bl_size": self.buddy_service.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), "uptime": self.util.time_to_readable(int(time.time()) - self.bot.start_time, max_levels=None),
@@ -36,21 +36,21 @@ class DarkController:
self.message_hub_service.register_message_source(self.MESSAGE_SOURCE) self.message_hub_service.register_message_source(self.MESSAGE_SOURCE)
def start(self): 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?") "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?") "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?") "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?") "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?") "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?") "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?") "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?") "Is the Event channel visible?")
def handle_private_channel_invite(self, conn: Conn, packet: server_packets.PrivateChannelInvited): def handle_private_channel_invite(self, conn: Conn, packet: server_packets.PrivateChannelInvited):
@@ -30,14 +30,14 @@ class AllianceRelayController:
self.message_hub_service.register_message_source(self.MESSAGE_SOURCE) self.message_hub_service.register_message_source(self.MESSAGE_SOURCE)
def start(self): def start(self):
self.setting_service.register_new(self.module_name, "arelaybot", "", self.setting_service.register(self.module_name, "arelaybot", "",
TextSettingType(allow_empty=True), "Bot for alliance relay") TextSettingType(allow_empty=True), "Bot for alliance relay")
self.setting_service.register_new(self.module_name, "arelay_enabled", False, self.setting_service.register(self.module_name, "arelay_enabled", False,
BooleanSettingType(), "Enable the alliance relay") BooleanSettingType(), "Enable the alliance relay")
self.setting_service.register_new(self.module_name, "arelay_color", "#C3C3C3", self.setting_service.register(self.module_name, "arelay_color", "#C3C3C3",
ColorSettingType(), ColorSettingType(),
"Color of messages from relay") "Color of messages from relay")
self.message_hub_service.register_message_destination(self.MESSAGE_SOURCE, self.handle_relay_hub_message, [], self.message_hub_service.register_message_destination(self.MESSAGE_SOURCE, self.handle_relay_hub_message, [],
+21 -22
View File
@@ -5,7 +5,7 @@ from core.aochat.client_packets import PrivateChannelLeave
from core.chat_blob import ChatBlob from core.chat_blob import ChatBlob
from core.command_param_types import Const, Character, Options, Any from core.command_param_types import Const, Character, Options, Any
from core.conn import Conn 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.logger import Logger
from core.lookup.character_service import CharacterService from core.lookup.character_service import CharacterService
from core.setting_service import SettingService from core.setting_service import SettingService
@@ -35,17 +35,6 @@ class AllianceRelay:
self.message_hub_service.register_message_source(self.MESSAGE_SOURCE) self.message_hub_service.register_message_source(self.MESSAGE_SOURCE)
def start(self): 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.message_hub_service.register_message_destination(self.MESSAGE_SOURCE,
self.handle_relay_hub_message, self.handle_relay_hub_message,
["org_channel"], ["org_channel"],
@@ -381,35 +370,45 @@ class AllianceRelay:
packet = client_packets.PrivateChannelMessage(int(alliance), self.text.format_message(msg, False), "\0") packet = client_packets.PrivateChannelMessage(int(alliance), self.text.format_message(msg, False), "\0")
self.bot.conns["main"].send_packet(packet) self.bot.conns["main"].send_packet(packet)
@setting(name="relay_symbols", value={"default": "-"}, description="Symbol for external relay")
def relay_symbols(self) -> DictionarySettingType: 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: 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: 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: 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: 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: 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: 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: 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: 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: def relay_command(self) -> DictionarySettingType:
return self.setting_service.get("relay_command") return DictionarySettingType()
def check_color(self, msg: str): def check_color(self, msg: str):
if not msg.startswith('#'): if not msg.startswith('#'):
+2 -3
View File
@@ -41,11 +41,10 @@ class OrgChannelController:
def start(self): def start(self):
self.message_hub_service.register_message_destination( self.message_hub_service.register_message_destination(
self.MESSAGE_SOURCE, self.handle_incoming_relay_message, self.MESSAGE_SOURCE, self.handle_incoming_relay_message,
["private_channel", "discord", "websocket_relay", "tell_relay", "broadcast", ["private_channel", "websocket_relay", "cloak_reminder", "wave_counter", "shutdown_notice"],
"raffle", "cloak_reminder", "wave_counter", "shutdown_notice", "raid"],
[self.MESSAGE_SOURCE]) [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") "Should the prefix [org] be displayed in relayed messages")
def handle_incoming_relay_message(self, ctx): def handle_incoming_relay_message(self, ctx):
+1 -1
View File
@@ -84,7 +84,7 @@ class TowerController:
victory.location.playfield = self.playfield_controller.get_playfield_by_name(playfield_name) or \ victory.location.playfield = self.playfield_controller.get_playfield_by_name(playfield_name) or \
DictObject() DictObject()
victory.location.playfield.long_name = playfield_name victory.location.playfield.long_name = playfield_name
print(victory) # print(victory)
self.event_service.fire_event(self.TOWER_VICTORY_EVENT, victory) self.event_service.fire_event(self.TOWER_VICTORY_EVENT, victory)
elif packet.channel_id == self.ALL_TOWERS_ID: elif packet.channel_id == self.ALL_TOWERS_ID:
attack = self.get_attack_event(packet) attack = self.get_attack_event(packet)
@@ -12,6 +12,7 @@ from core.logger import Logger
from core.lookup.character_service import CharacterService from core.lookup.character_service import CharacterService
from core.lookup.pork_service import PorkService from core.lookup.pork_service import PorkService
from core.message_hub_service import MessageHubService from core.message_hub_service import MessageHubService
from core.registry import Registry
from core.setting_service import SettingService from core.setting_service import SettingService
from core.setting_types import NumberSettingType from core.setting_types import NumberSettingType
from core.text import Text 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("access_denied_logger")
self.relay_hub_service.register_message_source("member_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"], self.relay_hub_service.register_message_destination("tell_log", self.handle_logging_tell, ["tell_logger"],
["tell_log"]) ["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") "ChannelID for the Tell Log")
self.relay_hub_service.register_message_destination("access_denied_log", self.handle_logging_denied, self.relay_hub_service.register_message_destination("access_denied_log", self.handle_logging_denied,
["access_denied_logger"], ["access_denied_log"]) ["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") "ChannelID for the Access Denied Log")
self.relay_hub_service.register_message_destination("relay_log", self.handle_logging_relay, self.relay_hub_service.register_message_destination("relay_log", self.handle_logging_relay,
["alliance", "public_relay"], ["relay_log"]) ["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") "ChannelID for the Relay Log")
self.relay_hub_service.register_message_destination("public_relay", self.handle_public_relay, ["alliance"], self.relay_hub_service.register_message_destination("public_relay", self.handle_public_relay, ["alliance"],
["public_relay"]) ["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") "ChannelID for the Public Relay Channel")
self.relay_hub_service.register_message_destination("system", self.handle_logging_system, ["system_logger"], self.relay_hub_service.register_message_destination("system", self.handle_logging_system, ["system_logger"],
["system"]) ["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") "ChannelID for the System Channel")
self.relay_hub_service.register_message_destination("dc_member_log", self.handle_logging_members, self.relay_hub_service.register_message_destination("dc_member_log", self.handle_logging_members,
["member_logger"], ["dc_member_log"]) ["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") "ChannelID for the Member Log")
self.relay_hub_service.register_message_destination("dc_darknet_log", self.handle_darknet_log, ["darknet"], 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_new(self.module_name, "dc_darknet_log", 0, NumberSettingType(allow_empty=True), [""])
"ChannelID for the Darknet Log") 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): def handle_public_relay(self, ctx):
if self.setting_service.get_value("dc_relay_public") != "0": if self.setting_service.get_value("dc_relay_public") != "0":
+17 -18
View File
@@ -43,35 +43,34 @@ class RelayController:
def start(self): def start(self):
self.message_hub_service.register_message_destination(self.MESSAGE_SOURCE, self.message_hub_service.register_message_destination(self.MESSAGE_SOURCE,
self.handle_message_from_hub, self.handle_message_from_hub,
["private_channel", "org_channel", ["private_channel", "org_channel"],
"discord", "tell_relay"],
[self.MESSAGE_SOURCE]) [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") "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", "ws://localhost/subscribe/relay",
TextSettingType(["ws://localhost/subscribe/relay"]), TextSettingType(["ws://localhost/subscribe/relay"]),
"The address of the websocket relay server", "The address of the websocket relay server",
"All bots on the relay must connect to the same server and channel. " "All bots on the relay must connect to the same server and channel. "
"If using the public relay server, use a unique channel name.") "If using the public relay server, use a unique channel name.")
self.setting_service.register_new(self.module_name, "websocket_relay_channel_color", "#FFFF00", self.setting_service.register(self.module_name, "websocket_relay_channel_color", "#FFFF00",
ColorSettingType(), "Color of the channel in websocket relay messages") ColorSettingType(), "Color of the channel in websocket relay messages")
self.setting_service.register_new(self.module_name, "websocket_relay_message_color", "#FCA712", self.setting_service.register(self.module_name, "websocket_relay_message_color", "#FCA712",
ColorSettingType(), ColorSettingType(),
"Color of the message content in websocket relay messages") "Color of the message content in websocket relay messages")
self.setting_service.register_new(self.module_name, "websocket_relay_sender_color", "#00DE42", self.setting_service.register(self.module_name, "websocket_relay_sender_color", "#00DE42",
ColorSettingType(), "Color of the sender in websocket relay messages") ColorSettingType(), "Color of the sender in websocket relay messages")
self.setting_service.register_new(self.module_name, "websocket_encryption_key", "", self.setting_service.register(self.module_name, "websocket_encryption_key", "",
HiddenSettingType(allow_empty=True), HiddenSettingType(allow_empty=True),
"An encryption key used to encrypt messages over a public websocket relay") "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)") "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", "||", self.setting_service.register(self.module_name, "ws_msg_relay_prefix", "||",
TextSettingType(["!", "#", "*", "@", "$", "+", "-"]), TextSettingType(["!", "#", "*", "@", "$", "+", "-"]),
"Prefix for Messages which should get relayed") "Prefix for Messages which should get relayed")
self.setting_service.register_new(self.module_name, "ws_relay_type", "with_symbol", self.setting_service.register(self.module_name, "ws_relay_type", "with_symbol",
TextSettingType(["with_symbol", "unless_symbol", "always"]), TextSettingType(["with_symbol", "unless_symbol", "always"]),
"Relay Messages", ) "Relay Messages", )
self.initialize_encrypter(self.setting_service.get("websocket_encryption_key").get_value()) self.initialize_encrypter(self.setting_service.get("websocket_encryption_key").get_value())
+2 -2
View File
@@ -36,10 +36,10 @@ class WebsocketRelayController(BaseModule):
def pre_start(self): def pre_start(self):
self.event_service.register_event_type(self.WS_RELAY) 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', 'relay_address',
'ws://localhost:25500', 'ws://localhost:25500',
TextSettingType([], allow_empty=True), TextSettingType([], allow_empty=True),
"relay for timers, tower info, ...") "relay for timers, tower info, ...")
@timerevent(budatime="1s", description="Relay messages from Data relay to the internal message hub", @timerevent(budatime="1s", description="Relay messages from Data relay to the internal message hub",
+19 -18
View File
@@ -93,7 +93,7 @@ class LootController:
if self.loot_list[item_index]: if self.loot_list[item_index]:
self.last_modify = int(time.time()) self.last_modify = int(time.time())
self.bot.send_private_channel_message( 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: else:
return "Item error." return "Item error."
except KeyError: except KeyError:
@@ -115,7 +115,7 @@ class LootController:
loot_item.count += 1 loot_item.count += 1
self.last_modify = int(time.time()) self.last_modify = int(time.time())
self.bot.send_private_channel_message( 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: else:
return "Item error." return "Item error."
except KeyError: except KeyError:
@@ -137,7 +137,7 @@ class LootController:
loot_item.count = loot_item.count - 1 if loot_item.count > 1 else 1 loot_item.count = loot_item.count - 1 if loot_item.count > 1 else 1
self.last_modify = int(time.time()) self.last_modify = int(time.time())
self.bot.send_private_channel_message( 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: else:
return "Item error." return "Item error."
except KeyError: except KeyError:
@@ -173,12 +173,12 @@ class LootController:
self.last_modify = int(time.time()) self.last_modify = int(time.time())
if old_item is not None: if old_item is not None:
text = "moved from %s to %s." % (old_item.get_item_str(), loot_item.get_item_str()) text = f"moved from {old_item.get_item_str()} to {loot_item.get_item_str()}."
self.bot.send_mass_message(request.sender.char_id, "You have %s" % text) self.bot.send_mass_message(request.sender.char_id, f"You have {text}")
self.bot.send_private_channel_message(request.sender.name + " " + text) self.bot.send_private_channel_message(request.sender.name + " " + text)
else: else:
text = "added to %s." % loot_item.get_item_str() text = f"added to {loot_item.get_item_str()}."
self.bot.send_mass_message(request.sender.char_id, "You have %s" % text) self.bot.send_mass_message(request.sender.char_id, f"You have {text}")
self.bot.send_private_channel_message(request.sender.name + " " + text) self.bot.send_private_channel_message(request.sender.name + " " + text)
except KeyError: except KeyError:
@@ -193,8 +193,8 @@ class LootController:
loot_item.bidders.remove(request.sender.name) loot_item.bidders.remove(request.sender.name)
self.last_modify = int(time.time()) self.last_modify = int(time.time())
text = "removed from %s." % loot_item.get_item_str() text = f"removed from {loot_item.get_item_str()}."
self.bot.send_private_message(request.sender.char_id, "You were %s" % text) self.bot.send_private_message(request.sender.char_id, f"You were {text}")
self.bot.send_private_channel_message(request.sender.name + " was " + text) self.bot.send_private_channel_message(request.sender.name + " was " + text)
else: else:
return "You are not added to any loot." return "You are not added to any loot."
@@ -230,15 +230,14 @@ class LootController:
"loot", "loot",
f"{loot_item.get_item_str()}", f"{loot_item.get_item_str()}",
request.sender.char_id) request.sender.char_id)
blob += "%d. %s\n" % (i, loot_item.get_item_str()) blob += f"{i:d}. {loot_item.get_item_str()}\n"
blob += " | Winners: <red>%s<end>\n\n" % '<end>, <red>'.join(winners) blob += f" | Winners: <red>{'<end>, <red>'.join(winners)}<end>\n\n"
if loot_item.count == 0: if loot_item.count == 0:
remove.append(i) remove.append(i)
for i in remove: for i in remove:
self.loot_list.pop(i) self.loot_list.pop(i)
msg = ChatBlob("Roll results", blob) msg = ChatBlob("Roll results", blob, "\n________________\n\n<red>Time is UP!</red>\n", "\n________________")
msg.page_prefix = "Time is up! "
self.bot.send_private_channel_message(msg if len(blob) > 0 else "No one was added to any loot") self.bot.send_private_channel_message(msg if len(blob) > 0 else "No one was added to any loot")
if self.loot_list: if self.loot_list:
count = 1 count = 1
@@ -250,6 +249,8 @@ class LootController:
del self.loot_list[key] del self.loot_list[key]
self.loot_list[count] = loot_item self.loot_list[count] = loot_item
count += 1 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: else:
return "No loot to roll." return "No loot to roll."
@@ -267,9 +268,9 @@ class LootController:
if item: if item:
self.add_item_to_loot(item, item.comment, item_count) 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: 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")], @command(command="loot", params=[Const("addraid"), Any("raid"), Any("category")],
description="Add all loot from pre-defined raid", access_level="leader", sub_command="modify") 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.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", @command(command="loot",
params=[Const("additem", is_optional=True), Any("item"), Int("item_count", is_optional=True)], 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}')} ]</yellow>\n\n" f"[ {self.text.make_tellcmd('REM', f'loot remitem {i}')} ]</yellow>\n\n"
else: else:
if len(bidders) > 0: if len(bidders) > 0:
blob += "<yellow>%s<end>\n\n" % ', '.join(bidders) blob += f"<yellow>{', '.join(bidders)}<end>\n\n"
else: else:
blob += "<yellow>None added<end>\n\n" blob += "<yellow>None added<end>\n\n"
return ChatBlob("Loot (%d)" % len(self.loot_list), blob) return ChatBlob(f"Loot ({len(self.loot_list):d})", blob)
@@ -113,7 +113,7 @@ class LootListsController:
self.command_alias_service.add_alias("alba", "albtraum") self.command_alias_service.add_alias("alba", "albtraum")
self.command_alias_service.add_alias("lt", "loottables") 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("ltables", "loottables")
self.command_alias_service.add_alias("loots", "loottables") self.command_alias_service.add_alias("loots", "loottables")
@@ -38,7 +38,7 @@ class WorldBossController:
self.setting_service: SettingService = registry.get_instance("setting_service") self.setting_service: SettingService = registry.get_instance("setting_service")
def pre_start(self): 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") "should timers be spammed")
@event(WebsocketRelayController.WS_RELAY, "save most current timers") @event(WebsocketRelayController.WS_RELAY, "save most current timers")
+2 -2
View File
@@ -34,9 +34,9 @@ class LeaderController:
def pre_start(self): def pre_start(self):
self.command_alias_service.add_alias("repeat", "leader echo") 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") "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, " "If turned on, when someone assume the leader role, "
"leader echo will automatically be activated for said person") "leader echo will automatically be activated for said person")
+4 -4
View File
@@ -47,12 +47,12 @@ class TrackController(BaseModule):
def pre_start(self): def pre_start(self):
self.event_service.register_event_type("track_logon") self.event_service.register_event_type("track_logon")
self.event_service.register_event_type("track_logoff") 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") "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") "Color for Track logoff")
self.setting_service.register_new(self.module_name, "autotrack", 'none', self.setting_service.register(self.module_name, "autotrack", 'none',
TextSettingType(['omni', 'clan', 'neutral', "none"]), TextSettingType(['omni', 'clan', 'neutral', "none"]),
"Autotrack all players initiating tower attacks towards this faction:") "Autotrack all players initiating tower attacks towards this faction:")
self.db.exec( self.db.exec(
"CREATE TABLE IF NOT EXISTS track(" "CREATE TABLE IF NOT EXISTS track("