public async Task Run()
        {
            m_discordClient      = new DiscordSocketClient();
            m_discordClient.Log += Log;

            m_tokenFilePath = Path.Combine(Environment.CurrentDirectory, "assets", "token.txt");
            m_apiToken      = await File.ReadAllTextAsync(m_tokenFilePath);

            await m_discordClient.LoginAsync(TokenType.Bot, m_apiToken);

            await m_discordClient.StartAsync();

            m_commandService = new CommandService();
            m_commandHandler = new CommandHandler(m_discordClient, m_commandService);

            // Database
            ColonyDatabase.Init();
            await m_commandHandler.InstallCommandsAsync();

            // ColonyManager init
            ColonyManager.Instance.GlobalInit(m_discordClient);
            await ColonyManager.Instance.Run();

            // await Task.Delay(-1);
        }
        public Task Register()
        {
            bool isAlreadyRegistered = false;

            DiscordUser user = ColonyDatabase.GetUser(Context.User.Username, Context.User.Discriminator);

            isAlreadyRegistered = (user != null);

            if (isAlreadyRegistered)
            {
                Console.WriteLine("User already registered");
                return(ReplyAsync($"{user.UserName} you are already registered in the Colony"));
            }

            user = new DiscordUser
            {
                UserName      = Context.User.Username,
                Discriminator = Context.User.Discriminator,
                RegisteredAt  = DateTime.Now
            };

            Console.WriteLine("Insert the new user in DB");
            ColonyDatabase.InsertDiscordUser(user);

            return(ReplyAsync($"{user.UserName}#{user.Discriminator} is now a member of the Colony"));
        }
        /*
         * Helper to get the Colony member from the Command context.
         */
        private ColonyMember GetMemberFromContext(SocketCommandContext _context)
        {
            DiscordUser currentUser = ColonyDatabase.GetUser(_context.User.Username, _context.User.Discriminator);

            if (currentUser == null)
            {
                return(null);
            }

            ColonyMember member = ColonyManager.Instance.GetColonyMember(currentUser);

            return(member);
        }
        public Task GetRegisteredUser()
        {
            DiscordUser[] users = ColonyDatabase.GetAllUsers();

            string response = "";

            response += "```";
            response += "Colony members :\n";
            foreach (DiscordUser discordUser in users)
            {
                response += "- " + discordUser.UserName + "\n";
            }
            response += "```";

            return(ReplyAsync(response));
        }