Migrar um bot do Telegram do PythonAnywhere, do Replit, do Railway ou do seu PC é copiar os arquivos dele, colar o mesmo token, trocar para polling se ele usava webhook e iniciá-lo aqui depois que a cópia antiga for parada. O token continua o mesmo, então o bot mantém o @usuário, as conversas e os usuários. Os passos:
- Tenha um plano de bot configurado para o Telegram, com a linguagem em que o seu bot foi escrito.
- Copie os seus arquivos em Files (zip, envio, Extrair), por SFTP ou do Git, com
requirements.txtoupackage.json. - Defina o Arquivo de entrada e o Runtime na página Bot, seção Código.
- Cole o token na página Bot, seção Telegram, e clique em Conectar.
- Importe as suas outras configurações com Colar um arquivo .env na seção Ambiente.
- Se o seu bot usava um webhook, mude-o para polling.
- Pare a cópia antiga, clique em Iniciar aqui e acompanhe o Console até o seu bot entrar.
Cada passo é explicado abaixo.
Antes de começar
- Reúna o código do bot e os arquivos de dados dele (arquivos SQLite, arquivos JSON, configurações salvas) em uma pasta. De uma hospedagem, baixe-os como um zip ou copie-os do gerenciador de arquivos dela.
- Anote todas as configurações que a hospedagem antiga deu ao seu bot: o arquivo
.envdele ou as variáveis que você definiu no painel dela. - Planeje parar a cópia antiga logo antes de iniciar a nova. O Telegram deixa só uma cópia de um bot pedir mensagens: duas cópias se tiram do caminho com
409 Conflict.
1. Tenha um plano configurado para o Telegram
Em Hospedagem de bot do Telegram, clique em Criar servidor em um plano, responda Para qual plataforma é o seu bot? com Telegram e escolha a linguagem do seu bot: Node.js, Python, Java, C# (.NET), Bun, Deno, Go ou Rust. O STARTER (0,5 GB) basta para a maioria dos bots: veja python-telegram-bot vs aiogram na PlayNHost para a memória que medimos.
Já tem um plano de bot configurado para o Discord? Na página Bot, seção Discord, card Para que serve este bot?, escolha Telegram e confirme com Trocar. Linguagem errada? Na seção Código, clique em Mudar o que roda ao lado de Runtime.
2. Copie os arquivos
- Bot pequeno: compacte a pasta em um zip, envie o zip em Files, marque-o e clique em Extrair.
- Pasta grande: use SFTP. Dados do SFTP em Files dá o endereço; você entra com a sua senha do painel.
- Código no GitHub: conecte o repositório e envie só os seus arquivos de dados. Veja Como fazer deploy e atualizar seu bot pelo GitHub.
Deixe de fora venv, .venv, __pycache__ e node_modules: o servidor instala os pacotes sozinho. A sua pasta principal aqui é /home/container. Se o seu código abre arquivos de dados por um caminho completo da hospedagem antiga (como /home/yourname/mybot/data.db), troque-o por um caminho relativo à pasta principal. Mais: Como enviar o código do seu bot.
3. Pacotes e arquivo de entrada
Na hospedagem antiga, você pode ter instalado os pacotes à mão em um console. Aqui eles vêm de um arquivo:
- Python: um
requirements.txtcom um pacote por linha, por exemplopython-telegram-botouaiogram. Escreva nele os nomes dos pacotes que o seu código importa. Outro nome de arquivo ou outra pasta? Defina em Arquivo de requisitos no card Configurações da seção Código. - Node.js e Bun: o seu
package.jsoncom asdependencies.
Em Python, Node.js e Bun, os pacotes são instalados na primeira inicialização. Depois disso, eles só são instalados de novo quando você os muda (a lista de pacotes, o arquivo de pacotes ou a versão do runtime), quando falta o node_modules ou uma vez por dia. Nesse meio tempo, o Console diz:
[PlayNHost] Packages are up to date. They install again when you change them, or after a day.
Na página Bot, seção Código, card Como ele roda, defina o Arquivo de entrada como o arquivo que a hospedagem antiga iniciava (por exemplo main.py ou src/index.js; bot.py e index.js são os padrões) e escolha a mesma versão do Runtime. Clique no botão Salvar ao lado de cada campo que você mudar. Detalhes por linguagem: Python, Node.js.
4. O token
- Na página Bot, seção Telegram, cole o token do bot e clique em Conectar. O painel o confere com o Telegram e mostra o @usuário do seu bot. Perdeu o token? No @BotFather, envie
/mybots, escolha o seu bot e depois API Token. - Seu código recebe o token como
TELEGRAM_BOT_TOKEN, e também comoBOT_TOKEN,TOKEN,TELEGRAM_TOKENeTELOXIDE_TOKEN. Se o seu código lê outro nome, troque essa linha por um destes. - Se o token está escrito no seu código ou em um
config.json, troque-o pela variável de ambiente, por exemploos.environ["TELEGRAM_BOT_TOKEN"]em Python ouprocess.env.TELEGRAM_BOT_TOKENem Node.js. Apague-o de qualquer arquivo.envque você enviou.
5. As outras configurações
- Abra a seção Ambiente e clique em Colar um arquivo .env.
- Cole o seu
.envantigo ou as variáveis do painel da hospedagem antiga. A linha do token fica marcada como Ignorada com Seu token do Telegram vai na página Bot, Telegram, por isso essa linha é ignorada. Seu código lê esse valor como TELEGRAM_BOT_TOKEN, e também como BOT_TOKEN, TOKEN, TELEGRAM_TOKEN e TELOXIDE_TOKEN. - Confira a lista (nomes que parecem segredos recebem um selo Segredo) e clique no botão de importar, por exemplo Importar 3 variáveis.
Usa python-dotenv? As variáveis de Ambiente já estão em os.environ, e load_dotenv() não as sobrescreve. Tinha um banco de dados MySQL? Crie um na página Bancos de dados: Como usar um banco de dados com seu bot.
6. De webhook para polling
Algumas hospedagens rodam um bot com webhook, por exemplo por meio de um app web no PythonAnywhere. Aqui o seu bot usa long polling: ele pede ao Telegram as mensagens novas e não precisa de endereço próprio. Um webhook precisa de um endereço HTTPS público, que esses planos ainda não incluem. Mude o início do seu bot:
| Biblioteca | Remova | Use |
|---|---|---|
| python-telegram-bot | application.run_webhook(...) | application.run_polling() |
| aiogram 3 | O app aiohttp com SimpleRequestHandler | await dp.start_polling(bot) |
| pyTelegramBotAPI | bot.set_webhook(...) e a rota do Flask | bot.infinity_polling() |
| grammY | webhookCallback(bot, ...) | bot.start() |
| Telegraf | bot.launch({ webhook: ... }) | bot.launch() |
Um pequeno servidor web que só mantinha o bot acordado na hospedagem antiga não é necessário aqui: o bot roda o tempo todo.
O webhook continua configurado no seu bot, no Telegram, até que algo o remova. python-telegram-bot e grammY o removem sozinhos quando o polling começa. Com outro código, a seção Telegram mostra Há um webhook configurado neste bot: clique em Remover webhook e confirme. As mensagens em espera são mantidas, então o seu bot as busca aqui.
7. Faça a troca
- Pare o bot na hospedagem antiga: uma tarefa sempre ativa ou agendada no PythonAnywhere, um deploy no Replit ou no Railway, ou a janela de terminal ou o script no seu PC.
- Clique em Iniciar aqui e acompanhe o Console até o seu bot entrar. Imprima uma linha como
Logged in as @your_botquando ele estiver pronto: o chip em Visão geral passa então para Online no Telegram. - Envie um comando ao seu bot no Telegram. Depois cancele a hospedagem antiga.
Se algo não funcionar
- Seu bot também está rodando em outro lugar acima do console: a cópia antiga ainda está rodando. Pare-a e reinicie aqui. Veja Como corrigir o erro 409 Conflict do bot do Telegram.
- Há um webhook configurado no seu bot: clique em Remover o webhook e depois reinicie.
- Um nome de arquivo errado, uma linguagem errada ou um pacote faltando aparece nos primeiros segundos do console, muitas vezes como um aviso. Veja Por que seu bot continua parando.
- O bot inicia, mas perdeu os dados: confira se os arquivos de dados mantiveram a mesma estrutura de pastas e se o seu código os abre por um caminho relativo a
/home/container.



