diff --git a/command.go b/command.go
index 796c1ac5b742ff4d3a68f0a28e5d03b2369cd180..e616c89614797e4919ecdf5d06c99698bdc71833 100644
--- a/command.go
+++ b/command.go
@@ -145,4 +145,74 @@ func init() {
 			context.SendMessage("Action completed.")
 		},
 	})
+
+	m.Route(&multiplexer.Route{
+		Pattern:       "kick",
+		AliasPatterns: []string{"k", "dc"},
+		Description:   "Kick an user from channel.",
+		Category:      system,
+		Handler: func(context *multiplexer.Context) {
+
+			if len(context.Fields) < 2 {
+				// Return if unexpected amount of arguments.
+				context.SendMessage("Expecting user.")
+				return
+			}
+
+			// Get member
+			member := context.GetMember(context.Fields[1])
+			if member == nil {
+				context.SendMessage("Expecting member.")
+				return
+			}
+
+			// Get instance
+			instance, ok := instancesUser[context.User.ID]
+			if !ok {
+				context.SendMessage("You do not own any volatile channel.")
+				return
+			}
+
+			// Perform action
+			if !instance.actionPerform("kick",
+				func() bool {
+					// Check if member is in the channel
+					state, err := context.Session.State.VoiceState(member.GuildID, member.User.ID)
+					if err != nil {
+						log.Errorf("Error getting state of at guild %s on behalf of member %s, %s",
+							member.GuildID, member.User.ID, err)
+						return false
+					}
+
+					if state.ChannelID != instance.Channel.ID {
+						context.SendMessage("The user is not in your volatile channel")
+						return false
+					}
+					// Perform change
+					err2 := context.Session.GuildMemberMove(member.GuildID, member.User.ID, nil)
+					if err2!= nil {
+						log.Errorf("Error disconnecting user at guild %s on behalf of member %s, %s",
+							member.GuildID, member.User.ID, err)
+						return false
+					}
+					err3 := context.Session.ChannelPermissionSet(instance.Channel.ID,member.User.ID,1,1024,1048576)
+					if err3 != nil {
+						log.Errorf("Error changing permissions for user at guild %s on behalf of member %s, %s",
+							member.GuildID, member.User.ID, err)
+						return false
+					}
+					return true
+				}, context.SendMessage) {
+				return
+			}
+
+			log.Infof("Kick user from volatile channel #%s (%s) to %v on behalf of %s#%s (%s).",
+				instance.Channel.Name,
+				instance.Channel.ID,
+				instance.Initiator.User.Username,
+				instance.Initiator.User.Discriminator,
+				instance.Initiator.User.ID)
+			context.SendMessage("Action completed.")
+		},
+	})
 }