How to use telegram bot token


Bots FAQ

If you are new to Telegram bots, we recommend checking out our Introduction to Bots first.
You may also find the Bot API Manual useful.

General

Getting Updates

Handling Media

Broadcasting to Users


General Questions

How do I create a bot?

Creating Telegram bots is super-easy, but you will need at least some skills at computer programming. In order for a bot to work, set up a bot account with @BotFather, then connect it to your backend server via our API.

Unfortunately, there are no out-of-the-box ways to create a working bot if you are not a developer. But we're sure you'll soon find plenty of bots created by other people to play with.

I'm a developer. Where can I find some examples?

Here are two sample bots, both written in PHP:

Many members of our community are building bots and publishing sources.
We're collecting them on this page »

Ping us on @BotSupport if you've built a bot and would like to share it with others.

Will you add X to the Bot API?

The bot API is still pretty young. There are many potential features to consider and implement. We'll be studying what people do with their bots for a while to see which directions will be most important for the platform.

All bot developers are welcome to share ideas for our Bot API with our @BotSupport account.

What messages will my bot get?

1. All bots, regardless of settings, will receive:

2. Bot admins and bots with privacy mode disabled will receive all messages except messages sent by other bots.

3. Bots with privacy mode enabled will receive:

Note that each particular message can only be available to one privacy-enabled bot at a time, i. e., a reply to bot A containing an explicit command for bot B or sent via bot C will only be available to bot A. Replies have the highest priority.

Why doesn't my bot see messages from other bots?

Bots talking to each other could potentially get stuck in unwelcome loops. To avoid this, we decided that bots will not be able to see messages from other bots regardless of mode.

Getting Updates

How do I get updates?

There are currently two ways of getting updates. You can either use long polling or Webhooks. Please note that it's not possible to get updates via long polling while an outgoing Webhook is set.

Long polling gives me the same updates again and again!

The getUpdates method returns the earliest 100 unconfirmed updates. To confirm an update, use the offset parameter when calling getUpdates like this:

offset = update_id of last processed update + 1

All updates with update_id less than or equal to offset will be marked as confirmed on the server and will no longer be returned.

I'm having problems with Webhooks.

If you've set up your webhook successfully, but are not getting any updates, please remember:

Please check out this new WEBHOOK GUIDE to learn all there is to know about webhooks!

I'm having trouble with my self-signed certificate!

Please take a look at this self-signed certificate guide we made just for you. If you've read it and still have a question, ping us on botsupport.

How can I make sure that Webhook requests are coming from Telegram?

If you'd like to make sure that the Webhook request comes from Telegram, we recommend using a secret path in the URL you give us, e.g. www.example.com/your_token. Since nobody else knows your bot's token, you can be pretty sure it's us.

How can I make requests in response to updates?

This is possible if you're using webhooks. The upside is that you need less requests, the downside — that in this case it's not possible to know that such a request was successful or get its result.

Whenever you receive a webhook update, you have two options:

1. Issue POST to https://api.telegram.org/bot<token>/method

2. Reply directly and give method as JSON payload in the reply

You may also want to look at our sample HelloBot, it offers a PHP implementation of this.

Handling Media

How do I download files?

Use the getFile method. Please note that this will only work with files of up to 20 MB in size.

How do I upload a large file?

Bots can currently send files of any type of up to 50 MB in size, so yes, very large files won't work for now. Sorry. This limit may be changed in the future.

Can I count on file_ids to be persistent?

Yes, file_ids can be treated as persistent.

Broadcasting to Users

My bot is hitting limits, how do I avoid this?

When sending messages inside a particular chat, avoid sending more than one message per second. We may allow short bursts that go over this limit, but eventually you'll begin receiving 429 errors.

If you're sending bulk notifications to multiple users, the API will not allow more than 30 messages per second or so. Consider spreading out notifications over large intervals of 8—12 hours for best results.

Also note that your bot will not be able to send more than 20 messages per minute to the same group.

How can I message all of my bot's subscribers at once?

Unfortunately, at this moment we don't have methods for sending bulk messages, e. g. notifications. We may add something along these lines in the future.

