import re from core.aochat.client_packets import PrivateMessage from core.command_param_types import Const from core.decorators import instance, setting, command, timerevent, event from core.logger import Logger from core.lookup.character_service import CharacterService from core.message_hub_service import MessageHubService from core.public_channel_service import PublicChannelService from core.setting_service import SettingService from core.setting_types import TextSettingType from core.text import Text from core.igncore import Tyrbot from core.util import Util @instance() class RaidSpyController: planned = "" def __init__(self): self.logger = Logger(__name__) def inject(self, registry): self.bot: Tyrbot = registry.get_instance("bot") self.setting_service: SettingService = registry.get_instance("setting_service") self.character_service: CharacterService = registry.get_instance("character_service") self.public_channel_service: PublicChannelService = registry.get_instance("public_channel_service") self.util: Util = registry.get_instance("util") self.text: Text = registry.get_instance("text") self.relay_hub_service: MessageHubService = registry.get_instance("message_hub_service") @setting(name="raidbot-name", value="", description="The Raidbot") def raidbot(self): return TextSettingType(allow_empty=True) @event(event_type=Tyrbot.PRIVATE_MSG_EVENT, description="update raidlist", is_enabled=False) def handle_raidbot_msg(self, _, textblob: PrivateMessage): if self.character_service.get_char_name(textblob.char_id) != self.setting_service.get_value("raidbot-name"): return tag = re.search( r"Planned Raids last updated \w+ \d+\w+, \d+ \d+:\d+:: " r".+", textblob.message, re.DOTALL) if tag: textblob.message = tag[1] with open("data/latest_raids.txt", "w") as f: f.write(textblob.message) self.planned = textblob.message self.bot.send_org_message("Die Raids wurden geupdatet: " + self.text.format_page("Die Raids der Woche", self.planned), fire_outgoing_event=False) self.bot.send_private_channel_message("Die Raids wurden geupdatet: " + self.text.format_page("Die Raids der Woche", self.planned), fire_outgoing_event=False) @event(event_type="connect", description="update raidlist", is_enabled=False) def handle_log_raidlog(self, _, _1): try: with open("data/latest_raids.txt", "r") as f: self.planned = f.read() except FileNotFoundError: self.planned = "