Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- upvote.py - Willie Vote Module
- """
- import os, re, time, pickle
- from datetime import datetime
- from willie import module, web
- from willie.module import commands
- def filename(self):
- name = 'karma.db'
- return os.path.join(self.config.dotdir, name)
- def load_database(name):
- try:
- return pickle.load( open( name, "rb" ) )
- except:
- return {}
- def dump_database(name, data):
- try:
- pickle.dump( data, open( name, "wb" ) )
- except Exception as e:
- print(str(e))
- def setup(bot):
- bot.fn = filename(bot)
- try:
- bot.udb = load_database(bot.fn)
- except:
- bot.udb = {}
- bot.last_vote = {}
- @module.commands("karma")
- def karma(bot, trigger):
- if not trigger.sender.startswith("#"):
- return
- tokens = trigger.group().split()
- if len(tokens) > 1:
- if bot.udb.has_key(tokens[1]):
- bot.reply("{0} has {1} karma".format(tokens[1], bot.udb[tokens[1]]))
- else:
- bot.reply("{0} has 0 karma".format(tokens[1]))
- else:
- if bot.udb.has_key(trigger.nick):
- bot.reply("You have {0} karma".format(bot.udb[trigger.nick]))
- else:
- bot.reply("You have 0 karma")
- @module.commands("upvote")
- @module.commands("downvote")
- def upvote(bot, trigger):
- if not trigger.sender.startswith("#"):
- return
- tokens = trigger.group().split()
- if len(tokens) > 1:
- if trigger.nick.lower() == tokens[1].lower():
- return bot.say("Dork.")
- target = tokens[1]
- print(bot.privileges[trigger.sender])
- print(target)
- if bot.privileges[trigger.sender].has_key(target):
- if bot.last_vote.has_key(trigger.nick) and not time.time() - bot.last_vote[trigger.nick] >= 3600:
- return bot.say('You can only upvote/downvote once an hour!')
- karma_changed = False
- if 'upvote' in tokens[0].lower():
- if bot.udb.has_key(target):
- bot.udb[target] += 1
- else:
- bot.udb[target] = 1
- karma_changed = True
- elif 'downvote' in tokens[0].lower():
- if bot.udb.has_key(target):
- bot.udb[target] -= 1
- else:
- bot.udb[target] = -1
- karma_changed = True
- bot.last_vote[trigger.nick] = time.time()
- if karma_changed:
- bot.reply("{0} now has {1} karma!".format(tokens[1], bot.udb[tokens[1]]))
- else:
- return bot.reply("That person isn't in this channel.")
- dump_database(bot.fn, bot.udb)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement