馃摜 Descarga Cualquier Archivo en Tu DietPi: Crea un Bot de Telegram Eficiente 馃殌
En este tutorial, aprender谩s c贸mo crear un bot de Telegram que te permitir谩 descargar cualquier archivo que le env铆es en tu dispositivo DietPi. ¡Vamos all谩!
1. Crear un Nuevo Bot en Telegram 馃
- Abre la aplicaci贸n de Telegram en tu dispositivo.
- Busca el bot llamado @BotFather.
- Inicia una conversaci贸n con @BotFather y usa el comando
/newbot
. - Sigue las instrucciones para asignar un nombre y un usuario a tu nuevo bot.
- Al finalizar, @BotFather te proporcionar谩 un token que necesitar谩s m谩s adelante. ¡Gu谩rdalo en un lugar seguro!
2. Obtener el api_id
y api_hash
馃攽
- Visita My Telegram e inicia sesi贸n con tu n煤mero de tel茅fono.
- Crea una nueva aplicaci贸n haciendo clic en "API Development Tools" y luego en "Create new application".
- Completa los campos requeridos y env铆a el formulario.
- Se te proporcionar谩 un api_id y un api_hash. ¡Gu谩rdalos junto con tu token!
3. Configurar el Entorno en DietPi 馃洜️
- Accede a tu dispositivo DietPi v铆a SSH o directamente si tienes acceso f铆sico.
- Actualiza los paquetes y el sistema operativo:
sudo apt update && sudo apt upgrade -y
4. Instalar Python y las Librer铆as Necesarias 馃悕
- Instala Python y Pip:
sudo apt install python3 python3-pip -y
- Instala la librer铆a
telethon
:pip3 install telethon
5. Escribir el C贸digo del Bot 馃捇
Crea un archivo llamado telegram_bot.py
y pega el siguiente c贸digo. Aseg煤rate de reemplazar 'YOUR_API_ID'
, 'YOUR_API_HASH'
, 'YOUR_BOT_TOKEN'
y 'YOUR_DIRECTORY'
con tus propios valores.
import asyncio
from telethon import TelegramClient, events
import os
from telethon.tl.custom import Button
# Configura tus credenciales aqu铆
api_id = 'YOUR_API_ID'
api_hash = 'YOUR_API_HASH'
bot_token = 'YOUR_BOT_TOKEN'
client = TelegramClient('bot', api_id, api_hash).start(bot_token=bot_token)
download_progress = {}
download_dir = 'YOUR_DIRECTORY' # Directorio de descargas
@client.on(events.NewMessage(pattern='/start'))
async def start(event):
buttons = [
Button.inline("Enviar Archivo 馃摛", b"send_file"),
Button.inline("Ver Progreso 馃搱", b"progress"),
Button.inline("Listar Descargas 馃搨", b"list_downloads")
]
await event.respond('¡Hola! Elige una opci贸n:', buttons=buttons)
raise events.StopPropagation()
@client.on(events.CallbackQuery(pattern=b'send_file'))
async def send_file(event):
await event.respond('Por favor, env铆ame un archivo.')
raise events.StopPropagation()
@client.on(events.CallbackQuery(pattern=b'progress'))
async def progress_query(event):
downloaded, total = download_progress.get(event.chat_id, (0, 1))
downloaded_mb = downloaded / (1024 * 1024)
total_mb = total / (1024 * 1024)
progress_message = f'Progreso de descarga: {downloaded_mb:.2f} MB de {total_mb:.2f} MB ({(downloaded / total) * 100:.2f}%)'
await event.respond(progress_message)
raise events.StopPropagation()
@client.on(events.CallbackQuery(pattern=b'list_downloads'))
async def list_downloads(event):
if os.path.exists(download_dir):
download_list = os.listdir(download_dir)
if download_list:
files = '\n'.join(download_list)
await event.respond(f'Archivos en el directorio de descargas:\n{files}')
else:
await event.respond('El directorio de descargas est谩 vac铆o.')
else:
await event.respond('El directorio de descargas no existe.')
raise events.StopPropagation()
@client.on(events.NewMessage)
async def download(event):
if event.message.media:
await event.respond('Iniciando la descarga del archivo... Usa el comando /progress para ver el progreso.')
download_progress[event.chat_id] = (0, event.message.file.size)
file_path = await event.message.download_media(
file=download_dir,
progress_callback=lambda d, t: download_progress.update({event.chat_id: (d, t)}))
file_name = os.path.basename(file_path)
await event.respond(f'Archivo {file_name} descargado en: {file_path}')
del download_progress[event.chat_id]
else:
await event.respond('Ponte c贸modo mientras se descarga o env铆ame otro archivo. Para otros comandos escribe /ayuda.')
client.start()
client.run_until_disconnected()
6. Ejecutar el Bot ▶️
- Abre una terminal y navega hasta el directorio donde guardaste
telegram_bot.py
. - Ejecuta el bot con el siguiente comando:
python3 telegram_bot.py
- Ahora, en Telegram, inicia una conversaci贸n con tu bot y prueba las funciones.
Funcionalidades del Bot 馃帀
- Enviar Archivo 馃摛: Permite al usuario enviar un archivo para que el bot lo descargue.
- Ver Progreso 馃搱: Muestra el progreso de la descarga en MB y porcentaje.
- Listar Descargas 馃搨: Lista los archivos presentes en el directorio de descargas.
Nota: Aseg煤rate de que el directorio que especificaste en download_dir
existe y que el bot tiene permisos