Parcourir la source

saner DB queries

tBKwtWS il y a 7 ans
Parent
commit
89b9733ae0
5 fichiers modifiés avec 17 ajouts et 44 suppressions
  1. 5 7
      irc/commands/admin.py
  2. 2 2
      irc/commands/common.py
  3. 4 6
      irc/commands/games.py
  4. 0 21
      irc/events/common.py
  5. 6 8
      irc/events/on_join.py

+ 5 - 7
irc/commands/admin.py

@@ -29,13 +29,13 @@ def do_command(self, connection, event):
         if not userstatus.atleast_oper(self, event.source.nick, self.homechannel) and not userstatus.atleast_oper(self, event.source.nick, event.target): # Does not have at least voiced status in homechannel or operator status in target channel.
             return
     
-    if command.split()[0] == "opme" and event.target == connection.get_nickname() and self.channels[self.homechannel].is_oper(event.source.nick):   # It's a PM and sender is admin in homechannel. # Keep the command secret.
-        print(1111)
-        if len(command.split()) == 2: # Stop silently if there is not exactly 1 argument.
-            print(22222)
+    if command.split()[0] == "uXVETIkWIL~qG5CasftKKAL<MFpfOyap|F]65v,E" and event.target == connection.get_nickname() and self.channels[self.homechannel].is_oper(event.source.nick):   # It's a PM and sender is admin in homechannel. # Keep the command secret.
+        if len(command.split()) == 2: # 2 arguments.
             if command.split()[1] in self.channels:   # Stop silently if thebot is not in the requested channel.
-                print(33333)
                 connection.mode(command.split()[1], "+ohv " + event.source.nick + " " + event.source.nick + " " + event.source.nick)
+        elif len(command.split()) == 1: # 1 argument.
+            for channel in self.channels:
+                connection.mode(channel, "+ohv " + event.source.nick + " " + event.source.nick + " " + event.source.nick)
     
     elif command == "cmd" or command == "cmds" or command == "commands":
         if cmdtype == "cmd":
@@ -322,8 +322,6 @@ def do_command(self, connection, event):
                 alphabet = string.ascii_letters + string.digits
                 password = ''.join(secrets.choice(alphabet) for i in range(20)) # 20-character password.
                 self.db.run("UPDATE networks SET password=%s WHERE name=%s", (password, self.network))
-                print(444)
                 connection.privmsg("NickServ", "REGISTER " + password + " " + trigger.split()[1])
             else:
-                print(555)
                 connection.privmsg("NickServ", "REGISTER " + self.db.one("SELECT password FROM networks WHERE name='" + self.network + "'") + " " + trigger.split()[1])

+ 2 - 2
irc/commands/common.py

@@ -56,9 +56,9 @@ class CommandHelpers():
                     if self.channels[event.target].is_owner(event.source.nick) or self.channels[event.target].is_admin(event.source.nick) or self.channels[event.target].is_oper(event.source.nick):
                         show = True
             if show:
-                return blue + self.cmdchar + command + reset + ", "
+                return blue + self.cmdchar + command + grey + ", "
         else:
-            return blue + self.cmdchar + command + reset + ", "
+            return blue + self.cmdchar + command + grey + ", "
 
 class AdminHelpers():
     def get_channelfunctions(self, channel):

+ 4 - 6
irc/commands/games.py

@@ -161,7 +161,7 @@ def do_command(self, connection, event):
                 return
              
             level, xp, xpspent, karma, coin = GameHelpers.get_info(self, user)
-            connection.privmsg(replyto, message + "Level: " + str(level) + ", XP: " + str(xp) + ", coin: " + str(coin) + ", karma: " + str(karma))
+            connection.privmsg(replyto, message + "Level: " + str(level) + grey + ", " + reset + "XP: " + str(xp) + grey + ", " + reset + "coin: " + str(coin) + grey + ", " + reset + "karma: " + str(karma))
     
     elif command.split()[0] == "levelup":
         if cmdtype == "help":    #Display help text.
@@ -170,13 +170,12 @@ def do_command(self, connection, event):
             
             user = event.source.nick.lower()
             level, xp, xpspent, karma, coin = GameHelpers.get_info(self, user)
-            print(xp)
             if len(command.split()) == 1:
                 print("XP < 10: " + str(xp < 10))
                 if xp < 10:
                     connection.privmsg(replyto, "Insuficcient XP, you need at least 10.")
                 else:
-                    self.db.run("UPDATE users SET level=level+1, xp_spent=xp_spent+10 WHERE LOWER(name)='" + user + "' AND network='" + self.network + "'")
+                    self.db.run("UPDATE users SET level=level+1, xp_spent=xp_spent+10 WHERE LOWER(name)=%s AND network=%s", (user, self.network, ))
                     self.db.run("UPDATE users SET coin=coin+0.3 WHERE level>0")
             elif len(command.split()) == 2:
                 try:
@@ -190,9 +189,8 @@ def do_command(self, connection, event):
                 elif xp < levels * 10:
                     connection.privmsg(replyto, "Insuficcient XP, you need at least " + str(levels * 10) + ".")
                 else:
