diff --git a/Modules/Ignore.pm b/Modules/Ignore.pm
index f2162830e3e083240423d6a8424a51c592617d4b..f786f631071b072c3be46ab90ee98967b563d925 100644
--- a/Modules/Ignore.pm
+++ b/Modules/Ignore.pm
@@ -1,8 +1,11 @@
 package Ignore; # right = owner ; command = ignore
 
+use Storable;
+
 
 # Liste des utilisateurs ignorés
-my %ignore_list = ();
+my %ignore__list = ();
+
 
 
 # ###
@@ -53,13 +56,13 @@ sub ignore_add
 	
 	$userhost = lc $ref_params->[0];
 	
-	if(defined($ignore_list{$userhost}))
+	if(defined($ignore__list{$userhost}))
 	{
 		$conn->privmsg($reply_to, "$userhost already in the ignore list");
 	}
 	else
 	{
-		$ignore_list{$userhost} = time();
+		$ignore__list{$userhost} = time();
 		$conn->privmsg($reply_to, "$userhost added in the ignore list");
 	}
 	
@@ -79,9 +82,9 @@ sub ignore_remove
 	
 	$userhost = lc $ref_params->[0];
 	
-	if(defined($ignore_list{$userhost}))
+	if(defined($ignore__list{$userhost}))
 	{
-		delete $ignore_list{$userhost};
+		delete $ignore__list{$userhost};
 		$conn->privmsg($reply_to, "$userhost removed from the ignore list");
 	}
 	else
@@ -101,6 +104,8 @@ sub ignore_list
 {
 	my ($conn, $event, $reply_to, $ref_params) = @_;
 	
+	my @userhost = ();
+	
 	if(defined($ref_params->[0]))
 	{
 		my $mask = undef;
@@ -112,15 +117,14 @@ sub ignore_list
 			return 1;
 		}
 		
-		my @userhost = ();
-		foreach my $uh (keys(%ignore_list))
+		foreach my $uh (keys(%ignore__list))
 		{
 			push @userhost, $uh if($uh =~ $mask);
 		}
 	}
 	else
 	{
-		my @userhost = keys %ignore_list;
+		@userhost = keys %ignore__list;
 	}
 	
 	if(defined($userhost[0]))
@@ -131,7 +135,7 @@ sub ignore_list
 		}
 		else
 		{
-			$conn->privmsg($reply_to, $userhost[0] . ' at ' . localtime($ignore_list{$userhost[0]}));
+			$conn->privmsg($reply_to, $userhost[0] . ', added ' . localtime($ignore__list{$userhost[0]}));
 		}
 	}
 	else
@@ -143,6 +147,22 @@ sub ignore_list
 } # ignore_list
 
 
+# ###
+#  ignore_on_public
+# Handler pour un évènement public, pour savoir si on ignore la personne ou non
+# ###
+sub ignore_on_public
+{
+	my ($conn, $event) = @_;
+	
+	if(defined($ignore__list{lc $event->{'userhost'}}))
+	{
+		EventHandler::prevent_default($event, 1);
+		$::logger->info($event->{'userhost'} . " is ignored\n");
+	}
+} # Fin ignore_on_public
+
+
 # ###
 #  ignore_help
 # Affiche l'aide de la commande '!ignore'
@@ -159,3 +179,49 @@ sub ignore_help
 	return 1;
 } # Fin ignore_help
 
+
+# ###
+#  ignore_save
+# Sauvegarde les ignore des utilisateurs
+# ###
+sub ignore_save
+{
+	my (undef, $folder, $reloading) = @_;
+	my $file_ignore = "/ignore".$Config::suffixe.".sav";
+	
+	store \%ignore__list, $folder.$file_ignore;
+	
+	if($reloading)
+	{
+		# On se désenregistre sinon on risque d'avoir deux fois le handler d'appelé
+		EventHandler::remove_event("public", "before", \&ignore_on_public);
+	}
+	
+	return 1;
+} # Fin ignore_save
+
+
+# ###
+#  ignore_load
+# Charge l'ignore__list au démarrage
+# ###
+sub ignore_load
+{
+	shift;
+	my $folder = shift;
+	my $file_ignore = "/ignore".$Config::suffixe.".sav";
+	
+	my $stateref = retrieve $folder.$file_ignore;
+	
+	%ignore__list = %{$stateref};
+	
+	# Ajout d'un handler pour ignorer les gens lorsqu'ils disent quelque chose
+	EventHandler::init_add_event("public", "before", \&ignore_on_public);
+	
+	return 1;
+} # Fin ignore_load
+
+1;
+
+__END__
+