Fix for hidden settings & tower messages

This commit is contained in:
2021-09-04 18:07:12 +02:00
parent 3c8eb7bb70
commit 10df6c3d26
8 changed files with 66 additions and 29 deletions
+12 -1
View File
@@ -7,11 +7,13 @@ from requests import Session
from conf.config import BotConfig
from core.aochat.BaseModule import BaseModule
from core.db import DB
from core.decorators import instance, timerevent, event
from core.decorators import instance, timerevent, event, setting
from core.job_scheduler import JobScheduler
from core.setting_types import BooleanSettingType
from core.text import Text
from core.igncore import Tyrbot
from core.util import Util
from modules.core.accounting.services.account_service import AccountService
from modules.raidbot.tower.tower_controller import TowerController
from modules.standard.helpbot.playfield_controller import PlayfieldController
@@ -30,6 +32,7 @@ class TowerService(BaseModule):
self.text: Text = registry.get_instance("text")
self.playfield_controller: PlayfieldController = registry.get_instance("playfield_controller")
self.job_scheduler: JobScheduler = registry.get_instance("job_scheduler")
self.account_service: AccountService = registry.get_instance("account_service")
mod = __import__(f'conf.{sys.argv[1]}', fromlist=['BotConfig'])
config: BotConfig = getattr(mod, 'BotConfig')
@@ -61,10 +64,18 @@ class TowerService(BaseModule):
if event_data.attacker.get("org_id", None):
self.attack_hot.append({'org_name': event_data.attacker.org_name, 'hot': time.time() + 60 * 60})
@setting(name="tower_notify_type", value=False, description="Only notify when our orgs are involved")
def tower_notify_type(self) -> BooleanSettingType:
return BooleanSettingType()
@event(event_type=TowerController.TOWER_VICTORY_EVENT, description="Send NW warnings")
def victory(self, _, event_data):
t = int(time.time())
if event_data.type == "attack":
if self.tower_notify_type().get_value():
if not (event_data.winner.get("org_name", None) in self.account_service.get_org_names()
or event_data.loser.org_name in self.account_service.get_org_names()):
return
row = self.get_last_attack(event_data.winner.faction, event_data.winner.org_name, event_data.loser.faction,
event_data.loser.org_name, event_data.location.playfield.id, t)
self.send_nw_warn(0,