python - Cannot match regex with re.search on Twisted Framework ircbot -
i'll start "i'm not familiar python". i'm trying change default ircbot script twisted channel, cannot re.match or re.search working.
for example, works:
prompt = ("%s" % self.nickname) prompt1 = ("%s:" % self.nickname) prompt2 = ("%s," % self.nickname) if msg == (prompt1 + " whoareyou?") or msg == (prompt2 + " you?") or msg == (prompt1 + " whoareyou") or msg == (prompt2 + " you"): this 1 well
if msg == (prompt1 + " help") or msg == (prompt2 + " help"): however these 2 conditions not work on bot (but work on local script):
if re.search(r'%s[:,] help' % self.nickname, msg): elif re.search(r'%s[:,] ?are ?you?' % self.nickname, msg): a previous version of script not using re.search can found here
i have found causing problem. twisted included logic handle nickname collision bot. adds ^ @ end of name:
# fun, override method determines how nickname changed on # collisions. default method appends underscore. def altercollidednick(self, nickname): """ generate altered version of nickname caused collision in effort create unused related name subsequent registration. """ return nickname + '^' this causing bots nickname end nickname^, , because used %s add nickname variable part of regex, interpreted ^ modifier.
if re.search(r'%s[:,] help' % self.nickname, msg): to this:
if re.search(r'nickname^[:,] help', msg):
Comments
Post a Comment