diff --git a/android/app/src/main/java/com/chatman/activity/AuthActivity.java b/android/app/src/main/java/com/chatman/activity/AuthActivity.java
index 7ad0470258faf9e699000d8bdc56d380a035107f..0aeb5b573d6b6b2ffe2b041dd73cbb50bf7b54ae 100644
--- a/android/app/src/main/java/com/chatman/activity/AuthActivity.java
+++ b/android/app/src/main/java/com/chatman/activity/AuthActivity.java
@@ -228,9 +228,12 @@ public class AuthActivity extends AppCompatActivity {
         final String name = nameEditText.getText().toString().trim();
         final String email = emailEditText.getText().toString().trim();
         final String password = passwordEditText.getText().toString().trim();
-        String confirm = confirmEditText.getText().toString().trim();
-
+        final String confirm = confirmEditText.getText().toString().trim();
+        Log.d(TAG, "register: name " + name);
+        Log.d(TAG, "register: email " + email);
+        Log.d(TAG, "register: password " + password);
         if (password.equals(confirm)) {
+            loadingDialog.show();
             final boolean[] emailUnique = new boolean[] {true};
             FirebaseHelper.dbUser.addValueEventListener(new ValueEventListener() {
                 @Override
@@ -240,33 +243,45 @@ public class AuthActivity extends AppCompatActivity {
                         if (user.getEmail().equalsIgnoreCase(email)) {
                             emailUnique[0] = false;
                         }
+                        if (emailUnique[0] && !name.equals("") && !email.equals("") && !password.equals("") && !confirm.equals("") ) {
+                            FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
+                                @Override
+                                public void onComplete(@NonNull Task<InstanceIdResult> task) {
+                                    String idFirebase = FirebaseHelper.dbUser.push().getKey();
+                                    String instanceId = task.getResult().getToken();
+                                    User user;
+                                    user = new User(instanceId, name, email, md5(password), idFirebase);
+                                    PreferencesHelper.setUserFirebaseId(AuthActivity.this, user.getId());
+                                    PreferencesHelper.setTokenKey(AuthActivity.this, user.getKey());
+                                    PreferencesHelper.setUserName(AuthActivity.this, user.getName());
+                                    PreferencesHelper.setHasLogin(AuthActivity.this, true);
+
+                                    FirebaseHelper.dbUser.child(idFirebase).setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
+                                        @Override
+                                        public void onComplete(@NonNull Task<Void> task) {
+                                            String idRoom = FirebaseDatabase.getInstance().getReference("chatroom").push().getKey();
+                                            PreferencesHelper.setBotRoom(AuthActivity.this, idRoom);
+                                            FirebaseDatabase.getInstance().getReference("chatroom/" + idRoom)
+                                                    .child("users/0").setValue("BOT_TOKEN");
+                                            FirebaseDatabase.getInstance().getReference("chatroom/" + idRoom)
+                                                    .child("users/1").setValue(PreferencesHelper.getToken(AuthActivity.this));
+                                            loadingDialog.dismiss();
+                                            finish();
+                                            startActivity(new Intent(AuthActivity.this, MainActivity.class));
+                                        }
+                                    });
+                                }
+                            });
+                        } else {
+                            loadingDialog.dismiss();
+                            showSnackBar(AuthActivity.this, "Email has been used");
+                        }
                     }
                 }
                 @Override
                 public void onCancelled(@NonNull DatabaseError databaseError) { }
             });
 
-            if (emailUnique[0] && !name.equals("") && !email.equals("") && !password.equals("") && !confirm.equals("") ) {
-                FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
-                    @Override
-                    public void onComplete(@NonNull Task<InstanceIdResult> task) {
-                        String idFirebase = FirebaseHelper.dbUser.push().getKey();
-                        String instanceId = task.getResult().getToken();
-                        User user;
-                        user = new User(instanceId, name, email, md5(password), idFirebase);
-                        PreferencesHelper.setUserFirebaseId(AuthActivity.this, user.getId());
-                        PreferencesHelper.setTokenKey(AuthActivity.this, user.getKey());
-                        PreferencesHelper.setUserName(AuthActivity.this, user.getName());
-                        PreferencesHelper.setHasLogin(AuthActivity.this, true);
-
-                        FirebaseHelper.dbUser.child(idFirebase).setValue(user);
-                        finish();
-                        startActivity(new Intent(AuthActivity.this, MainActivity.class));
-                    }
-                });
-            } else {
-                showSnackBar(this, "Email has been used");
-            }
         } else {
             showSnackBar(this, "Password did not match");
         }
diff --git a/android/app/src/main/java/com/chatman/fragment/BotFragment.java b/android/app/src/main/java/com/chatman/fragment/BotFragment.java
index c521842eb089b62b997e30d8d8803b28915f8a9f..c5d08c8032d57292f5893d347507a9b2f1ee8ab3 100644
--- a/android/app/src/main/java/com/chatman/fragment/BotFragment.java
+++ b/android/app/src/main/java/com/chatman/fragment/BotFragment.java
@@ -9,6 +9,7 @@ import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -27,6 +28,7 @@ import com.chatman.helper.PreferencesHelper;
 import com.chatman.model.Chat;
 import com.google.firebase.database.DataSnapshot;
 import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.FirebaseDatabase;
 import com.google.firebase.database.ValueEventListener;
 
 import java.util.ArrayList;
