Improves sentence processing for karma
Changes the matching regex to grab arbitrary text between () for giving (or taking away) karma. Still supports single words followed by ++/--, including usernames, and strips "," or ":" characters from the end if a single-word match. ex. (some sentence to give karma to)++ -> "[Karma] some sentence to give karma to now has 1 karma" ex. ngp:++ -> "[Karma] ngp now has 200 karma"
This commit is contained in:
parent
c332ccc1aa
commit
f70e46a198
1 changed files with 14 additions and 14 deletions
|
@ -8,7 +8,7 @@ from src import EventManager, ModuleManager, utils
|
|||
WORD_STOP = [",", ":"]
|
||||
KARMA_DELAY_SECONDS = 3
|
||||
|
||||
REGEX_KARMA = re.compile(r"^(?:(\S+:) )?(.*)(\+{2}|\-{2})$")
|
||||
REGEX_KARMA = re.compile(r'(?:\((.+?)\)|(\S+))(\+\+|--)(\s+|$)')
|
||||
|
||||
@utils.export("channelset", utils.BoolSetting("karma-pattern",
|
||||
"Enable/disable parsing ++/-- karma format"))
|
||||
|
@ -78,16 +78,16 @@ class Module(ModuleManager.BaseModule):
|
|||
@utils.kwarg("pattern", REGEX_KARMA)
|
||||
def channel_message(self, event):
|
||||
pattern = event["target"].get_setting("karma-pattern", False)
|
||||
if pattern:
|
||||
positive = event["match"].group(3)[0] == "+"
|
||||
if not pattern:
|
||||
return
|
||||
positive = event["match"].group(3) == "++" # if match group 3 is ++, add karma
|
||||
|
||||
target = event["match"].group(2).strip().rstrip("".join(WORD_STOP))
|
||||
if event["match"].group(1):
|
||||
if not target:
|
||||
target = event["match"].group(1)[:-1]
|
||||
elif not event["server"].has_user(event["match"].group(1)[:-1]):
|
||||
target = "%s %s" % (event["match"].group(1), target)
|
||||
# There are two possible match groups, an arbitrary length text inside (), or a single word followed by ++/--
|
||||
# group 1 is the former, group 2 is the latter
|
||||
target = event["match"].group(1) if event["match"].group(1) else event["match"].group(2)
|
||||
target = target.strip().rstrip("".join(WORD_STOP)) # Strips "," " " or ":" from target
|
||||
|
||||
# if we have a target...
|
||||
if target:
|
||||
success, message = self._karma(event["server"], event["user"],
|
||||
target, positive)
|
||||
|
|
Loading…
Reference in a new issue