Skip to content
Snippets Groups Projects
karma.py 1.31 KiB
Newer Older
Bruce Cowan's avatar
Bruce Cowan committed
from collections import defaultdict

from errbot import BotPlugin, botcmd


class Karma(BotPlugin):
    """Karma service"""

    def activate(self):
        super().activate()

Bruce Cowan's avatar
Bruce Cowan committed
        self.karma = self.get('karma', defaultdict(int))
Bruce Cowan's avatar
Bruce Cowan committed

    def deactivate(self):
        self['karma'] = self.karma
Bruce Cowan's avatar
Bruce Cowan committed

Bruce Cowan's avatar
Bruce Cowan committed
        super().deactivate()
Bruce Cowan's avatar
Bruce Cowan committed

Bruce Cowan's avatar
Bruce Cowan committed
    @botcmd
    def karma_list(self, message, args):
        """Prints a list of karmaed things"""
        if self.karma:
            l = ', '.join(self.karma.keys())
            return "List: '{}'".format(l)
        else:
            return "**Warning**: Nothing in the karma database"

Bruce Cowan's avatar
Bruce Cowan committed
    @botcmd
    def karma_add(self, message, args):
        """Adds karma"""
        if not args:
            return "**Usage**: !karma add <target>"

Bruce Cowan's avatar
Bruce Cowan committed
        self.karma[args] += 1
        return "Karma for '{}' is now {}".format(args, self.karma[args])
Bruce Cowan's avatar
Bruce Cowan committed

    @botcmd
    def karma_remove(self, message, args):
        """Removes karma"""
        if not args:
            return "**Usage**: !karma remove <target>"

Bruce Cowan's avatar
Bruce Cowan committed
        self.karma[args] -= 1
        return "Karma for '{}' is now {}".format(args, self.karma[args])
Bruce Cowan's avatar
Bruce Cowan committed

    @botcmd
    def karma(self, message, args):
        """Gets karma"""
        if not args:
            return "**Usage**: !karma <target>"

        return "Karma for '{}' is {}".format(args, self.karma[args])