diff --git a/bot/commands/registration.py b/bot/commands/registration.py new file mode 100644 index 0000000..e897c99 --- /dev/null +++ b/bot/commands/registration.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- + +import time + +from classes import BaseCommand +import wiki + +class Command(BaseCommand): + """Return when a user registered.""" + name = "registration" + + def check(self, data): + commands = ["registration", "age"] + if data.is_command and data.command in commands: + return True + return False + + def process(self, data): + if not data.args: + name = data.nick + else: + name = ' '.join(data.args) + + site = wiki.get_site() + site._maxlag = None + user = site.get_user(name) + + try: + reg = user.registration() + except wiki.UserNotFoundError: + msg = "the user \x0302{0}\x0301 does not exist." + self.connection.reply(data, msg.format(name)) + return + + date = time.strftime("%b %m, %Y at %I:%M:%S %p", reg) + age = self.get_diff(time.mktime(reg), time.mktime(time.gmtime())) + + g = user.gender() + if g == "male": + gender = "He's" + elif g == "female": + gender = "She's" + else: + gende = "They're" + + msg = "\x0302{0}\x0301 registered on {1}. {2} {3} old." + self.connection.reply(data, msg.format(name, date, gender, age)) + + def get_diff(self, t1, t2): + parts = {"years": 31536000, "days": 86400, "hours": 3600, + "minutes": 60, "seconds": 1} + msg = [] + + order = sorted(parts.items(), key=lambda x: x[1], reverse=True) + for key, value in order: + num = 0 + while t2 - t1 > value: + t1 += value + num += 1 + if num or (not num and msg): + msg.append(" ".join((str(num), key))) + + return ", ".join(msg)