@@ -84,9 +86,22 @@ public class BotFragment extends Fragment {
                 if (!message.getText().toString().equals("")){
                     Toast.makeText(context, "Send: "+message.getText().toString(), Toast.LENGTH_SHORT).show();
                     Chat sendMessage = new Chat(PreferencesHelper.getToken(context), PreferencesHelper.getUserName(context), BOT_TOKEN, Calendar.getInstance().getTime(), message.getText().toString());
-                    String key = FirebaseHelper.dbMessage.push().getKey();
+                    final String key = FirebaseHelper.dbMessage.push().getKey();
                     FirebaseHelper.dbMessage.child(key).setValue(sendMessage);
-
+                    FirebaseDatabase.getInstance().getReference().child("chatroom").child(PreferencesHelper.getBotRoom(context)).addListenerForSingleValueEvent(new ValueEventListener() {
+                        @Override
+                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+                            String index = String.valueOf(dataSnapshot.child("messages").getChildrenCount());
+                            Log.d("BotMessageHelper", "onDataChange: index " + index);
+                            FirebaseDatabase.getInstance().getReference("chatroom/" + PreferencesHelper.getBotRoom(context) + "/messages")
+                                    .child(index).setValue(key);
+                        }
+
+                        @Override
+                        public void onCancelled(@NonNull DatabaseError databaseError) {
+
+                        }
+                    });
                     //Bot response
                     BotMessageHelper.respondBot(context, message.getText().toString());
 
diff --git a/android/app/src/main/java/com/chatman/helper/BotMessageHelper.java b/android/app/src/main/java/com/chatman/helper/BotMessageHelper.java
index 16aa001a7538fb568d9372e37cd2ef8ec48bcad9..c2d31742b7680edfe8033c3116315eca1da39f85 100644
--- a/android/app/src/main/java/com/chatman/helper/BotMessageHelper.java
+++ b/android/app/src/main/java/com/chatman/helper/BotMessageHelper.java
@@ -5,11 +5,17 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
+import android.support.annotation.NonNull;
 import android.support.v4.app.ActivityCompat;
+import android.util.Log;
 
 import com.chatman.activity.CompassActivity;
 import com.chatman.model.Chat;
 import com.chatman.service.WeatherService;
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.FirebaseDatabase;
+import com.google.firebase.database.ValueEventListener;
 
 import java.util.Calendar;
 
@@ -34,9 +40,25 @@ public class BotMessageHelper {
         else sendBotMessage(context, "Halo! Selamat datang di ChatMan");
     }
 
-    public static void sendBotMessage(Context context, String message) {
+    public static void sendBotMessage(final Context context, String message) {
         Chat botMessage = new Chat(BOT_TOKEN, "ChatMan Bot", PreferencesHelper.getToken(context), Calendar.getInstance().getTime(), message);
-        String botKey = FirebaseHelper.dbMessage.push().getKey();
+        final String botKey = FirebaseHelper.dbMessage.push().getKey();
         FirebaseHelper.dbMessage.child(botKey).setValue(botMessage);
+
+        FirebaseDatabase.getInstance().getReference().child("chatroom").child(PreferencesHelper.getBotRoom(context)).addListenerForSingleValueEvent(new ValueEventListener() {
+            @Override
+            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+                String index = String.valueOf(dataSnapshot.child("messages").getChildrenCount());
+                Log.d("BotMessageHelper", "onDataChange: index " + index);
+                FirebaseDatabase.getInstance().getReference("chatroom/" + PreferencesHelper.getBotRoom(context) + "/messages")
+                        .child(index).setValue(botKey);
+
+            }
+
+            @Override
+            public void onCancelled(@NonNull DatabaseError databaseError) {
+
+            }
+        });
     }
 }
diff --git a/android/app/src/main/java/com/chatman/helper/PreferencesHelper.java b/android/app/src/main/java/com/chatman/helper/PreferencesHelper.java
index 28720f6094901d449af20f362ed1d98800fe2951..75295c00831aa5fd587a95664cdd6c9444ce2703 100644
--- a/android/app/src/main/java/com/chatman/helper/PreferencesHelper.java
+++ b/android/app/src/main/java/com/chatman/helper/PreferencesHelper.java
@@ -10,6 +10,7 @@ public class PreferencesHelper {
     public static final String USER_NAME = "user_name";
     public static final String HAS_LOGIN = "has_login";
     public static final String TOKEN= "token";
+    private static final String BOT_CHAT_ROOM = "bot_chat_room";
 
     private static void setBooleanPreferences(Context context, String key, boolean value) {
         SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
@@ -80,4 +81,12 @@ public class PreferencesHelper {
         return getStringPreferences(context, TOKEN);
     }
 
+    public static String getBotRoom(Context context) {
+        return getStringPreferences(context, BOT_CHAT_ROOM);
+    }
+
+    public static void setBotRoom(Context context, String string) {
+        setStringPreferences(context, BOT_CHAT_ROOM, string);
+    }
+
 }