diff --git a/python/commands/report.py b/python/commands/report.py new file mode 100644 index 000000000..a997735f2 --- /dev/null +++ b/python/commands/report.py @@ -0,0 +1,39 @@ +from email.mime.text import MIMEText +import subprocess + +import Crossfire + +def report(pl): + desc = Crossfire.ScriptParameters() + if desc == None: + pl.Message("To report an issue, type 'report '.") + return + + details = { + 'PLAYER': Crossfire.WhoAmI().Name, + 'MAP': Crossfire.WhoAmI().Map.Path, + 'X': Crossfire.WhoAmI().X, + 'Y': Crossfire.WhoAmI().Y, + 'DESC': desc, + } + + report = """ +Reporter: {PLAYER} +Map: {MAP} ({X}, {Y}) +Report: {DESC} +""".format(**details) + + Crossfire.Log(Crossfire.LogInfo, "A problem was reported: %s" % (report)) + + msg = MIMEText(report) + recipient = "crossfire" + msg["From"] = "crossfire" + msg["Subject"] = "Crossfire issue report" + + result = subprocess.run(['sendmail', recipient], input=msg.as_bytes()) + if result.returncode == 0: + pl.Message("Thank you for your report.") + else: + pl.Message("There was an error reporting your problem. Please contact a Dungeon Master to report your problem.") + +report(Crossfire.WhoAmI()) diff --git a/python/events/init/python_commands.py b/python/events/init/python_commands.py index 9e4394f37..9dea46b59 100644 --- a/python/events/init/python_commands.py +++ b/python/events/init/python_commands.py @@ -4,4 +4,5 @@ Crossfire.RegisterCommand("autojail", "/python/commands/autojail", 0) Crossfire.RegisterCommand("dip", "/python/commands/dip", 0) Crossfire.RegisterCommand("disinfect", "/python/commands/disinfect", 0) Crossfire.RegisterCommand("give", "/python/commands/give", 0) +Crossfire.RegisterCommand("report", "/python/commands/report", 0) Crossfire.RegisterCommand("reputation", "/python/commands/reputation", 0)