mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Added CC-Nanotrasen, an IRC bot made by Skibiliano and given to us by him under CC-BY-SA 3.0 licensing WHAT DOES THIS MEAN? It means all servers running this SVN now have the option to use an easy to configure IRC bot capable of relaying adminhelps from ingame to the server/channel of their choice. - Runs on python 2.6 scripts with psyco support - Relaying can be toggled from config.txt (so you don't runtime with every adminhelp if you decide not to use it) - Comes with a bunch of other useful and fun tools too - Added a new global proc, send2irc(msg,msg2) YOU'LL NEVER GUESS WHAT IT DOES CONSIDERING WHAT I JUST MENTIONED ----msg and msg2 are just what text gets relayed to irc, separated by a |, for instance send2irc(hello, world) would come out as "CC_NanoTrasen: Hello | World git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2783 316c924e-a436-60f5-8080-3fe189b3f50e
205 lines
7.3 KiB
Python
205 lines
7.3 KiB
Python
#Sources:
|
|
# http://wwp.greenwichmeantime.com/time-zone/usa/eastern-time/convert/
|
|
# http://www.timeanddate.com/library/abbreviations/timezones/na/
|
|
# Times are GMT +- x
|
|
# For eq.
|
|
# EST = -5
|
|
# GMT = 0
|
|
# UTC = 0
|
|
#Times are in hours,
|
|
#2.5 = 2 and half hours
|
|
global times
|
|
times = {"ADT":-3,"HAA":-3, #Synonyms on the same line
|
|
"AKDT":-8,"HAY":-8,
|
|
"AKST":-9,"HNY":-9,
|
|
"AST":-4,"HNA":-4,
|
|
"CDT":-5,"HAC":-5,
|
|
"CST":-6,"HNC":-6,
|
|
"EDT":-4,"HAE":-4,
|
|
"EGST":0,
|
|
"EGT":-1,
|
|
"EST":-5,"HNE":-5,"ET":-5,
|
|
"HADT":-9,
|
|
"HAST":-10,
|
|
"MDT":-6,"HAR":-6,
|
|
"MST":-7,"HNR":-7,
|
|
"NDT":-2.5,"HAT":-2.5,
|
|
"NST":-3.5,"HNT":-3.5,
|
|
"PDT":-7,"HAP":-7,
|
|
"PMDT":-2,
|
|
"PMST":-3,
|
|
"PST":-8,"HNP":-8,"PT":-8,
|
|
"WGST":-2,
|
|
"WGT":-3,
|
|
"GMT":0,
|
|
"UTC":0}
|
|
def converter(zones,time):
|
|
#Zones should be a list containing
|
|
# ( From zone
|
|
# To zone )
|
|
global times
|
|
#from_z = for example UTC+00:00, WGT or GMT-05:30
|
|
#to_z = same style as above.
|
|
from_z,to_z = zones
|
|
from_z = from_z.upper()
|
|
to_z = to_z.upper()
|
|
if from_z.find("+") != -1:
|
|
from_zone_offset = from_z[from_z.find("+"):]
|
|
if ":" in from_zone_offset:
|
|
try:
|
|
from_zone_offset1,from_zone_offset2 = from_zone_offset.split(":")
|
|
except ValueError:
|
|
return "Too many or too small amount of values"
|
|
try:
|
|
from_zone_offset = int(from_zone_offset1) + int(from_zone_offset2)/60.0
|
|
except:
|
|
return "Error, the 'From Zone' variable has an incorrect offset number"
|
|
else:
|
|
try:
|
|
from_zone_offset = float(from_zone_offset)
|
|
except:
|
|
return "Error, the 'From Zone' variable has an incorrect offset number"
|
|
try:
|
|
from_zone_realtime = from_zone_offset + times[from_z[:from_z.find("+")]]
|
|
except KeyError:
|
|
return "Incorrect From zone"
|
|
|
|
elif "-" in from_z:
|
|
from_zone_offset = from_z[from_z.find("-"):]
|
|
if ":" in from_zone_offset:
|
|
from_zone_offset1,from_zone_offset2 = from_zone_offset.split(":")
|
|
try:
|
|
from_zone_offset = -int(from_zone_offset1) + int(from_zone_offset2)/60.0
|
|
except:
|
|
return "Error, the 'From Zone' variable has an incorrect offset number"
|
|
else:
|
|
try:
|
|
from_zone_offset = -float(from_zone_offset)
|
|
except:
|
|
return "Error, the 'From Zone' variable has an incorrect offset number"
|
|
from_zone_realtime = times[from_z[:from_z.find("-")]] - from_zone_offset
|
|
pass
|
|
else:
|
|
from_zone_offset = 0
|
|
try:
|
|
from_zone_realtime = from_zone_offset + times[from_z]
|
|
except KeyError:
|
|
return "Incorrect From zone"
|
|
if to_z.find("+") != -1:
|
|
to_zone_offset = to_z[to_z.find("+"):]
|
|
if ":" in to_zone_offset:
|
|
try:
|
|
to_zone_offset1,to_zone_offset2 = to_zone_offset.split(":")
|
|
except ValueError:
|
|
return "Too many or too small amount of values"
|
|
try:
|
|
to_zone_offset = int(to_zone_offset1) + int(to_zone_offset2)/60.0
|
|
except:
|
|
return "Error, the 'To Zone' variable has an incorrect offset number"
|
|
else:
|
|
try:
|
|
to_zone_offset = float(to_zone_offset)
|
|
except:
|
|
return "Error, the 'To Zone' variable has an incorrect offset number"
|
|
try:
|
|
to_zone_realtime = to_zone_offset + times[to_z[:to_z.find("+")]]
|
|
except KeyError:
|
|
return "The zone you want the time to be changed to is not found"
|
|
|
|
elif "-" in to_z:
|
|
to_zone_offset = to_z[to_z.find("-"):]
|
|
if ":" in to_zone_offset:
|
|
to_zone_offset1,to_zone_offset2 = to_zone_offset.split(":")
|
|
try:
|
|
to_zone_offset = -int(to_zone_offset1) + int(to_zone_offset2)/60.0
|
|
except:
|
|
return "Error, the 'To Zone' variable has an incorrect offset number"
|
|
else:
|
|
try:
|
|
to_zone_offset = -float(to_zone_offset)
|
|
except:
|
|
return "Error, the 'To Zone' variable has an incorrect offset number"
|
|
to_zone_realtime = times[to_z[:to_z.find("-")]] -to_zone_offset
|
|
|
|
pass
|
|
else:
|
|
to_zone_offset = 0
|
|
try:
|
|
to_zone_realtime = to_zone_offset + times[to_z]
|
|
except KeyError:
|
|
return "Incorrect To zone"
|
|
try:
|
|
time_hour,time_minute = time.split(":")
|
|
time_hour,time_minute = int(time_hour),int(time_minute)
|
|
string = ":"
|
|
except:
|
|
try:
|
|
time_hour,time_minute = time.split(".")
|
|
time_hour,time_minute = int(time_hour),int(time_minute)
|
|
string = "."
|
|
except ValueError:
|
|
return "The time was input in an odd way"
|
|
if to_zone_realtime % 1.0 == 0.0 and from_zone_realtime % 1.0 == 0.0:
|
|
time_hour = time_hour + (to_zone_realtime - from_zone_realtime)
|
|
return str(int(time_hour))+string+str(int(time_minute))
|
|
else:
|
|
if to_zone_realtime % 1.0 != 0.0 and from_zone_realtime % 1.0 != 0.0:
|
|
time_minute = time_minute + (((to_zone_realtime % 1.0) * 60) - ((from_zone_realtime % 1.0) * 60))
|
|
elif to_zone_realtime % 1.0 != 0.0 and from_zone_realtime % 1.0 == 0.0:
|
|
time_minute = time_minute + (((to_zone_realtime % 1.0) * 60) - 0)
|
|
elif to_zone_realtime % 1.0 == 0.0 and from_zone_realtime % 1.0 != 0.0:
|
|
time_minute = time_minute + (0 - ((from_zone_realtime % 1.0) * 60))
|
|
else:
|
|
print "Wut?"
|
|
time_hour = time_hour + (int(to_zone_realtime//1) - int(from_zone_realtime//1))
|
|
return str(int(time_hour))+string+str(int(time_minute))
|
|
|
|
|
|
def formatter(time):
|
|
if "." in time:
|
|
string = "."
|
|
elif ":" in time:
|
|
string = ":"
|
|
else:
|
|
return time
|
|
hours,minutes = time.split(string)
|
|
days = 0
|
|
if int(minutes) < 0:
|
|
buphours = int(hours)
|
|
hours,minutes = divmod(int(minutes),60)
|
|
hours += buphours
|
|
if int(minutes) > 60:
|
|
hours,minutes = divmod(int(minutes),60)
|
|
hours += int(hours)
|
|
if int(hours) < 0:
|
|
days = 0
|
|
days,hours = divmod(int(hours),24)
|
|
if int(hours) > 24:
|
|
days = 0
|
|
days,hours = divmod(int(hours),24)
|
|
if int(hours) == 24 and int(minutes) > 0:
|
|
days += 1
|
|
hours = int(hours) - 24
|
|
hours = str(hours)
|
|
minutes = str(minutes)
|
|
if len(minutes) == 1:
|
|
minutes = "0"+minutes
|
|
if len(hours) == 1:
|
|
hours = "0"+hours
|
|
if days > 0:
|
|
if days == 1:
|
|
return hours+string+minutes+" (Tomorrow)"
|
|
else:
|
|
return hours+string+minutes+" (After "+str(days)+" days)"
|
|
elif days < 0:
|
|
if days == -1:
|
|
return hours+string+minutes+" (Yesterday)"
|
|
else:
|
|
return hours+string+minutes+" ("+str(abs(days))+" days ago)"
|
|
return hours+string+minutes
|
|
|
|
|
|
|
|
|
|
|