diff --git a/Modules/Ignore.pm b/Modules/Ignore.pm
new file mode 100644
index 0000000000000000000000000000000000000000..f2162830e3e083240423d6a8424a51c592617d4b
--- /dev/null
+++ b/Modules/Ignore.pm
@@ -0,0 +1,161 @@
+package Ignore; # right = owner ; command = ignore
+
+
+# Liste des utilisateurs ignorés
+my %ignore_list = ();
+
+
+# ###
+#  ignore_main
+# Permet de gérer la liste des ignorance des utilisateurs
+#
+# Usage :
+#  !ignore {add|remove} <user>@<host>
+#  !ignore list [<mask>]
+# ###
+sub ignore_main
+{
+	my ($conn, $event , $reply_to, $ref_params) = @_;
+	
+	if(defined($ref_params->[0]))
+	{
+		if($ref_params->[0] eq 'add')
+		{
+			shift(@{$ref_params});
+			return 1 if(ignore_add($conn, $event, $reply_to, $ref_params));
+		}
+		elsif($ref_params->[0] eq 'remove')
+		{
+			shift(@{$ref_params});
+			return 1 if(ignore_remove($conn, $event, $reply_to, $ref_params));
+		}
+		elsif($ref_params->[0] eq 'list')
+		{
+			shift(@{$ref_params});
+			return 1 if(ignore_list($conn, $event, $reply_to, $ref_params));
+		}
+	}
+	
+	$ref_params->[0] = 'ignore';
+	Help::help_main($conn, $event, $reply_to, $ref_params);
+} # Fin ignore_main
+
+
+# ###
+#  ignore_add
+# Ajoute un utilisateur à la liste d'ignore
+# ###
+sub ignore_add
+{
+	my ($conn, $event, $reply_to, $ref_params) = @_;
+	
+	return 0 unless defined $ref_params->[0];
+	
+	$userhost = lc $ref_params->[0];
+	
+	if(defined($ignore_list{$userhost}))
+	{
+		$conn->privmsg($reply_to, "$userhost already in the ignore list");
+	}
+	else
+	{
+		$ignore_list{$userhost} = time();
+		$conn->privmsg($reply_to, "$userhost added in the ignore list");
+	}
+	
+	return 1;
+} # ignore_add
+
+
+# ###
+#  ignore_remove
+# Enlève un utilisateur de la liste d'ignore
+# ###
+sub ignore_remove
+{
+	my ($conn, $event, $reply_to, $ref_params) = @_;
+	
+	return 0 unless defined $ref_params->[0];
+	
+	$userhost = lc $ref_params->[0];
+	
+	if(defined($ignore_list{$userhost}))
+	{
+		delete $ignore_list{$userhost};
+		$conn->privmsg($reply_to, "$userhost removed from the ignore list");
+	}
+	else
+	{
+		$conn->privmsg($reply_to, "$userhost isn't in the ignore list");
+	}
+	
+	return 1;
+} # ignore_remove
+
+
+# ###
+#  ignore_list
+# Affiche la liste des ignore
+# ###
+sub ignore_list
+{
+	my ($conn, $event, $reply_to, $ref_params) = @_;
+	
+	if(defined($ref_params->[0]))
+	{
+		my $mask = undef;
+		my $tmp = $ref_params->[0];
+		
+		if(!eval{ $mask = qr/$tmp/i })
+		{
+			$conn->privmsg($reply_to, "'$tmp' doesn't seem to be a correct regex");
+			return 1;
+		}
+		
+		my @userhost = ();
+		foreach my $uh (keys(%ignore_list))
+		{
+			push @userhost, $uh if($uh =~ $mask);
+		}
+	}
+	else
+	{
+		my @userhost = keys %ignore_list;
+	}
+	
+	if(defined($userhost[0]))
+	{
+		if(defined($userhost[1]))
+		{
+			$conn->privmsg($reply_to, join(', ', @userhost));
+		}
+		else
+		{
+			$conn->privmsg($reply_to, $userhost[0] . ' at ' . localtime($ignore_list{$userhost[0]}));
+		}
+	}
+	else
+	{
+		$conn->privmsg($reply_to, "There's noone in the ignore list, yet.");
+	}
+	
+	return 1;
+} # ignore_list
+
+
+# ###
+#  ignore_help
+# Affiche l'aide de la commande '!ignore'
+# ###
+sub ignore_help
+{
+	my ($conn, $event, $reply_to, $ref_params) = @_;
+	
+	$conn->privmsg($reply_to, "`".$Config::command_sign."ignore {add|remove} <user>\@<host>` => "
+	                             ."add/remove an ignore on <user>\@<host> (whatever nick this user uses)");
+	$conn->privmsg($reply_to, "`".$Config::command_sign."ignore list [<mask>]` => "
+	                             ."list ignored users using <mask> as a filter (<mask> has to be a valid regex)");
+	
+	return 1;
+} # Fin ignore_help
+