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
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))
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))