Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. """
  2. upvote.py - Willie Vote Module
  3. """
  4.  
  5. import os, re, time, pickle
  6. from datetime import datetime
  7. from willie import module, web
  8. from willie.module import commands
  9.  
  10.  
  11. def filename(self):
  12. name = 'karma.db'
  13. return os.path.join(self.config.dotdir, name)
  14.  
  15. def load_database(name):
  16. try:
  17. return pickle.load( open( name, "rb" ) )
  18. except:
  19. return {}
  20.  
  21. def dump_database(name, data):
  22. try:
  23. pickle.dump( data, open( name, "wb" ) )
  24. except Exception as e:
  25. print(str(e))
  26.  
  27. def setup(bot):
  28. bot.fn = filename(bot)
  29. try:
  30. bot.udb = load_database(bot.fn)
  31. except:
  32. bot.udb = {}
  33. bot.last_vote = {}
  34.  
  35. @module.commands("karma")
  36. def karma(bot, trigger):
  37. if not trigger.sender.startswith("#"):
  38. return
  39. tokens = trigger.group().split()
  40. if len(tokens) > 1:
  41. if bot.udb.has_key(tokens[1]):
  42. bot.reply("{0} has {1} karma".format(tokens[1], bot.udb[tokens[1]]))
  43. else:
  44. bot.reply("{0} has 0 karma".format(tokens[1]))
  45. else:
  46. if bot.udb.has_key(trigger.nick):
  47. bot.reply("You have {0} karma".format(bot.udb[trigger.nick]))
  48. else:
  49. bot.reply("You have 0 karma")
  50.  
  51. @module.commands("upvote")
  52. @module.commands("downvote")
  53. def upvote(bot, trigger):
  54. if not trigger.sender.startswith("#"):
  55. return
  56. tokens = trigger.group().split()
  57. if len(tokens) > 1:
  58. if trigger.nick.lower() == tokens[1].lower():
  59. return bot.say("Dork.")
  60. target = tokens[1]
  61. print(bot.privileges[trigger.sender])
  62. print(target)
  63. if bot.privileges[trigger.sender].has_key(target):
  64. if bot.last_vote.has_key(trigger.nick) and not time.time() - bot.last_vote[trigger.nick] >= 3600:
  65. return bot.say('You can only upvote/downvote once an hour!')
  66. karma_changed = False
  67. if 'upvote' in tokens[0].lower():
  68. if bot.udb.has_key(target):
  69. bot.udb[target] += 1
  70. else:
  71. bot.udb[target] = 1
  72. karma_changed = True
  73. elif 'downvote' in tokens[0].lower():
  74. if bot.udb.has_key(target):
  75. bot.udb[target] -= 1
  76. else:
  77. bot.udb[target] = -1
  78. karma_changed = True
  79. bot.last_vote[trigger.nick] = time.time()
  80. if karma_changed:
  81. bot.reply("{0} now has {1} karma!".format(tokens[1], bot.udb[tokens[1]]))
  82. else:
  83. return bot.reply("That person isn't in this channel.")
  84. dump_database(bot.fn, bot.udb)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement