Ejemplo n.º 1
0
def receivedDonation(context, **kwargs):
	bot = kwargs["bot"]
	meat = kwargs["meat"]
	items = kwargs["items"]
	message = kwargs["kmail"]
	state = bot.states["job"]
	
	# Get the full information about the current user.
	currentUser = state["currentUser"]
	
	# Update the user's rating.
	if "updatedUserRatingForDonation" not in state:
		db = MySQLDatabaseManager.getDatabase("system")
		c = db.cursor()
		
		newRating = currentUser["user_rating"] + meat
		c = db.cursor()
		setUserRatingTo(newRating, currentUser["user_id"], c)
		c.close()
		db.commit()
		
		state["updatedUserRatingForDonation"] = 1
		state["newUserRating"] = newRating
		bot.writeState("job")
	else:
		newRating = state["newUserRating"]
	
	# Send confirmation to the user.
	if "sentDonationThankYou" not in state:
		txt = "Thank you for the kind donation! Your user rating has increased by %s points. Your new user rating is %s." \
			% (NumberUtils.formatNumberWithCommas(meat), NumberUtils.formatNumberWithCommas(newRating))
		bot.quoteKmail(message, txt)
		state["sentDonationThankYou"] = 1
		bot.writeState("job")
	
	return FilterManager.CONTINUE
Ejemplo n.º 2
0
def reportHobopolisStatus(context, **kwargs):
	bot = kwargs["bot"]
	chat = kwargs["chat"]
	state = bot.states["global"]
	
	r = ClanRaidLogRequest(bot.session)
	data = r.doRequest()
	
	whitespacePattern = PatternManager.getOrCompilePattern('whitespace')
	
	numGrates = 0
	numValves = 0
	totalTurns = 0
	areas = {}
	for area in HOBOPOLIS_AREAS:
		areas[area] = {"turns" : 0}
	for event in data["events"]:
		event["event"] = whitespacePattern.sub(' ', event["event"])
		if "turns" in event:
			totalTurns += event["turns"]
		if event["category"] == "Sewers":
			if event["event"].find("lowered the water level") >= 0:
				numValves += event["turns"]
			elif event["event"].find("sewer grate") >= 0:
				numGrates += event["turns"]
		elif event["category"] in HOBOPOLIS_AREAS:
			areaName = event["category"]
			areas[areaName]["turns"] += event["turns"]
			bossName = HOBOPOLIS_BOSSES[areaName]
			if event["event"].find("defeated %s" % bossName) >= 0:
				areas[areaName]["completed"] = True
		elif event["category"] == "Miscellaneous":
			bossName = HOBOPOLIS_BOSSES["Town Square"]
			if event["event"].find("defeated %s" % bossName) >= 0:
				areas["Town Square"]["completed"] = True
				areas["Town Square"]["turns"] += event["turns"]
			
	resp = "[Sewer: valves=%s/20, grates=%s/20" % (numValves, numGrates)
	if "hobo:sewerTrapped" in state:
		resp += ", trapped=%s" % state["hobo:sewerTrapped"]
	resp += ']'
	
	for areaName in HOBOPOLIS_AREAS:
		areaData = areas[areaName]
		completed = ("completed" in areaData)
		turns = areaData["turns"]
		
		if completed:
			resp += " [%s: DONE]" % HOBOPOLIS_AREA_SHORT_NAMES[areaName]
		else:
			if turns == 1:
				resp += " [%s: %s turn" % (HOBOPOLIS_AREA_SHORT_NAMES[areaName], turns)
			else:
				turnsStr = NumberUtils.formatNumberWithCommas(turns)
				resp += " [%s: %s turns" % (HOBOPOLIS_AREA_SHORT_NAMES[areaName], turnsStr)
			
			if turns > 0:
				if areaName == "Burnbarrel Blvd.":
					numTires = 0
					if "hobo:tiresStacked" in state:
						numTires = state["hobo:tiresStacked"]
					resp += ", %s tires" % numTires
					
			resp += ']'
	
	resp += ' [TOTAL: %s turns]' % totalTurns
		
	bot.sendChatMessage("/w %s %s" % (chat["userId"], resp))
Ejemplo n.º 3
0
def reportHobopolisStatus(context, **kwargs):
    bot = kwargs["bot"]
    chat = kwargs["chat"]
    state = bot.states["global"]

    r = ClanRaidLogRequest(bot.session)
    data = r.doRequest()

    whitespacePattern = PatternManager.getOrCompilePattern('whitespace')

    numGrates = 0
    numValves = 0
    totalTurns = 0
    areas = {}
    for area in HOBOPOLIS_AREAS:
        areas[area] = {"turns": 0}
    for event in data["events"]:
        event["event"] = whitespacePattern.sub(' ', event["event"])
        if "turns" in event:
            totalTurns += event["turns"]
        if event["category"] == "Sewers":
            if event["event"].find("lowered the water level") >= 0:
                numValves += event["turns"]
            elif event["event"].find("sewer grate") >= 0:
                numGrates += event["turns"]
        elif event["category"] in HOBOPOLIS_AREAS:
            areaName = event["category"]
            areas[areaName]["turns"] += event["turns"]
            bossName = HOBOPOLIS_BOSSES[areaName]
            if event["event"].find("defeated %s" % bossName) >= 0:
                areas[areaName]["completed"] = True
        elif event["category"] == "Miscellaneous":
            bossName = HOBOPOLIS_BOSSES["Town Square"]
            if event["event"].find("defeated %s" % bossName) >= 0:
                areas["Town Square"]["completed"] = True
                areas["Town Square"]["turns"] += event["turns"]

    resp = "[Sewer: valves=%s/20, grates=%s/20" % (numValves, numGrates)
    if "hobo:sewerTrapped" in state:
        resp += ", trapped=%s" % state["hobo:sewerTrapped"]
    resp += ']'

    for areaName in HOBOPOLIS_AREAS:
        areaData = areas[areaName]
        completed = ("completed" in areaData)
        turns = areaData["turns"]

        if completed:
            resp += " [%s: DONE]" % HOBOPOLIS_AREA_SHORT_NAMES[areaName]
        else:
            if turns == 1:
                resp += " [%s: %s turn" % (
                    HOBOPOLIS_AREA_SHORT_NAMES[areaName], turns)
            else:
                turnsStr = NumberUtils.formatNumberWithCommas(turns)
                resp += " [%s: %s turns" % (
                    HOBOPOLIS_AREA_SHORT_NAMES[areaName], turnsStr)

            if turns > 0:
                if areaName == "Burnbarrel Blvd.":
                    numTires = 0
                    if "hobo:tiresStacked" in state:
                        numTires = state["hobo:tiresStacked"]
                    resp += ", %s tires" % numTires

            resp += ']'

    resp += ' [TOTAL: %s turns]' % totalTurns

    bot.sendChatMessage("/w %s %s" % (chat["userId"], resp))