From cdc13d1c6cbf52972111a654bc5a1e646889e0ce Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 26 May 2026 08:42:31 +0200 Subject: [PATCH] Add configurable Discord event toggles in params.ini --- config/params.ini | 15 +++++++++++++++ src/config.py | 9 +++++++++ src/messages/messenger.py | 17 +++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/config/params.ini b/config/params.ini index b4c04b8..07fd093 100644 --- a/config/params.ini +++ b/config/params.ini @@ -37,6 +37,21 @@ discord_status_count=20 ; message_api_type: "" disables messaging, "discord" or "generic_api" message_api_type=discord +[discord_events] +; Fine-grained Discord event toggles (1=send, 0=disable) +; status: periodic status + generic bot messages (breaks, shop notifications, etc.) +status=1 +; item_keep: send kept item notifications (loot webhooks/embeds) +item_keep=1 +; death: send death notifications +death=1 +; chicken: send chicken (emergency leave) notifications +chicken=1 +; stash_full: send stash full notifications +stash_full=1 +; gold_full: send gold full notifications +gold_full=1 + ; breaks ; break_length_m: scheduled break duration in minutes (0 = disabled) break_length_m=0 diff --git a/src/config.py b/src/config.py index 5131171..62d5909 100644 --- a/src/config.py +++ b/src/config.py @@ -19,6 +19,7 @@ class Config: # config data general = {} advanced_options = {} + discord_events = {} gamble = {} ui_roi = {} ui_pos = {} @@ -207,6 +208,14 @@ class Config: self.general["bnet_name"] = self._env_override("bnet_name", self.general["bnet_name"]) self.general["bnet_pass"] = self._env_override("bnet_pass", self.general["bnet_pass"]) self.general["char_name"] = self._env_override("char_name", self.general["char_name"]) + self.discord_events = { + "status": bool(int(self._select_optional("discord_events", "status", "1"))), + "item_keep": bool(int(self._select_optional("discord_events", "item_keep", "1"))), + "death": bool(int(self._select_optional("discord_events", "death", "1"))), + "chicken": bool(int(self._select_optional("discord_events", "chicken", "1"))), + "stash_full": bool(int(self._select_optional("discord_events", "stash_full", "1"))), + "gold_full": bool(int(self._select_optional("discord_events", "gold_full", "1"))), + } self.stealth = { "wait_jitter_min": float(self._select_optional("stealth", "wait_jitter_min", "0.85")), diff --git a/src/messages/messenger.py b/src/messages/messenger.py index 5067589..2ff506e 100644 --- a/src/messages/messenger.py +++ b/src/messages/messenger.py @@ -16,23 +16,40 @@ class Messenger: self._message_api = None self.enabled = Config().general["message_api_type"] and Config().general["custom_message_hook"] + def _event_enabled(self, event_key: str) -> bool: + # Event filtering currently applies to Discord event stream controls. + if Config().general["message_api_type"] != "discord": + return True + return bool(Config().discord_events.get(event_key, True)) def send_item(self, item: str, image: np.ndarray, location: str, ocr_text: str = '', bnip_keep_expression: str = '', item_props = {}): + if not self._event_enabled("item_keep"): + return self._message_api.send_item(item, image, location, ocr_text, bnip_keep_expression, item_props) def send_death(self, location: str, image_path: str = None): + if not self._event_enabled("death"): + return self._message_api.send_death(location, image_path) def send_chicken(self, location: str, image_path: str = None): + if not self._event_enabled("chicken"): + return self._message_api.send_chicken(location, image_path) def send_stash(self): + if not self._event_enabled("stash_full"): + return self._message_api.send_stash() def send_gold(self): + if not self._event_enabled("gold_full"): + return self._message_api.send_gold() def send_message(self, msg: str): + if not self._event_enabled("status"): + return self._message_api.send_message(msg) if __name__ == "__main__":