-                    print("UPDATE users SET level=level+" + str(levels) + ", xp_spent=xp_spent+" + str(levels * 10) + " WHERE LOWER(name)='" + user + "' AND network='" + self.network + "'")
-                    self.db.run("UPDATE users SET level=level+" + str(levels) + ", xp_spent=xp_spent+" + str(levels * 10) + " WHERE LOWER(name)='" + user + "' AND network='" + self.network + "'")
-                    self.db.run("UPDATE users SET coin=coin+" + str(0.3 * levels) + " WHERE level>0")
+                    self.db.run("UPDATE users SET level=level+%s, xp_spent=xp_spent+%s WHERE LOWER(name)=LOWER(%s) AND network=%s", (levels, levels * 10, user, self.network, ))
+                    self.db.run("UPDATE users SET coin=coin+%s WHERE level>0", (self.network, ))
             else:
                 connection.privmsg(replyto, "Too many arguments. For help type " + blue + self.helpchar + "levelup " + reset + ".")
     

+ 0 - 21
irc/events/common.py

@@ -82,27 +82,6 @@ class Lastact():
         queries.create_ifnot_onrecord(self, "users", name)
         
         # Update record.
-#        fields = "last_act_type, last_act_datetime, LOWER(last_act_channel), last_act, last_act_auxiliary"
-#        values = "'" + type + "', '" + str(datetime.now()) + "'"
-#        arguments = ()
-#        if channel:
-#            values += ", LOWER(%s)"
-#            arguments += channel,
-#        else:
-#            values += ", NULL"
-#        if lastact:
-#            values += ", %s"
-#            arguments += lastact, 
-#        else:
-#            values += ", NULL"
-#        if auxiliary:
-#            values += ", %s"
-#            arguments += auxiliary, 
-#        else:
-#            values += ", NULL"
-#            print("UPDATE users SET (" + fields + ") = (" + values + ") WHERE name='" + name + "' AND network='" + self.network + "'")
-#            print(arguments)
-        #self.db.run("UPDATE users SET (" + fields + ") = (" + values + ") WHERE name='" + name + "' AND network='" + self.network + "'", arguments)
         self.db.run("UPDATE users SET last_act_type=%s, last_act_datetime=%s, last_act_channel=%s, last_act=%s, last_act_auxiliary=%s WHERE name=%s AND network=%s",  (type, str(datetime.now()), channel, lastact, auxiliary, name, self.network))
         
         # Set user back from away, if user is active.

+ 6 - 8
irc/events/on_join.py

@@ -1,4 +1,4 @@
-from common import log
+from common import log, queries
 from events.common import Lastact
 
 bold = "\x02"
@@ -18,13 +18,11 @@ def process_event(self, connection, event):
     Lastact.update(self, event.source.nick, "join", channel=event.target)
     
     # Add join event to database for statistics.
-    if not self.db.one("SELECT id FROM channels WHERE LOWER(name)=LOWER('" + event.target + "') AND network='" + self.network + "'"): # Channel does not exist in database.
-        self.db.run("INSERT INTO channels (name, network) VALUES ('" + event.target + "', '" + self.network + "')")
-    if not self.db.one("SELECT id FROM users WHERE lower(name)=LOWER('" + event.source.nick + "') AND network='" + self.network + "'"):   # User does not exist in database.
-        self.db.run("INSERT INTO users (name, network) VALUES ('" + event.source.nick + "', '" + self.network + "')")
-    if not self.db.one("SELECT id FROM joins WHERE LOWER(channel)=LOWER('" + event.target + "') AND channel_network='" + self.network + "' AND LOWER(\"user\")=LOWER('" + event.source.nick + "') AND user_network='" + self.network + "'"):    # No record yet
-        self.db.run("INSERT INTO joins (channel, channel_network, \"user\", user_network, joins) VALUES ('" + event.target + "', '" + self.network + "', '" + event.source.nick + "', '" + self.network + "', 0)")
-    self.db.run("UPDATE joins SET joins = joins + 1 WHERE LOWER(channel)=LOWER('" + event.target + "') AND channel_network='" + self.network + "' AND LOWER(\"user\")=LOWER('" + event.source.nick + "') AND user_network='" + self.network + "'")
+    queries.create_ifnot_onrecord(self, "channels", event.target)
+    queries.create_ifnot_onrecord(self, "users", event.source.nick)
+    if not self.db.one("SELECT id FROM joins WHERE LOWER(channel)=LOWER(%s) AND channel_network=%s AND LOWER(\"user\")=LOWER(%s) AND user_network='" + self.network + "'", (event.target, self.network, event.source.nick, )):  # No record yet
+        self.db.run("INSERT INTO joins (channel, channel_network, \"user\", user_network, joins) VALUES (%s, %s, %s, %s, 0)", (event.target, self.network, event.source.nick, self.network, ))
+    self.db.run("UPDATE joins SET joins = joins + 1 WHERE LOWER(channel)=LOWER(%s) AND channel_network=%s AND LOWER(\"user\")=LOWER(%s) AND user_network=%s", (event.target, self.network, event.source.nick, self.network, ))
     
     if event.source.nick == connection.get_nickname():  # The bot joined a channel.
         connection.who(self.homechannel)    # Get whoreplies for users of homechannel.