Trying to gag several successive lines
Posted: Mon Mar 18, 2024 10:46 pm
I've run into an issue in a MUD that has me spammed by unwanted messages. By the time this topic receives an answer the MUD's staff will most likely have solved the issue, but I ask anyway because I find it an interesting technical question.
I have already defined regular expressions for the first and last lines I want to gag but I don't know how to go about it because what happens in between can vary. I tried to devise something with triggers but I didn't find how to make it work, even by looking for inspiration in the channels plugin source code. I've looked into using and OnReceivedText hook but I didn't find a way to prevent the received text from being displayed if I don't want it to. If I may, the documentation about what hooks can do is a bit sketchy. Apparently $hookdata can't be modified or if it can, I have no idea how.
Any pointers about how to do something like that?
EDIT: I also tried combining a trigger that gags everything and an OnReceivedText hook that executes $world->echonlandlog(colorize($hookdata)) but it seems the trigger gags that too. Apparently triggers are executed before hooks? It seems to be confirmed as I also tried to set up a pair of hooks to enable and disable the general gag trigger but the first undesired lines were still displayed.
I have already defined regular expressions for the first and last lines I want to gag but I don't know how to go about it because what happens in between can vary. I tried to devise something with triggers but I didn't find how to make it work, even by looking for inspiration in the channels plugin source code. I've looked into using and OnReceivedText hook but I didn't find a way to prevent the received text from being displayed if I don't want it to. If I may, the documentation about what hooks can do is a bit sketchy. Apparently $hookdata can't be modified or if it can, I have no idea how.
Any pointers about how to do something like that?
EDIT: I also tried combining a trigger that gags everything and an OnReceivedText hook that executes $world->echonlandlog(colorize($hookdata)) but it seems the trigger gags that too. Apparently triggers are executed before hooks? It seems to be confirmed as I also tried to set up a pair of hooks to enable and disable the general gag trigger but the first undesired lines were still displayed.