parent
f9cf18cf3b
commit
cab54b2b90
@ -0,0 +1,102 @@ |
|||||||
|
import brathuhn, datetime, time |
||||||
|
from StringIO import StringIO |
||||||
|
|
||||||
|
from persistent import PersistentContainer |
||||||
|
import config |
||||||
|
pcontainer = PersistentContainer(__name__,config.PCACHE) |
||||||
|
|
||||||
|
if not "vote_pending" in pcontainer: |
||||||
|
pcontainer["vote_pending"] = False |
||||||
|
|
||||||
|
|
||||||
|
def new_vote(args): |
||||||
|
if pcontainer["vote_pending"]: |
||||||
|
brathuhn.sendMsg(brathuhn.ROOM,"There's already a voting going on!",'groupchat') |
||||||
|
return |
||||||
|
|
||||||
|
#args[0] = "!vote", args[1] = new, args[2] = topic, args[3...n] = options |
||||||
|
pcontainer["topic"] = args[2] |
||||||
|
pcontainer["votes"] = dict() |
||||||
|
tmp = dict() |
||||||
|
for i in args[3:]: |
||||||
|
tmp[i] = 0 |
||||||
|
pcontainer["options"] = tmp |
||||||
|
|
||||||
|
pcontainer["vote_pending"] = True |
||||||
|
brathuhn.sendMsg(brathuhn.ROOM,'Hear, hear folks of %s! Thou\'ve been called to a voting on "%s".' % (brathuhn.ROOM, args[2]),'groupchat' ) |
||||||
|
|
||||||
|
def attend_vote( mfrom ,args): |
||||||
|
#args[0] = "!vote", args[1] = attend, args[2] = option |
||||||
|
if not pcontainer["vote_pending"]: |
||||||
|
brathuhn.sendMsg(brathuhn.ROOM,"There is no vote at the moment.",'groupchat') |
||||||
|
return |
||||||
|
if mfrom in pcontainer["votes"]: |
||||||
|
brathuhn.sendMsg(brathuhn.ROOM,"You already voted!",'groupchat') |
||||||
|
return |
||||||
|
|
||||||
|
tmp = pcontainer["options"] |
||||||
|
if not args[2] in tmp: |
||||||
|
brathuhn.sendMsg(brathuhn.ROOM,'I don\'t understand your option!','groupchat') |
||||||
|
return |
||||||
|
tmp[args[2]] += 1 |
||||||
|
pcontainer["options"] = tmp |
||||||
|
|
||||||
|
tmp = pcontainer["votes"] |
||||||
|
tmp[mfrom] = True |
||||||
|
pcontainer["votes"] = tmp |
||||||
|
|
||||||
|
brathuhn.sendMsg(brathuhn.ROOM,'Thank you for your vote!','groupchat') |
||||||
|
|
||||||
|
|
||||||
|
def vote_statistics(): |
||||||
|
if not pcontainer["vote_pending"]: |
||||||
|
brathuhn.sendMsg(brathuhn.ROOM,"There is no vote at the moment.",'groupchat') |
||||||
|
return |
||||||
|
tmp = pcontainer["options"] |
||||||
|
|
||||||
|
brathuhn.sendMsg(brathuhn.ROOM, 'There is a vote on "'+pcontainer["topic"]+'"','groupchat' ) |
||||||
|
brathuhn.sendMsg(brathuhn.ROOM, 'Votes so far:','groupchat' ) |
||||||
|
for k in tmp: |
||||||
|
brathuhn.sendMsg(brathuhn.ROOM,' %s: %d' % (k, tmp[k]),'groupchat' ) |
||||||
|
|
||||||
|
def end(): |
||||||
|
vote_statistics() |
||||||
|
pcontainer["topic"] = None |
||||||
|
pcontainer["options"] = None |
||||||
|
pcontainer["vote_pending"] = False |
||||||
|
|
||||||
|
def usage(args): |
||||||
|
brathuhn.sendMsg(brathuhn.ROOM,"Usage: "+args[0]+" (new topic option1 option2 ... option_n|attend num|show|end)",'groupchat') |
||||||
|
|
||||||
|
def status_logger(mfrom,msg,status): |
||||||
|
if pcontainer["vote_pending"] and status==brathuhn.STATUS_RENAME and mfrom.getResource() in pcontainer["votes"]: |
||||||
|
tmp = pcontainer["votes"] |
||||||
|
tmp[msg.getNick()] = tmp[mfrom.getResource()] |
||||||
|
del tmp[mfrom.getResource()] |
||||||
|
pcontainer["votes"] = tmp |
||||||
|
brathuhn.sendMsg(brathuhn.ROOM,"%s, the vote comissioner is watching you!" % msg.getNick() ,'groupchat' ) |
||||||
|
|
||||||
|
def vote(msg,args): |
||||||
|
if len(args)<2: |
||||||
|
return usage(args) |
||||||
|
if args[1] == "new": |
||||||
|
if len(args)<5: |
||||||
|
return usage(args) |
||||||
|
new_vote(args) |
||||||
|
elif args[1] == "attend": |
||||||
|
if len(args)!=3: |
||||||
|
return usage(args) |
||||||
|
attend_vote( unicode(msg.getFrom().getResource()) ,args) |
||||||
|
elif args[1] == "show": |
||||||
|
if len(args)!=2: |
||||||
|
return usage(args) |
||||||
|
vote_statistics() |
||||||
|
elif args[1] == "end": |
||||||
|
if len(args)!=2: |
||||||
|
return usage(args) |
||||||
|
end() |
||||||
|
else: |
||||||
|
return usage(args) |
||||||
|
|
||||||
|
brathuhn.addCommand("vote","Usage: !vote (new option1 option2 ... option_n|attend num|show|stats)",vote) |
||||||
|
brathuhn.addStatusListener(status_logger) |
||||||
Loading…
Reference in new issue