Browse Source

Register!

Douglas William Thrift 14 years ago
parent
commit
5a4d6fac50
1 changed files with 29 additions and 3 deletions
  1. 29 3
      locationbot.py

+ 29 - 3
locationbot.py

@@ -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':