> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Host Telegram Bots

> Learn to create and host Telegram bots on Square Cloud. Complete tutorial with configuration, deployment, and practical examples in Node.js and Python.

export const RecommendedPlan = ({lang, plan, tier, cpu, appType}) => {
  const url = `https://squarecloud.app/${lang}/pay?plan=${plan.toLowerCase()}&tier=${tier}`;
  if (lang == 'en') {
    return <Note>
        <b>Wondering how much RAM and CPU your plan needs to host {appType}?</b><br />
        Don't worry, we're here to help.
        Our <a href={url}>{plan}</a> plan offers <b>{tier}GB</b> of RAM and <b>{cpu}vCPU</b>, which should be sufficient for most {appType}. 
        However, if you are working on a larger project and seeking extra stability, we recommend considering our <b>Pro</b> plan. With additional resources, you can maintain stability even during demand spikes. 
        To purchase, simply click <a href="https://squarecloud.app/en/pay?plan=pro">here</a>.
      </Note>;
  } else {
    return <Note>
          <b>Está se perguntando quanta RAM e CPU seu plano precisa para hospedar {appType}?</b><br />
          Não se preocupe, estamos aqui para ajudar.
          Nosso plano <a href={url}>{plan}</a> oferece <b>{tier}GB</b> de RAM e <b>{cpu}vCPU</b>, o que deve ser suficiente para a maioria dos {appType}.
          No entanto, se você estiver trabalhando em um projeto maior e precisar de mais estabilidade, recomendamos considerar nosso plano <b>Pro</b>.
          Com recursos adicionais, você pode manter a estabilidade mesmo durante picos de demanda.
          Para comprar, basta clicar <a href={`https://squarecloud.app/${lang}/pay?plan=pro`}>aqui</a>.
        </Note>;
  }
};

export const appType_0 = "a Telegram bots"

## Introduction

To develop and host {appType_0} on Square Cloud, it's essential to follow a structured sequence of configurations and prerequisites. This technical guide will cover the entire process, from initial setup to production deployment.

### Prerequisites

