Bot para Sorteos de Instagram
Código en Python que desarrollé para facilitar la participación en sorteos de Instagram donde es necesario mencionar a personas en los comentarios.
Pueden descargar el bot desde el siguiente enlace:
Este paquete incluye:
- El bot listo para usar.
- Tres archivos Excel con listas de nombres predefinidos.
Instrucciones de uso
- Instalar el bot y ejecutarlo.
- Cargar un archivo Excel con nombres predefinidos.
- En la sección "Nombres/ciclo", seleccionar 1, 2 o 3, según el número de menciones requeridas por el sorteo.
- Hacer clic en "Iniciar" y colocar el cursor en la caja de comentarios de la publicación del sorteo.
- El bot comenzará a mencionar automáticamente a las cuentas en los comentarios.
Funcionamiento del bot
- El bot debe estar en una carpeta junto con:
- bot.pyb (el script principal).
- bot.bat (para ejecutar el bot fácilmente).
- Archivos Excel con nombres (nombres.xlsx, nombres1.xlsx, etc.).
- Para generar el archivo de nombres, pueden usar una extensión de Chrome como IG Export, extrayendo seguidores de una cuenta aleatoria y ajustando el archivo (dejando solo la columna "A" con los nombres).
Características
- Solicita el archivo Excel con los nombres.
- Permite elegir cuántos nombres mencionar por comentario.
- Proporciona 5 segundos para colocar el cursor en la caja de comentarios antes de comenzar.
- Envía comentarios con un delay de 1 minuto entre cada uno para evitar bloqueos temporales de Instagram.
- Tecla F8 para pausar y reanudar el bot desde el mismo punto.
Código:
import time
import pyautogui
import pandas as pd
import random
import os
import keyboard
def seleccionar_archivo():
print("Archivos disponibles:")
archivos = [f for f in os.listdir() if f.startswith("Nombres") and f.endswith(".xlsx")]
for i, archivo in enumerate(archivos):
print(f"{i + 1}. {archivo}")
while True:
try:
seleccion = int(input("Selecciona el número del archivo que deseas usar: "))
if 1 <= seleccion <= len(archivos):
return archivos[seleccion - 1]
else:
print("Número fuera de rango. Intenta de nuevo.")
except ValueError:
print("Entrada inválida. Introduce un número.")
def esperar_reanudacion():
print("\nBot pausado. Presiona F8 para reanudar...")
keyboard.wait("F8")
print("Bot reanudado.")
try:
archivo_nombres = seleccionar_archivo()
print(f"Archivo seleccionado: {archivo_nombres}")
try:
df = pd.read_excel(archivo_nombres)
nombres = df["nombres"].tolist()
except Exception as e:
print(f"Error al leer el archivo Excel: {e}")
print("Asegúrate de que el archivo tiene una columna llamada 'nombres'.")
input("Presiona Enter para salir...")
exit()
cantidad = int(input("¿Cuántos nombres quieres escribir por ciclo? (1, 2 o 3): "))
print("Posiciona el mouse donde quieres escribir en 5 segundos...")
time.sleep(5)
x, y = pyautogui.position()
print("Bot iniciado. Presiona F8 en cualquier momento para pausar/reanudar.")
while nombres:
if keyboard.is_pressed("F8"):
esperar_reanudacion()
nombres_seleccionados = random.sample(nombres, min(cantidad, len(nombres)))
for nombre in nombres_seleccionados:
nombres.remove(nombre)
pyautogui.click(x, y)
time.sleep(0.3)
pyautogui.hotkey("ctrl", "a", interval=0.05)
pyautogui.press("delete")
for nombre in nombres_seleccionados:
pyautogui.hotkey("ctrl", "alt", "2")
pyautogui.write(nombre)
pyautogui.press("space")
time.sleep(0.8)
pyautogui.keyDown("enter")
time.sleep(1)
pyautogui.keyUp("enter")
print(f"¡Comando ejecutado! Nombres escritos: {', '.join(nombres_seleccionados)}")
if nombres:
print("Esperando 60 segundos antes del próximo ciclo...")
for i in range(60, 0, -1):
if keyboard.is_pressed("F8"):
esperar_reanudacion()
print(f"Tiempo restante: {i} segundos", end="\r")
time.sleep(1)
print(" " * 30, end="\r")
print("\nTodos los nombres han sido procesados. Bot detenido.")
input("Presiona Enter para salir...")
except Exception as e:
print(f"Ocurrió un error inesperado: {e}")
print("Revisa el archivo Excel o la configuración del bot.")
input("Presiona Enter para salir...")
Disfrutad.
Última edición por un moderador: