|
@@ -100,12 +100,15 @@ class LocationBot(ircbot.SingleServerIRCBot):
|
|
|
command = irclib.irc_lower(arguments.split(None, 1)[0].lstrip('!')) if arguments else None
|
|
|
commands = {
|
|
|
'help': ('[command]', 'show this help message'),
|
|
|
- 'login': ('[nick] [secret]', 'log in as nick with secret or using masks'),
|
|
|
- 'register': ('[nick] secret', 'register as nick with secret'),
|
|
|
'status': ('[nick]', 'show where everybody or a nick is'),
|
|
|
}
|
|
|
|
|
|
- if login:
|
|
|
+ if not login:
|
|
|
+ commands.update({
|
|
|
+ 'login': ('[nick] [secret]', 'log in as nick with secret or using masks'),
|
|
|
+ 'register': ('[nick] secret', 'register as nick with secret'),
|
|
|
+ })
|
|
|
+ else:
|
|
|
commands.update({
|
|
|
'logout': ('', 'log out as nick'),
|
|
|
'set': ('[variable [value]]', 'display or set variables'),
|
|
@@ -236,6 +239,27 @@ class LocationBot(ircbot.SingleServerIRCBot):
|
|
|
def __logout(self, connection, nick):
|
|
|
connection.privmsg(nick, 'logged out as "%s"' % self.__logins.pop(nick)[0])
|
|
|
|
|
|
+ def __register(self, connection, nick, arguments):
|
|
|
+ arguments = arguments.split(None, 1)
|
|
|
+
|
|
|
+ if len(arguments) == 2:
|
|
|
+ login, secret = arguments
|
|
|
+ elif len(arguments) == 1:
|
|
|
+ login = nick
|
|
|
+ secret = arguments[0]
|
|
|
+ else:
|
|
|
+ return self.__help(connection, nick, False, False, 'register')
|
|
|
+
|
|
|
+ db, cursor = self.__db()
|
|
|
+
|
|
|
+ try:
|
|
|
+ cursor.execute('insert into locationbot.nick (nick, secret) values (%s, md5(%s))', (login, secret))
|
|
|
+ db.commit()
|
|
|
+ except psycopg2.IntegrityError:
|
|
|
+ return connection.privmsg(nick, 'nick ("%s") is already registered' % login)
|
|
|
+
|
|
|
+ connection.privmsg(nick, 'nick ("%s") sucessfully registered' % login)
|
|
|
+
|
|
|
def __reload(self, connection, nick):
|
|
|
self.__reloading = True
|
|
|
|
|
@@ -380,6 +404,8 @@ class LocationBot(ircbot.SingleServerIRCBot):
|
|
|
self.__login(connection, nickmask, nick, arguments)
|
|
|
elif command == 'status':
|
|
|
self.__status(connection, nick, login, arguments)
|
|
|
+ elif not login and command == 'register':
|
|
|
+ self.__register(connection, nick, arguments)
|
|
|
elif login and command == 'logout':
|
|
|
self.__logout(connection, nick)
|
|
|
elif login and command == 'unset':
|