* **Square Cloud Account**: Register through the [signup page](https://squarecloud.app/en/signup) using your email.
* **Active Paid Plan**: Ensures dedicated resources and optimized performance for your application. Check our [available plans](https://squarecloud.app/en/pricing) and choose the most suitable for your needs.

<RecommendedPlan appType="Telegram bots" plan="Hobby" tier="2" cpu="2" lang="en" />

## Creating project

A Telegram account is essential for testing and interacting with your bot. If you don't have one, visit the [official Telegram website](https://telegram.org/) to create your account for free.

### Bot application on Telegram

<Steps>
  <Step title="Getting Started" icon="rocket">
    Access [Telegram Web](https://web.telegram.org/a/) and search for the official **BotFather** bot, responsible for creating and managing bots on the platform.

    <Frame>
      <img src="https://cdn.squarecloud.app/docs/articles/telegram/getting-started.webp" alt="Finding BotFather on Telegram" style={{ borderRadius: "0.2rem" }} />
    </Frame>
  </Step>

  <Step title="Obtaining the Authentication Token" icon="key">
    Start a conversation with BotFather and type `/start`. Then, select the `/newbot` option to create a new bot. The system will ask for a name for your bot and, after confirmation, will automatically generate the necessary authentication token.

    <Frame>
      <img src="https://cdn.squarecloud.app/docs/articles/telegram/generating-token.webp" alt="Generating Telegram bot token with BotFather" style={{ borderRadius: "0.2rem" }} />
    </Frame>
  </Step>
</Steps>

<Warning>**Critical Security**: Keep your bot token absolutely secret. This token grants full control over the bot and should be treated as confidential information.</Warning>

### Developing project

The choice of library or framework depends on the programming language you intend to use. Below are some of the most popular options:

<Tabs>
  <Tab title="Node.js - grammY">
    **Environment Setup**

    1. Verify that Node.js is installed on your system. Otherwise, download it from the [official Node.js website](https://nodejs.org/).

    2. Initialize a new Node.js project:

    ```bash Terminal theme={null}
    npm init -y
    ```

    3. Install the grammY library:

    ```bash Terminal theme={null}
    npm install grammy
    ```

    **Basic Implementation**

    4. Create the main file (`index.js`) with the following structure:

    ```javascript index.js theme={null}
    const { Bot } = require("grammy");

    // Authentication token configuration
    const token = "YOUR_TOKEN_HERE";

    // Bot initialization
    const bot = new Bot(token);

    (async () => {
      // Get bot information
      const botInfo = await bot.api.getMe();
      const botName = botInfo.username;

      // Define handler for text messages
      bot.on("message:text", async (ctx) => {
        const userMsg = ctx.message.text;
        const responseMsg = `${botName} responds: ${userMsg}`;
        await ctx.reply(responseMsg);
      });

      // Start the bot
      bot.start();
      console.log(`Bot ${botName} started successfully!`);
    })();
    ```
  </Tab>

  <Tab title="Python - telebot">
    **Environment Setup**

    1. Verify that Python and pip are installed. Otherwise, download them from the [official Python website](https://www.python.org/).

    2. Install the pyTelegramBotAPI library:

    ```bash Terminal theme={null}
    pip install pyTelegramBotAPI
    ```

    **Basic Implementation**

    3. Create the main file (`main.py`):

    ```python main.py theme={null}
    import telebot

    # Authentication token configuration
    TOKEN = "YOUR_TOKEN_HERE"

    # Bot initialization
    bot = telebot.TeleBot(TOKEN)

    # Define handler for non-command messages
    @bot.message_handler(func=lambda message: not message.text.startswith('/'))
    def echo_handler(message):
        # Get bot information
        bot_info = bot.get_me()
        bot_name = bot_info.username
        # Format response message
        response_msg = f"{bot_name} responds: {message.text}"
        # Reply to the user
        bot.reply_to(message, response_msg)

    # Main execution
    if __name__ == '__main__':
        bot_info = bot.get_me()
        print(f"Bot {bot_info.username} started successfully!")
        # Start polling
        bot.infinity_polling()
    ```

    4. Create the `requirements.txt` file to manage dependencies:

    ```txt requirements.txt theme={null}
    pyTelegramBotAPI
    ```
  </Tab>
</Tabs>

## Deploying

After preparing your project files, you can now upload them to Square Cloud and host your project.
To do so, create a ZIP file containing all your project files.

### Via dashboard

<Steps>
  <Step title="Access the Upload Page">
    Access the [upload page](https://squarecloud.app/en/dashboard/new) and upload your project zip file.
  </Step>

  <Step title="Configure Your Environment">
    After uploading your zip, you will need to configure the name, main file or runtime environment and other settings for your project.\
    If you are uploading a web project, make sure to select "Web Publication" and set a subdomain to your project.
  </Step>

  <Step title="Deploy Your Project">
    Finally, click on the "Deploy" button to host your project on Square Cloud.\
    After deployment, you can monitor your project's status and logs from the dashboard.

    <Frame>
      <img src="https://cdn.squarecloud.app/docs/articles/dashboard/uploading.gif" alt="Uploading application to Square Cloud" style={{ borderRadius: "0.2rem" }} />
    </Frame>
  </Step>
</Steps>

### Via CLI

To use this method, you need to create a config file named `squarecloud.app` in the root directory of your project. This file will contain the necessary configuration for your project.

<Card title="Learn more about: how to create the configuration file for Square Cloud." icon="link" href="/en/getting-started/config-file">
  The squarecloud.app file is a configuration file that will be used to configure your application; it will be used to define your environment.
</Card>

<Steps>
  <Step title="Install the CLI">
    First, you need to have the CLI installed in your environment. If you don't have it yet, run the following command in your terminal:

    ```
    npm install -g @squarecloud/cli
    ```

    If you already have it, we recommend updating it. To do this, run the following command in your terminal:

    <Tabs>
      <Tab title="Windows">
        ```bash theme={null}
        squarecloud update
        ```
      </Tab>

      <Tab title="Linux, macOS, and WSL">
        ```bash theme={null}
        curl -fsSL https://cli.squarecloud.app/install | bash
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Authenticate">
    Now, to authenticate and use other CLI commands, you will find your authorization key [here](https://squarecloud.app/en/account/security) by clicking on "Request API Key". After obtaining your authorization key, run the following command:

    ```bash theme={null}
    squarecloud auth login
    ```
  </Step>

  <Step title="Upload Your Project">
    Finally, to deploy your application to Square Cloud using the CLI, you need to run the following command:

    ```bash theme={null}
    squarecloud upload 
    ```

    Or if you created the zip manually, you can use:

    ```bash theme={null}
    squarecloud upload --file <path/to/zip> 
    ```
  </Step>
</Steps>

## Testing the bot

After successful deployment, locate your bot on Telegram and send a test message. The bot should respond by echoing your message, confirming the correct implementation functionality.

<Frame>
  <img src="https://cdn.squarecloud.app/docs/articles/telegram/testing-bot.webp" alt="Testing the Telegram bot after deployment" style={{ borderRadius: "0.2rem" }} />
</Frame>

## Additional Resources

To deepen your knowledge about Telegram bot development, consult the [official pyTelegramBotAPI documentation](https://pypi.org/project/pyTelegramBotAPI/). The documentation offers detailed guides, advanced tutorials, and complete API reference.

## Contact us

If you continue facing **technical difficulties**, our **specialized support team** is available to assist you. [**Contact us**](https://squarecloud.app/en/support) and we'll be happy to help you resolve any issue.