In order to avoid hitting our limits when sending out mass notifications, consider spreading them over longer intervals, e.g. 8-12 hours. The API will not allow bulk notifications to more than ~30 users per second, if you go over that, you'll start getting 429 errors.

See also: How to avoid hitting limits?


If you've got questions that are not answered on this page, ping us at @BotSupport in Telegram.
We welcome any suggestions for the Bot Platform and API.

Marvin's Marvellous Guide to All Things Webhook

We currently support two ways of processing bot updates, getUpdates and setWebhook. getUpdates is a pull mechanism, setwebhook is push. Although the concept of a webhook is fairly simple, the setup of the individual components has proven to be tricky for many. This guide provides some extra information for those of you brave enough to venture into the art of the webhook.

There are some advantages of using a webhook over getUpdates. As soon as an update arrives, we’ll kindly deliver it to your bot for processing.

This:

1. Avoids your bot having to ask for updates frequently. 2. Avoids the need for some kind of polling mechanism in your code.

Other advantages may include saving some potential CPU cycles and an increase in response time, these things however depend heavily on the usage pattern of your bot.

Setting a webhook means you supplying Telegram with a location in the form of a URL, on which your bot listens for updates. We need to be able to connect and post updates to that URL.

To ensure that we can do that, there are some basic requirements:

The short version

You'll need a server that:

That’s almost all there’s to it.
If you decide to limit traffic to our specific range of addresses, keep an eye on this document whenever you seem to run into trouble. Our IP-range might change in the future.

The longer version

The verbose version

How do I get a server with a domain name?

If you use a webhook, we have to deliver requests to your bot to a server we can reach. So yes, you need a server we can connect to. It can be anywhere in the galaxy, if you ensure we can reach the server by domain name (or at least via IP for a self-signed certificate), it will work just fine.

There are quite a few ways to get this done, as a novice however it's likely that you're not directly jumping at the chance of crafting this from scratch. Actually, as a novice, we recommend you don't. It's likely to be a complex and long ride.

If you got stuck here, make a choice:

If you're going with a hosted service, make sure to look for a hosting provider that not only supports your code’s needs, for example: support for your PHP version, but one that also handles SSL and allows you to create/deploy certificates.
How do I check for open ports or limit access to my bot?

So you have the hosting thing down and all is good so far, however, when you enter the address of your bot in your browser it seems unreachable.

Explaining every firewall or web server solution in detail isn't possible for us, which we hope you understand. If you’re running a hosted solution, you’re more likely to have a nice UI where you configure these settings. Head to your configuration panel and check all of them. If you’re on a Linux based VPS with shell access, we have some tips for you:

If you use iptables, make sure to actually SAVE after changing the configuration. On a Debian based system the iptables-persistent package is be a good option. RHEL/CentOS offers a service iptables save -command. A quick online search for "YOUROPERATINGSYSTEM save iptables" also helps.

That’s all for our examples. More information on best practices for setting up your firewall, on whichever operating system you prefer for your bot, is best found on the internet.

SSL/TLS, what is it and why do I have to handle this for a webhook?

You’re already familiar with it in some form or another. Whenever you see that (nicely green) lock in your browser bar, you know it’s reasonably safe to assume that you’ve landed on the site you actually wanted to visit. If you see the green lock, that's SSL/TLS in action. If you want to learn more about how SSL/TLS works in general, it's best to search the internet.

The main difference between getUpdates and a webhook is the way the connection takes place. getUpdates means you'll connect to our server, a webhook means we'll be connecting to your server instead. Connecting to your server has to be done secure, we have to know for sure it's you we're talking to after all. This means you'll have to handle all that server side encryption stuff, virtually presenting us with a green lock. If you use a web server for us to post to, you need to support SSL/TLS handling on the port/virtual host of your choice. An online search for “YOURWEBSERVER enable HTTPS” will help you.

Not using a regular web server? Have a look at our example page, most examples there include code for handling SSL/TLS in a webhook setup.

How do I check that I’m handling the right version?

You just read up on the whole SSL/TLS stuff, figured out that it’s not all that bad to setup and we add some more requirements. Here are some tips to check if you’re indeed supporting at least TLS1.2.

A certificate, where do I get one and how?

You need a certificate, pick on of these types;

