diff --git a/exec/irc.js b/exec/irc.js
index 0231e2c67df7e1f36e37d90c82acc8aaf58eb2c9..273f6ab83a2b212e3b123608041fa73fbc4b6a8e 100644
--- a/exec/irc.js
+++ b/exec/irc.js
@@ -664,6 +664,14 @@ function wait_for(commands)  {
 	}
 }
 
+function in_a_channel() {
+	if(channels.current==undefined)  {
+		screen.print_line("\x01H\x01RYou are not in a channel!\x01N\x01W");
+		return false;
+	}
+	return true;
+}
+
 function send_command(command,param)  {
 	var params=[null];
 	var send_to=null;
@@ -705,10 +713,7 @@ function send_command(command,param)  {
 			channels.join(param);
 			break;
 		case "ME":
-			if(channels.current==undefined)  {
-				screen.print_line("\x01H\x01RYou are not in a channel!\x01N\x01W");
-			}
-			else  {
+			if(in_a_channel()) {
 				channels.current.send("\x01ACTION "+param+"\x01");
 				screen.print_line("\x01N\x01B*\x01W "+nick+" "+param);
 			}
@@ -723,7 +728,8 @@ function send_command(command,param)  {
 		case "PART":
 			// If the user specifies a channel, this SHOULD part that channel,
 			// not the current one.
-			channels.part(channels.current.name,param);
+			if(in_a_channel())
+				channels.part(channels.current.name,param);
 			break;
 		case "N":
 		case "NEXT":
@@ -743,19 +749,23 @@ function send_command(command,param)  {
 			screen.update_statline();
 			break;
 		case "TOPIC":
-			if (param.substr(0,1) == '#' || param.substr(0,1) == '&')  {
-				send_cmd(command, param);
-			}
-			else  {
-				send_cmd(command, channels.current.name+" "+param);
+			if(in_a_channel()) {
+				if (param.substr(0,1) == '#' || param.substr(0,1) == '&')  {
+					send_cmd(command, param);
+				}
+				else  {
+					send_cmd(command, channels.current.name+" "+param);
+				}
 			}
 			break;
 		case "KICK":
-			if (param.substr(0,1) == '#' || param.substr(0,1) == '&')  {
-				send_cmd(command, param);
-			}
-			else  {
-				send_cmd(command, channels.current.name+" "+param);
+			if(in_a_channel()) {
+				if (param.substr(0,1) == '#' || param.substr(0,1) == '&')  {
+					send_cmd(command, param);
+				}
+				else  {
+					send_cmd(command, channels.current.name+" "+param);
+				}
 			}
 			break;
 		case "QUOTE":