From d516c1b08e563aeec5fd497d7eb5c0012048ac80 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Sun, 19 Feb 2023 18:39:36 -0600 Subject: [PATCH] also clean up mentions that weren't cleaned because of the bridge nick --- .../commands/fix_chains_with_nicks_via_bridge.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/markov/management/commands/fix_chains_with_nicks_via_bridge.py b/markov/management/commands/fix_chains_with_nicks_via_bridge.py index 7f602b7..29a9f13 100644 --- a/markov/management/commands/fix_chains_with_nicks_via_bridge.py +++ b/markov/management/commands/fix_chains_with_nicks_via_bridge.py @@ -18,6 +18,17 @@ class Command(BaseCommand): bridge_states = context.states.filter(k1=MarkovState._start1, k2=MarkovState._start2, v__regex=r'<.*>') self._chain_remover(context, bridge_states) + # get states that look like mentions + for target in context.markovtarget_set.all(): + if target.channel.server.additional_addressed_nicks: + all_nicks = '|'.join(target.channel.server.additional_addressed_nicks.split('\n') + + [target.channel.server.nickname]) + else: + all_nicks = target.channel.server.nickname + mention_regex = r'^(({nicks})[:,]|@({nicks}))$'.format(nicks=all_nicks) + mention_states = context.states.filter(k1=MarkovState._start1, k2=MarkovState._start2, + v__regex=mention_regex) + self._chain_remover(context, mention_states) def _chain_remover(self, context, start_states): """Remove a given k from markov states, deleting the found states after rebuilding subsequent states.