code: def handle(send, msg, args):
      
      session = args['db']
      matches = re.findall(r"\b(?<!-)(%s{2,16})(\+\+|--)" % args['config']['core']['nickregex'], msg)
      if not matches:
          return
      if args['type'] == 'privmsg':
          send('Hey, no points in private messages!')
          return
      for match in matches:
          # limit to 5 score changes per minute
          if args['abuse'](args['nick'], 5, 'scores'):
              return
          name, direction = match[0].lower(), match[1]
          if direction == "++":
              score = 1
              if name == args['nick'].lower():
                  send("%s: No self promotion! You lose 10 points." % args['nick'])
                  score = -10
          else:
              score = -1
          row = session.query(Scores).filter(Scores.nick == name).first()
          if row is None:
              session.add(Scores(score=score, nick=name))
              session.commit()
          else:
              row.score += score
              session.commit()
docs: Handles scores.
  
      If it's a ++ add one point unless the user is trying to promote
      themselves. Otherwise substract one point.