Browse Source

SQl rules for capitalisation name changes

tBKwtWS 7 năm trước cách đây
mục cha
commit
bdc97d9e1d
2 tập tin đã thay đổi với 30 bổ sung2 xóa
  1. 22 0
      database.schema.sql
  2. 8 2
      irc/bot.py

+ 22 - 0
database.schema.sql

@@ -502,6 +502,28 @@ ALTER TABLE ONLY users
     ADD CONSTRAINT users_network_fkey FOREIGN KEY (network) REFERENCES networks(name) ON UPDATE CASCADE ON DELETE CASCADE;
 
 
+
+-- new stuff
+
+CREATE RULE update_username AS ON UPDATE TO users WHERE OLD.name <> NEW.name DO INSTEAD (
+    INSERT INTO users (name, network, last_act_type, last_act_datetime, last_act_channel, last_act_channel_network, last_act, last_act_auxiliary, away, away_reason, xp_spent, level, coin) VALUES (NEW.name, NEW.network, NEW.last_act_type, NEW.last_act_datetime, NEW.last_act_channel, NEW.last_act_channel_network, NEW.last_act, NEW.last_act_auxiliary, NEW.away, NEW.away_reason, NEW.xp_spent, NEW.level, NEW.coin);
+    UPDATE joins SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
+    UPDATE kicks SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
+    UPDATE messages SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
+    DELETE FROM users WHERE name=OLD.name AND network=OLD.network;
+);
+    
+
+CREATE RULE update_channel_name AS ON UPDATE TO channels WHERE OLD.name <> NEW.name DO INSTEAD (
+    INSERT INTO channels (name, network, autojoin, join_greeting, statistics_commands, games, aggressiveness, chat, key, last_lame) VALUES (NEW.name, NEW.network, NEW.autojoin, NEW.join_greeting, NEW.statistics_commands, NEW.games, NEW.aggressiveness, NEW.chat, NEW.key, NEW.last_lame);
+    UPDATE joins SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
+    UPDATE kicks SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
+    UPDATE messages SET "user"=NEW.name WHERE "user"=OLD.name AND user_network=OLD.network;
+    UPDATE users SET last_act_channel=NEW.name WHERE last_act_channel=OLD.name AND network=OLD.network;
+    DELETE FROM channels WHERE name=OLD.name AND network=OLD.network;
+);
+
+
 --
 -- PostgreSQL database dump complete
 --

+ 8 - 2
irc/bot.py

@@ -157,9 +157,15 @@ class PyRot(irc.bot.SingleServerIRCBot):
         except:
             pass
         try:
-            Inform.owners(self, connection, "PM from " + red + red + event.source.nick + grey + ": " + reset + event.arguments[0] + ".")
+            if event.source.nick == "ChanServ" and event.arguments[0] == "Password authentication required for that command.":  # Not authenticated with NisckServ.
+                Inform.owners(self, connection, "Not authenticated with NickServ. See " + blue + self.helpchar + "recovernick " + reset + "and " + blue + self.helpchar + "registernick" + reset + ".")
+                return
+            
+            #default = forward to owners.
+            else:
+                Inform.owners(self, connection, "Notice from " + red + red + event.source.nick + grey + ": " + reset + event.arguments[0] + ".")
         except:
-            pass
+            return
     
     def on_action(self, connection, event):
         events.on_action.process_event(self, connection, event)