---- Generating a 2048 bit RSA private keywriting new private key to yourprivatekey.key Enter PEM pass phrase: enter a password for your key here Verifying - Enter PEM pass phrase: confirm the entered password ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value,If you enter '.', the field will be left blank.----- Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: yourbotdomainname Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: ---
--- Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: yourbotdomainname What is the name of your organizational unit? [Unknown]: What is the name of your organization? [Unknown]: What is the name of your City or Locality? [Unknown]: What is the name of your State or Province? [Unknown]: What is the two-letter country code for this unit? [Unknown]: Is CN=test. telegram.org, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct? [no]: yes Enter key password for yourbotdomainname (RETURN if same as keystore password): ---

This generates the initial keystore, from which you can then create a CSR like this:

keytool -certreq -alias yourbotdomainname -keystore yourkeystore.jks -file yourbotdomainname.csr

--- Enter keystore password: ---

To validate your certificate the Common Name (CN) has to match your webhook domain. Example, if you’re using https://www.example.com/example.php as a webhook address, the certificate CN has to be www.example.com.
So you need an exact match of the FQDN you’re setting for the webhook

There is an exception, if you’re using a SAN (Subject Alternative Name) the webhook address can either match the CN of your certificate, OR one of the SANs provided in the certificate. In most cases you’ll be using the CN.

Create your CSR and supply the contents of the file to your CA. Most CA’s are kind enough to give you an example command of the input format they expect.

cat yoursigningrequest.csr or cat yourbotdomainname.csr
Lets you have a look at the CSR we just generated:

That doesn’t seem to informative, but we can deduce that the file is in PEM format (ASCII base64 encoded) and contains a certificate signing request. Luckily it is possible to look at the human readable contents of the CSR. Use the following commands to double check if all fields are set correctly.

Verify your CSR and supply it to your CA to get a certificate. We’ll use StartSSL as an example here. StartSSL allows you to set up to 5 names (SAN), Their intermediate certificate is also needed for a webhook to work, which makes for a nice complete example.

Go to the certificates wizard, enter the required hostname(s) for your SSL certificate (this is the CN you’ve also set in the CSR and an optional SAN).

In the example above we’ve chosen to set a CN (test. telegram.org), but also a SAN (sanexample.telegram.org) The CN given has to match the CN used for generating the CSR.
Set your CN (and optional SAN) and copy the contents of the yoursigningrequest.csr file.

Paste the contents, submit and you’re done.

Now you can download the created certificate directly. In the example used above you’ll receive a zip file with several PEM certificates. The root, intermediate and yourdomain certificate.
You need the intermediate and yourdomain to set a webhook with a StartSSL certificate.

You can inspect the set of certificates you’ve just downloaded.

With your fresh certificates at hand, you can now continue setting your webhook.

A self-signed certificate is generated and installed, to use the certificate for a self-signed webhook you'll have to export it in PEM format.

After following the above you'll end up with a nice self-signed certificate. You’ll still have to set the webhook, and handle SSL correctly.

How do I set a webhook for either type?

The setWebhook method is needed for both types. For a verified certificate with a trusted root CA, it’s enough to use the setWebhook method with just the URL parameter.

For a self-signed certificate an extra parameter is needed, certificate, with the public certificate in PEM format as data.

The -F means we’re using the multipart/form-data-type to supply the certificate, the type of the certificate parameter is inputFile. Make sure that you’re supplying the correct type.

Both parameters for the setWebhook method are classed as optional. Calling the method with an empty URL parameter can be used to clear a previously set webhook.

Keep in mind that the URL parameter starts with https:// when setting a webhook. By default that means we’re knocking at your door on port 443. If you want to use another port (80,88 or 8443), you’ll have to specify the port in the URL parameter.

Setting a verified webhook with an untrusted root

If you already have a verified certificate and our servers don’t trust your root CA, we have an alternative way for you to set a webhook. Instead of using the setWebhook method without the certificate parameter, you can use the self-signed method. Your CA's root certificate has to be used as an inputFile for the certificate parameter.

You can use these commands to quickly convert a DER formatted root certificate to PEM:

Once done, set your webhook with the root-pem-file and you’ll be good to go. If you need more pointers, have a look at the self-signed part of this guide.

