diff --git a/src/main/java/com/comandante/creeper/ConfigureCommands.java b/src/main/java/com/comandante/creeper/ConfigureCommands.java
index 648ca6e9448f89b3a794c6e3249d3f528595538f..480300f4ad359ae1e4d5d6aa83b2c650145266b2 100755
--- a/src/main/java/com/comandante/creeper/ConfigureCommands.java
+++ b/src/main/java/com/comandante/creeper/ConfigureCommands.java
@@ -87,5 +87,6 @@ public class ConfigureCommands {
         creeperCommandRegistry.addCommand(new SystemInfo(gameManager));
         creeperCommandRegistry.addCommand(new SetCommand(gameManager));
         creeperCommandRegistry.addCommand(new DelCommand(gameManager));
+        creeperCommandRegistry.addCommand(new OpCommand(gameManager));
     }
 }
diff --git a/src/main/java/com/comandante/creeper/command/OpCommand.java b/src/main/java/com/comandante/creeper/command/OpCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..2031e0077da54392236d8036cb27adcd8ee08c22
--- /dev/null
+++ b/src/main/java/com/comandante/creeper/command/OpCommand.java
@@ -0,0 +1,61 @@
+package com.comandante.creeper.command;
+
+import com.comandante.creeper.CreeperEntry;
+import com.comandante.creeper.managers.GameManager;
+import com.comandante.creeper.merchant.Merchant;
+import com.comandante.creeper.merchant.lockers.LockerCommand;
+import com.comandante.creeper.player.PlayerRole;
+import com.google.common.base.Joiner;
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableSortedSet;
+import com.google.common.collect.Sets;
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.jboss.netty.channel.MessageEvent;
+import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
+import org.pircbotx.Channel;
+import org.pircbotx.PircBotX;
+import org.pircbotx.User;
+import org.pircbotx.UserChannelDao;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+public class OpCommand extends Command {
+
+    final static List<String> validTriggers = Arrays.asList("open", "o");
+    final static String description = "Open a locker.";
+    final static String correctUsage = "open lockers";
+    final static Set<PlayerRole> roles = Sets.newHashSet(PlayerRole.ADMIN);
+
+    public OpCommand(GameManager gameManager) {
+        super(gameManager, validTriggers, description, correctUsage, roles);
+    }
+
+    public OpCommand(GameManager gameManager, List<String> validTriggers, String description, String correctUsage) {
+        super(gameManager, validTriggers, description, correctUsage);
+    }
+
+    @Override
+    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
+        configure(e);
+        try {
+            //ghetto and will only work for one channel bots.
+            originalMessageParts.remove(0);
+            String desiredNickNameToOp = Joiner.on(" ").join(originalMessageParts);
+            UserChannelDao<User, Channel> userChannelDao = gameManager.getIrcBotService().getBot().getUserChannelDao();
+            User user = userChannelDao.getUser(desiredNickNameToOp);
+            if (user == null) {
+                write("No such nick name exists in " + gameManager.getCreeperConfiguration().ircChannel);
+                return;
+            }
+            ImmutableSortedSet<Channel> channels = user.getChannels();
+            for (Channel channel : channels) {
+                if (channel.getName().equals(gameManager.get))
+                channel.send().op(user);
+            }
+        } finally {
+            super.messageReceived(ctx, e);
+        }
+    }
+}