| @@ -20,7 +20,8 @@ | |||||
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| # SOFTWARE. | # SOFTWARE. | ||||
| import time | |||||
| from datetime import datetime | |||||
| from time import mktime | |||||
| from earwigbot import exceptions | from earwigbot import exceptions | ||||
| from earwigbot.commands import Command | from earwigbot.commands import Command | ||||
| @@ -46,8 +47,9 @@ class Registration(Command): | |||||
| self.reply(data, msg.format(name)) | self.reply(data, msg.format(name)) | ||||
| return | return | ||||
| date = time.strftime("%b %d, %Y at %H:%M:%S UTC", reg) | |||||
| age = self.get_diff(time.mktime(reg), time.mktime(time.gmtime())) | |||||
| dt = datetime.fromtimestamp(mktime(reg)) | |||||
| date = dt.strftime("%b %d, %Y at %H:%M:%S UTC") | |||||
| age = self.get_age(dt) | |||||
| if user.gender == "male": | if user.gender == "male": | ||||
| gender = "He's" | gender = "He's" | ||||
| @@ -59,14 +61,24 @@ class Registration(Command): | |||||
| msg = "\x0302{0}\x0F registered on {1}. {2} {3} old." | msg = "\x0302{0}\x0F registered on {1}. {2} {3} old." | ||||
| self.reply(data, msg.format(name, date, gender, age)) | self.reply(data, msg.format(name, date, gender, age)) | ||||
| def get_diff(self, t1, t2): | |||||
| parts = [("year", 31536000), ("day", 86400), ("hour", 3600), | |||||
| ("minute", 60), ("second", 1)] | |||||
| def get_age(self, birth): | |||||
| msg = [] | msg = [] | ||||
| for name, size in parts: | |||||
| num = int(t2 - t1) / size | |||||
| t1 += num * size | |||||
| if num: | |||||
| chunk = "{0} {1}".format(num, name if num == 1 else name + "s") | |||||
| msg.append(chunk) | |||||
| def insert(unit, num): | |||||
| if not num: | |||||
| return | |||||
| msg.append("{0} {1}".format(num, unit if num == 1 else unit + "s")) | |||||
| now = datetime.utcnow() | |||||
| bd_passed = (now.month, now.day) < (birth.month, birth.day) | |||||
| years = now.year - birth.year - bd_passed | |||||
| delta = now - birth.replace(year=birth.year + years) | |||||
| insert("year", years) | |||||
| insert("day", delta.days) | |||||
| seconds = delta.seconds | |||||
| units = [("hour", 3600), ("minute", 60), ("second", 1)] | |||||
| for unit, size in units: | |||||
| num = seconds / size | |||||
| seconds -= num * size | |||||
| insert(unit, num) | |||||
| return ", ".join(msg) if msg else "0 seconds" | return ", ".join(msg) if msg else "0 seconds" | ||||