Supplying an intermediate certificate

Once you’ve crafted your certificate, your CA might present you with a nice bundle. Most bundles contain a root certificate, your public certificate and sometimes an intermediate certificate. StartSSL is one of many CA’s that’ll supply such an intermediate beast. This certificate has to be supplied in the chain of certificates you’re presenting to us when we connect to your server. If an intermediate was used to sign your certificate but isn’t supplied to our servers, we won’t be able to verify the chain of trust and your webhook will not work.

If your webhook isn’t working and you’re wondering if the chain is complete:

Here’s an example of a complete chain, note that in this case 2 intermediate certificates have been supplied.

Even though your browser might not complain when visiting your page, an incomplete chain will not work for your webhook. If your chain is incomplete we have some tips to add them to your current setup:

The end result of all this is a complete certificate chain, backed by either a root certificate we trust or, in the case of an untrusted root, a root certificate you're supplying to us. Make sure to verify your setup again after adding the intermediate, once done, you're good to go!

Testing your bot with updates

ways to find out your own or someone else's, more about getting

Interesting in TG

Author Evgenia A. Reading 4 min Views 2.9k.

Understanding what a bot token in Telegram is is simple - it is a unique alphanumeric program identifier that is uniquely associated with it. Used when working through the bot-API interface for accurate identification. nine0003 Bot token in Telegram is used for precise identification.

Content

  1. Token and its purpose in Telegram
  2. How to use your bot token - an example

Token and its purpose in Telegram

When a new bot is formed, it is assigned a unique code called a token. nine0003

Its function is to uniquely identify the application that has accessed the Bot-API service of the messenger. In the future, calls to the robot are made using a unique number.

How to use your bot token - an example

All robots receive a unique identifier of the form 635421:DJQ-GSJ4321gh3v3-zyx15W1v3u321ew22 upon registration. All calls to the Bot API are made by requests like //api.telegram. org/bot/method_name. The API call string for this token will take the form //api.telegram.org/bot635421:DJQ-GSJ4321gh3v3-zyx15W1v3u321ew22/getMe. nine0003

Ways to find out the bot token in Telegram

There are several ways to find out the bot token, such as: may take decades;

  • hacking of correspondence with a bot issuing tokens, however, according to the creator of Telegram, this is impossible, such cases are still unknown;
  • Capturing the account that the bot belongs to, which will require access to the owner's smartphone. nine0014 You can find out the bot token by enumeration of all possible combinations.

    For an ordinary user, the probability of taking possession of a bot is small. It follows that the offer of services and software for hacking appears to be an attempt to sell low-quality goods or unfulfillable obligations, i.e. fraud.

    Someone else's bot

    Obtaining someone else's token is tantamount to hacking it, and may be prosecuted under administrative or criminal law. Attempts to find out the code fraudulently are also punishable by law. Scripts have been written to deceive Telegram-bot, the main task of which is to try to confuse the program and break the scenario of its work. I will pay attention to the precautions that reduce the likelihood of an account being hacked:

    Despite the statements and the $300,000 bonus promised by the creator of the messenger, no one has yet been able to find a solution to the problem.

    Own bot

    It is convenient to get a robot token using @BotFather.

    @BotFather allows you to get a robot token.

    Log in to your account and do the following:

    How to get a token for a bot in TG

    A simple and quick way to get a token in Telegram is to use specialized programs, information about which is posted on the official website of the messenger. Steps to get the ID:

    1. In the search box, enter the name of the program: Botfarther.
    2. Find @Botfarther_bot. nine0014
    3. Launch it by pressing the "Start" button at the bottom of the smartphone window.
    4. If you need help, type /help and see the specifics of the current version.
    5. Run the /mybots command to view the list of bots and select the one you want.
    6. Click on the name of the robot of interest, in response you will receive its token, which has the format "270485614: AAHfiqksKZ8WmR2zSjiQ7_v4TMAKdiHm9T0".
    7. Save for later use.

    If there are no registered robots in the account, the identifier is not displayed. You can check the correct functioning of the system by creating a new robot with the /newbots command. Successful execution of all instructions will end with the output of the token in the messenger window.

    Overview