Clarify transmutation failure and log errors to file
This commit is contained in:
parent
fc2db3cb6a
commit
c2669b1d33
5
badge.py
5
badge.py
|
@ -3,6 +3,9 @@ from collections import defaultdict
|
||||||
from math import tan, atan, pi, log
|
from math import tan, atan, pi, log
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
class UserDoesntHaveEnoughBadges(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
def quantile(x,m,p):
|
def quantile(x,m,p):
|
||||||
c=1-m
|
c=1-m
|
||||||
if x<=0.5: # x <= 1/2
|
if x<=0.5: # x <= 1/2
|
||||||
|
@ -67,7 +70,7 @@ class BadgePopulation:
|
||||||
for badge in self.badges[user]:
|
for badge in self.badges[user]:
|
||||||
if badge.name==badge_name: found=True
|
if badge.name==badge_name: found=True
|
||||||
if not found:
|
if not found:
|
||||||
raise Exception(f"User {user} does not have a {badge_name}!")
|
raise UserDoesntHaveEnoughBadges(f"User {user} does not have a {badge_name}!")
|
||||||
rarities = calculate_rarities(self.population)
|
rarities = calculate_rarities(self.population)
|
||||||
badges = [rarities[name][2] for name in badge_names]
|
badges = [rarities[name][2] for name in badge_names]
|
||||||
badges.insert(0,1-_random.random())
|
badges.insert(0,1-_random.random())
|
||||||
|
|
|
@ -1,8 +1,15 @@
|
||||||
import plugin, badge, random, json, traceback
|
import plugin, badge, random, json, traceback, requests, io, importlib
|
||||||
from bot import IRCLine
|
from bot import IRCLine
|
||||||
from collections import Counter
|
from collections import Counter
|
||||||
|
importlib.reload(badge)
|
||||||
BOT = None
|
BOT = None
|
||||||
|
|
||||||
|
def pack_file(txt):
|
||||||
|
f = io.StringIO()
|
||||||
|
f.write(txt)
|
||||||
|
f.seek(0)
|
||||||
|
return {"file": ("tmp.txt",f,"text/plain")}
|
||||||
|
|
||||||
class BadgePopData(plugin.Data):
|
class BadgePopData(plugin.Data):
|
||||||
def serialize(self):
|
def serialize(self):
|
||||||
return json.dumps(self.value.to_json())
|
return json.dumps(self.value.to_json())
|
||||||
|
@ -76,10 +83,19 @@ def on_cmd_transmute(event):
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
badge_result = population.value.transmute(account,*event.parts)
|
badge_result = population.value.transmute(account,*event.parts)
|
||||||
except:
|
except badge.UserDoesntHaveEnoughBadges:
|
||||||
traceback.print_exc()
|
|
||||||
respond(event,"You must have at least one (1) of each badge you wish to use in the transmutation.")
|
respond(event,"You must have at least one (1) of each badge you wish to use in the transmutation.")
|
||||||
return
|
return
|
||||||
|
except:
|
||||||
|
url = "Error saving traceback! Tell khuxkm to check error.log!"
|
||||||
|
err = traceback.format_exc()
|
||||||
|
try:
|
||||||
|
with open("error.log","a") as f:
|
||||||
|
f.write(err+"\n"+("-"*80)+"\n")
|
||||||
|
r = requests.post("https://ttm.sh",files=pack_file(err))
|
||||||
|
url = r.text.strip()
|
||||||
|
except: pass
|
||||||
|
respond(event,"Something went wrong! Error: "+url)
|
||||||
respond(event,"You put in the {!s} badges above, and out pops a {}!".format(len(event.parts),badge_result))
|
respond(event,"You put in the {!s} badges above, and out pops a {}!".format(len(event.parts),badge_result))
|
||||||
population.value.give_badge(account,badge_result,False)
|
population.value.give_badge(account,badge_result,False)
|
||||||
population.save("badges.json")
|
population.save("badges.json")
|
||||||
|
|
Loading…
Reference in New Issue