In this tutorial, we are going to make the bot to read user input. Allow user to check specific BTC address balance. We will also beautify the response message, adding bold or italic...etc.
If you didn't read the previous tutorial:
[Part 0 Tutorial](https://steemit.com/programming/@itdog/telegram-bot-tutorial-part-0-introduction)
[Part 1 Tutorial](https://steemit.com/programming/@itdog/telegram-bot-tutorial-part-1-preparation-for-creating-a-telegram-bot)
[Part 2 Tutorial](https://steemit.com/programming/@itdog/telegram-bot-tutorial-part-2-coding-the-telegram-bot)
[Part 3 Tutorial](https://steemit.com/nodejs/@itdog/telegram-bot-tutorial-part-3-getting-balance-of-btc-address)
* * *
Before getting user's input, let's do a little change of our code.
This is our code from last tutorial:

Now, let's add this line after the `request variable`:
```
const URL = "https://blockchain.info/balance?active=";
```
Our code will look like this now:

and then replace the URL in the get balance function like this:

Do u still remember i said we need to put our string inside `" "` or `' '` ?
This time is a little bit different, we are using something called: [Template Strings](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)
You can put a variable inside your string by typing `${variable name}`.
That means `${URL}39uAUwEFDi5bBbdBm5ViD8sxDBBrz7SUP4` is equal to `https://blockchain.info/balance?active=39uAUwEFDi5bBbdBm5ViD8sxDBBrz7SUP4` which is the same URL as before.
* * *
### Now, Let's get user's specific BTC address.
Remember how we identity command ? We are using something called [Regular Expression](https://en.wikipedia.org/wiki/Regular_expression) .
To read user input, we can just simply edit the regular expression we are using to `/^\/balance (.+)$/`
This regular expression meaning that we need a string that is something like this: `/balance xxx` :
1. must start with `/balance`
2. must have something after `/balance`
otherwise, the bot will not recognize the command.
Let's add a new variable into our arrow function called `match` like this:

after that, add a new line `console.log(match)` before the `get` function from request, like this:

Now, start the bot with `node index.js` and try the `/balance` command again. (Remember to save the file first)
Now, if you type `/balance` to your bot, your bot will not response, because `/balance` is not matching the regular expression. (You can try what kind of text will match the regular expression by using this website: [Online Regex Tester](https://regex101.com/))
You will see at least `1 match` if the text you typed in matching the regular expression, otherwise it will show `0 match`:
1 Match:

0 Match:

Now, go back to your telegram bot and type `/balance x` and see the console in the Visual Studio Code, see what is the output. The bot should responded you, and you will see something like this on your console:

This is the `match` variable, You can see it is an array with 5 elements. The second element of the array is what we need. When user type `/balance address` we can simply get the address by getting the second element of the `match` variable.
Now, we can go back to our code and edit it :)

Let's save our code and run it, to see the result !

It works great !
Before we beautify the response message, let's change the response message if the address is incorrect which will show `NaN` balance.
`NaN` meaning **Not a Number** this will appear when we trying to do some calculation on some variable that is not a number.
Let's test what is the `json` object if the address is not correct by adding this line before the `sendMessage` function of `telegram`:
```
console.log(json);
```
Your code will look like this now :

**Remember to remove** `console.log(match)` first.
Now, save your code and try run it ;) to see whats the result.

It turns out, if the address is incorrect, it will return `Invalid Bitcoin Address` else it will return a json object.
Great, now we know if `json` is an object, that means the address is correct, otherwise it is incorrect.
Let's edit the code now.

`if(typeof json == "object")` meaning that, if the type of `json` variable is an object, then it will do all the code inside it (Sending the balance of that address to user).
Otherwise, it will do all the code inside the else block (Sending message to user saying that's not a valid BTC address).
Let's save it and run the code !

Work as expected !
* * *
Now, we are going to format our response message, to make it looks better.
[Documentation from Telegram](https://core.telegram.org/bots/api#sendmessage)
You can see all the parameters of `sendMessage` on the above link, you can see there is a `parse_mode` optional variable. This is what we are going to use. You can see there are different optional parameters you can use, you can try to use them.

This is how you add optional parameters for `sendMessage` function. If you want to add `reply_to_message_id` to the parameters, you can change the third argument of `sendMessage` to this:

This will now reply the message sent by user. Let's save it and see the result.

This is the result without reply and with reply.
So, we are going to use [HTML](https://www.w3schools.com/html/) to style our message.
There are total five style you can use to style the message in telegram.
[HTML Style](https://core.telegram.org/bots/api#html-style) Click this link to learn more.
i will just tell you guys the few tags that i use the most.
`<b>text</b>` is **bold**
`<i>text</i>` is *italic*
`<code>text</code>` is `code`
You can edit the message just like this:

Result:

It looks much better now :)
* * *
We will check the balance of an address and notify you if it decreased or increased automatically in next tutorial. Stay tuned !
Like and share this post if this is helpful.
Comment if you want to ask me any question about this tutorial.
Thanks for supporting me :)
Bye ~