diff --git a/plugins/markov.py b/plugins/markov.py index f297ae9..ebb7be5 100644 --- a/plugins/markov.py +++ b/plugins/markov.py @@ -14,6 +14,7 @@ from omnibot.plugin import Plugin log = logging.getLogger(__name__) +ALLCHAIN = "ALL!CHAIN" def chain_inner_default() -> defaultdict[str | None, int]: @@ -115,9 +116,9 @@ class Chain: fp, ) if not retain: - self.clear() + self.clear_cache() - def clear(self): + def clear_cache(self): self.__cache.clear() def __bool__(self) -> bool: @@ -185,8 +186,12 @@ class Markov(Plugin): return self.__chains[channel][who] def add(self, channel: str, who: str, line: str): + if who == self.server_config.nick == who: + return chain = self.get_chain(channel, who) chain.add(line) + allchain = self.get_chain(channel, ALLCHAIN) + allchain.add(line) def handle_command( self, conn: IrcProtocol, channel: str, who: Prefix, parts: Sequence[str] @@ -205,6 +210,11 @@ class Markov(Plugin): message = chain.generate() if message: self.send_to(conn, channel, f"{who.nick}: {message}") + case ["all"]: + chain = self.get_chain(channel, ALLCHAIN) + message = chain.generate() + if message: + self.send_to(conn, channel, f"{who.nick}: {message}") case _: # command not recognized pass