Premessa
Prima di procedere, è fondamentale sapere che per poter eseguire correttamente gli script per la rimozione di massa degli utenti da un gruppo Telegram, è necessario avere i permessi di amministratore nel gruppo in questione. Idealmente, è preferibile essere il proprietario del gruppo per assicurarsi di avere tutte le autorizzazioni necessarie ad espellere gli utenti tramite API.
Se non hai i permessi di amministratore con accesso alla gestione dei membri, gli script non saranno in grado di rimuovere nessuno e riceverai errori di autorizzazione.
Nota importante sul tipo di gruppo Telegram
Gli script presentati in questo articolo sono stati testati con successo su un gruppo pubblico di tipo supergroup. Questo tipo di gruppo consente una gestione avanzata dei membri e supporta pienamente l’utilizzo delle API di Telegram tramite librerie come Telethon.
Non è garantito il corretto funzionamento degli script su gruppi privati, poiché non sono stati testati in quel contesto. I gruppi privati potrebbero presentare restrizioni diverse, soprattutto in termini di accesso tramite API e visibilità dei membri, che potrebbero impedire la rimozione automatica degli utenti.
Per ottenere i migliori risultati, assicurati che:
- Il gruppo sia pubblico o comunque accessibile con un
@username
(es.@nomegruppo
), se intendi identificarlo tramite alias nello script. - O in alternativa che il gruppo sia stato convertito in supergroup (Telegram lo fa automaticamente sopra i 200 membri o manualmente tramite le impostazioni del gruppo).
Se desideri testare questi script su un gruppo privato, fallo con cautela e monitora eventuali errori durante l’esecuzione, poiché il comportamento potrebbe variare.
Installazione di Python e delle librerie necessarie
Prima di iniziare a utilizzare gli script per la rimozione di massa degli utenti, è necessario installare Python e alcune librerie essenziali per interagire con l’API di Telegram. Ecco i passaggi da seguire:
- Installare Python:
- Vai sul sito ufficiale di Python e scarica la versione più recente di Python.
- Durante l’installazione, assicurati di spuntare la casella “Add Python to PATH”.
- Installare le librerie necessarie:
- Apri il terminale o la linea di comando e digita il seguente comando per installare
telethon
, una libreria Python che consente di interagire con Telegram tramite le sue API:pip install telethon
- Apri il terminale o la linea di comando e digita il seguente comando per installare
- Altre librerie:
- Se desideri aggiungere un po’ di casualità e ritardi nel comportamento dello script per evitare il ban, dovrai installare anche le librerie
random
etime
, che sono parte della libreria standard di Python, quindi non è necessario installarle separatamente.
- Se desideri aggiungere un po’ di casualità e ritardi nel comportamento dello script per evitare il ban, dovrai installare anche le librerie
Con queste librerie installate, puoi procedere a configurare lo script e avviare il processo di eliminazione di massa degli utenti.
Gestire il tempo di attesa per evitare il ban di Telegram
Telegram applica delle restrizioni alle azioni ripetute troppo velocemente per evitare l’abuso delle sue API. Quando si rimuovono un gran numero di utenti da un gruppo, è importante non eseguire le azioni troppo rapidamente, altrimenti l’account potrebbe essere temporaneamente sospeso o bannato.
Uno degli errori comuni che potresti incontrare è il messaggio:
A wait of 117 seconds is required (caused by EditBannedRequest)
Questo significa che Telegram sta chiedendo una pausa tra le azioni, in questo caso di 117 secondi. La soluzione è semplice: bisogna fare in modo che lo script attenda il tempo necessario per evitare di eseguire troppe azioni in un breve intervallo di tempo.
Come gestire il tempo di attesa:
- Quando l’errore sopra citato si verifica, il programma può automaticamente fare una pausa di 117 secondi (o un po’ di più, per essere sicuri), come indicato dal messaggio di errore.
- Aggiungere una pausa di attesa nel codice per far sì che ogni azione venga eseguita in maniera graduale ridurrà il rischio di ban temporaneo o permanente.
Ecco un esempio di codice inserito in questi script che gestisce il ritardo tra le espulsioni:
# Ritardo per evitare il ban if "A wait of" in str(e): wait_time = int(str(e).split(" ")[4]) + 1 # Aggiungi 1 secondo per sicurezza print(f"Attendere {wait_time} secondi prima di procedere con la prossima espulsione...") time.sleep(wait_time) # Pausa per evitare un ban
Questo snippet controlla se l’errore contiene un messaggio di “wait” (attesa), estrae il tempo necessario e fa in modo che lo script attenda il tempo indicato, con un piccolo margine di sicurezza (1 secondo in più).
Inoltre, è una buona pratica aggiungere un ritardo casuale tra 3 e 6 secondi tra ogni espulsione per sembrare meno automatizzati e ridurre ulteriormente il rischio di ban. Ad esempio:
# Ritardo casuale tra 3 e 6 secondi per evitare il ban delay = random.randint(3, 6) print(f"Attendo {delay} secondi prima di espellere il prossimo utente...") time.sleep(delay)
Implementando questi accorgimenti, il rischio di essere bloccati o di vedere l’account sospeso sarà significativamente ridotto.
Questi due script che ti mostrerò sono pensati per risolvere proprio questi problemi.
Differenza tra nome e username su Telegram
Su Telegram, è importante distinguere tra:
- Nome: è il nome visibile che ogni utente può modificare liberamente. Può essere identico per più utenti (es. “Mario Rossi”).
- Username: è un identificatore univoco preceduto da
@
(es.@mariorossi123
). Ogni utente può sceglierlo, ma non è obbligatorio averlo.
L’username è l’unico elemento pubblico che identifica in modo univoco un utente su Telegram, rendendolo utile per filtrare o gestire i membri di un gruppo.
NOTA BENE: Su Telegram, se non imposti un username personalizzato, il sistema ti assegna comunque un identificativo numerico (ad esempio: @7422139541
) che è visibile solo tramite le API o tramite alcuni bot, ma non è visibile agli altri utenti nella normale interfaccia dell’app. Questo identificativo serve a riconoscere in modo univoco gli utenti anche senza un username pubblico.
Script per eliminare gli utenti senza username
Il primo script rimuove tutti gli utenti che non possiedono un username. Questo è particolarmente utile quando hai bot o account sospetti che non hanno username, ma sono membri del gruppo.
# Librerie di terze parti
from telethon import TelegramClient
import asyncio
import random
# --- CONFIGURAZIONE ---
api_id = 'your_api_id' # Ottieni il tuo API ID da https://my.telegram.org
api_hash = 'your_api_hash' # Ottieni il tuo API Hash da https://my.telegram.org
group_chat = 'nome_del_gruppo_o_id' # Puoi usare l'ID del gruppo o il nome (@nome_gruppo)
# Inizializzazione del client Telegram
client = TelegramClient('session_name', api_id, api_hash)
async def remove_users_without_username():
try:
# Ottieni tutti i membri del gruppo
participants = await client.get_participants(group_chat)
print(f"Ci sono in totale {len(participants)} membri nel gruppo. Inizio la rimozione...")
for participant in participants:
username = participant.username
# Se l'utente non ha un nome utente, espellilo
if username is None:
try:
print(f"Espellendo @{participant.id} (utente senza username)...")
await client.kick_participant(group_chat, participant.id)
print(f"Utente {participant.id} espulso.")
# Ritardo casuale tra 3 e 6 secondi per evitare il ban
delay = random.randint(3, 6)
print(f"Attendo {delay} secondi prima di espellere il prossimo utente...")
await asyncio.sleep(delay) # Pausa per ridurre la velocità di esecuzione
except Exception as e:
if 'A wait of' in str(e): # Se il messaggio contiene la richiesta di attesa
# Estrai il tempo di attesa dal messaggio di errore
wait_time = int(str(e).split('A wait of')[1].split('seconds')[0].strip())
print(f"Attesa di {wait_time} secondi prima di riprovare...")
await asyncio.sleep(wait_time + 1) # Aspetta il tempo richiesto + 1 secondo per sicurezza
else:
print(f"Errore durante l'espulsione dell'utente {participant.id}: {e}")
else:
print(f"Utente @{username} ha un nome utente. Non viene espulso.")
except Exception as e:
print(f"Errore durante il recupero dei membri del gruppo: {e}")
async def main():
# Avvia il client
await client.start()
print("Bot avviato. Procedo con l'eliminazione degli utenti senza nome utente...")
# Rimuovi gli utenti senza nome utente
await remove_users_without_username()
# Mantieni il client attivo per eventuali azioni future
await client.run_until_disconnected()
if __name__ == '__main__':
asyncio.run(main())
Script per eliminare gli utenti non autorizzati che non sono nella lista allowed_usernames
Il secondo script è utile per rimuovere utenti il cui nome utente non è presente in una lista specifica di utenti autorizzati. Questo è ideale quando si desidera mantenere solo determinati membri nel gruppo e rimuovere tutti gli altri.
# Librerie di terze parti
from telethon import TelegramClient
import asyncio
import random
# --- CONFIGURAZIONE ---
api_id = 'your_api_id' # Ottieni il tuo API ID da https://my.telegram.org
api_hash = 'your_api_hash' # Ottieni il tuo API Hash da https://my.telegram.org
group_chat = 'nome_del_gruppo_o_id' # Puoi usare l'ID del gruppo o il nome (@nome_gruppo)
allowed_usernames = ['username1', 'username2', 'username3'] # Lista degli username permessi
# Inizializzazione del client Telegram
client = TelegramClient('session_name', api_id, api_hash)
async def remove_users_not_in_allowed_list():
try:
# Ottieni tutti i membri del gruppo
participants = await client.get_participants(group_chat)
print(f"Ci sono in totale {len(participants)} membri nel gruppo. Inizio la rimozione...")
for participant in participants:
username = participant.username
# Se l'utente ha un nome utente e non è nella lista "allowed_usernames", espellilo
if username and username not in allowed_usernames:
try:
print(f"Espellendo @{username} (non nella lista di permessi)...")
await client.kick_participant(group_chat, participant.id)
print(f"Utente @{username} espulso.")
# Ritardo casuale tra 3 e 6 secondi per evitare il ban
delay = random.randint(3, 6)
print(f"Attendo {delay} secondi prima di espellere il prossimo utente...")
await asyncio.sleep(delay) # Pausa per ridurre la velocità di esecuzione
except Exception as e:
if 'A wait of' in str(e): # Se il messaggio contiene la richiesta di attesa
# Estrai il tempo di attesa dal messaggio di errore
wait_time = int(str(e).split('A wait of')[1].split('seconds')[0].strip())
print(f"Attesa di {wait_time} secondi prima di riprovare...")
await asyncio.sleep(wait_time + 1) # Aspetta il tempo richiesto + 1 secondo per sicurezza
else:
print(f"Errore durante l'espulsione dell'utente @{username}: {e}")
else:
if username:
print(f"Utente @{username} è nella lista di permessi. Non viene espulso.")
else:
print(f"Utente senza username non espulso.")
except Exception as e:
print(f"Errore durante il recupero dei membri del gruppo: {e}")
async def main():
# Avvia il client
await client.start()
print("Bot avviato. Procedo con l'eliminazione degli utenti non nella lista di permessi...")
# Rimuovi gli utenti che non sono nella lista allowed_usernames
await remove_users_not_in_allowed_list()
# Mantieni il client attivo per eventuali azioni future
await client.run_until_disconnected()
if __name__ == '__main__':
asyncio.run(main())
Versione unificata per la rimozione degli utenti senza username o non presenti nella lista degli utenti autorizzati
Di seguito è riportata la versione unificata dei due script precedenti per la gestione degli utenti nei gruppi Telegram. Questa versione consente all’utente di scegliere quale tipo di utenti rimuovere attraverso un’interfaccia interattiva. Le opzioni disponibili sono:
- Opzione 0: Rimuove gli utenti senza username. In questo caso, lo script espellerà tutti gli utenti del gruppo che non hanno un nome utente associato al proprio account.
- Opzione 1: Rimuove gli utenti che non appartengono alla lista degli utenti ammessi. L’utente dovrà fornire una lista di username separati da virgola, e lo script rimuoverà automaticamente tutti gli utenti non inclusi in tale lista.
- Opzione 2: Rimuove sia gli utenti senza username che quelli non presenti nella lista degli utenti ammessi. In questo caso, lo script eseguirà entrambe le operazioni, espellendo sia gli utenti senza username che quelli non autorizzati presenti nel gruppo.
Durante l’esecuzione delle opzioni 1 e 2, l’utente dovrà inserire manualmente la lista degli username, separati da virgola. Lo script procederà quindi ad espellere tutti gli utenti non appartenenti a questa lista.
Una volta completata l’operazione selezionata, il bot si disconnetterà automaticamente, chiudendo il programma senza necessità di ulteriori azioni da parte dell’utente.
# Librerie standard di Python
import sys
# Librerie di terze parti
from telethon import TelegramClient, errors
import asyncio
import random
# --- CONFIGURAZIONE ---
api_id = 'your_api_id' # Ottieni il tuo API ID da https://my.telegram.org
api_hash = 'your_api_hash' # Ottieni il tuo API Hash da https://my.telegram.org
group_chat = 'nome_del_gruppo_o_id' # Puoi usare l'ID del gruppo o il nome (@nome_gruppo)
# Inizializzazione del client Telegram
client = TelegramClient('session_name', api_id, api_hash)
async def remove_users(group_chat, action):
try:
# Ottieni tutti i membri del gruppo
participants = await client.get_participants(group_chat)
print(f"Ci sono in totale {len(participants)} membri nel gruppo. Inizio la rimozione...")
# Lista per tenere traccia degli utenti senza username
users_without_username = [p for p in participants if p.username is None]
if action == 0 or action == 2:
# Se la scelta è 0 o 2, rimuovi gli utenti senza username
if users_without_username:
for participant in users_without_username:
try:
print(f"Espellendo @{participant.id} (utente senza username)...")
await client.kick_participant(group_chat, participant.id)
print(f"Utente {participant.id} espulso.")
# Ritardo casuale tra 3 e 6 secondi per evitare il ban
delay = random.randint(3, 6)
print(f"Attendo {delay} secondi prima di espellere il prossimo utente...")
await asyncio.sleep(delay)
except Exception as e:
if 'A wait of' in str(e): # Se il messaggio contiene la richiesta di attesa
# Estrai il tempo di attesa dal messaggio di errore
wait_time = int(str(e).split('A wait of')[1].split('seconds')[0].strip())
print(f"Attesa di {wait_time} secondi prima di riprovare...")
await asyncio.sleep(wait_time + 1) # Aspetta il tempo richiesto + 1 secondo per sicurezza
else:
print(f"Errore durante l'espulsione dell'utente {participant.id}: {e}")
else:
print("Non ci sono utenti senza username da espellere.")
if action == 1 or action == 2:
# Se la scelta è 1 o 2, rimuovi gli utenti che non sono nella lista allowed_usernames
allowed_usernames = input("Inserisci la lista degli username consentiti (separati da virgola): ").split(',')
allowed_usernames = [username.strip() for username in allowed_usernames]
users_to_kick = [p for p in participants if p.username and p.username not in allowed_usernames]
if users_to_kick:
for participant in users_to_kick:
try:
print(f"Espellendo @{participant.username} (non nella lista di permessi)...")
await client.kick_participant(group_chat, participant.id)
print(f"Utente @{participant.username} espulso.")
# Ritardo casuale tra 3 e 6 secondi per evitare il ban
delay = random.randint(3, 6)
print(f"Attendo {delay} secondi prima di espellere il prossimo utente...")
await asyncio.sleep(delay)
except Exception as e:
if 'A wait of' in str(e): # Se il messaggio contiene la richiesta di attesa
# Estrai il tempo di attesa dal messaggio di errore
wait_time = int(str(e).split('A wait of')[1].split('seconds')[0].strip())
print(f"Attesa di {wait_time} secondi prima di riprovare...")
await asyncio.sleep(wait_time + 1) # Aspetta il tempo richiesto + 1 secondo per sicurezza
else:
print(f"Errore durante l'espulsione dell'utente @{participant.username}: {e}")
else:
print("Nessun utente trovato da espellere (tutti sono nella lista dei permessi).")
except Exception as e:
print(f"Errore durante il recupero dei membri del gruppo: {e}")
async def main():
# Avvia il client
await client.start()
print("Bot avviato. Procedo con l'eliminazione degli utenti...")
# Chiedi all'utente cosa vuole fare
print("Cosa vuoi fare?")
print("0: Rimuovere gli utenti senza username.")
print("1: Rimuovere gli utenti che non sono nella lista dei permessi.")
print("2: Rimuovere sia gli utenti senza username sia quelli che non sono nella lista dei permessi.")
action = int(input("Scegli un'opzione (0, 1 o 2): "))
if action in [0, 1, 2]:
# Esegui l'azione scelta
await remove_users(group_chat, action)
else:
print("Opzione non valida!")
# Mantieni il client attivo per eventuali azioni future
print("Operazione completata. Il bot si sta disconnettendo...")
await client.disconnect()
sys.exit(0) # Esce dal programma con codice di uscita 0
if __name__ == '__main__':
asyncio.run(main())
Di seguito è mostrato come appare lo script unificato nella finestra di comando (cmd.exe), con le tre opzioni testate:
Come prendere i codici API da Telegram
Per utilizzare questi script, è necessario ottenere un api_id
e un api_hash
che ti permetteranno di accedere all’API di Telegram. Ecco come fare:
- Vai su https://my.telegram.org.
- Accedi con il tuo numero di telefono Telegram.
- Seleziona API development tools.
- Clicca su Create new application.
- Inserisci il nome dell’applicazione, la descrizione e l’URL del sito web (puoi lasciare quest’ultimo vuoto se non lo hai).
- Dopo aver creato l’app, otterrai il tuo
api_id
eapi_hash
.
Questi dati sono necessari per configurare e avviare il tuo client Telegram con il bot.
Creare un’app su Telegram per ottenere le API
Per utilizzare il codice e interagire con Telegram tramite le API, è necessario ottenere un API ID e un API Hash. Ecco come farlo:
- Vai al sito Telegram per gli sviluppatori:
- Visita https://my.telegram.org/auth e accedi con il tuo numero di telefono associato a Telegram.
- Accedi al tuo account Telegram:
- Inserisci il tuo numero di telefono e il codice di conferma che riceverai via SMS per accedere al portale di Telegram per sviluppatori.
- Crea una nuova applicazione:
- Una volta effettuato l’accesso, clicca su “API development tools” nella sezione principale.
- Quindi, fai clic su “Create new application” per creare una nuova applicazione.
- Compila i campi dell’applicazione:
- App title: Scegli un nome per la tua applicazione, come “Telegram Group Bot” o qualsiasi altro nome che desideri.
- Short name: Scegli un nome breve per l’app, ad esempio “groupbot”. Questo nome verrà utilizzato nell’URL dell’API.
- URL: Questo campo è facoltativo. Puoi lasciarlo vuoto se non hai un sito web associato all’applicazione.
- Platform: Seleziona la piattaforma su cui stai sviluppando (ad esempio, “Other” se stai sviluppando un bot in Python).
- Salva l’applicazione:
- Dopo aver compilato i campi richiesti, clicca su “Create Application”.
- Ottieni le tue credenziali API:
- Una volta creata l’applicazione, vedrai una schermata che mostra il API ID e l’API Hash della tua applicazione.
- Copia e salva questi dati in un posto sicuro, poiché ti serviranno per configurare il tuo script Python.
Ora che hai l’API ID e l’API Hash, puoi inserirli nel tuo script Python per connetterti all’API di Telegram e iniziare a interagire con il gruppo.
Panoramica dei campi da compilare:
- App title: Il nome della tua applicazione.
- Short name: Un nome breve per la tua applicazione (sarà usato nell’URL dell’API).
- URL: (Opzionale) Il link al sito web della tua applicazione.
- Platform: La piattaforma su cui stai sviluppando l’app (puoi scegliere “Other” per script Python).
Questi passaggi ti permetteranno di ottenere l’accesso all’API di Telegram e configurare il tuo bot o script per interagire con i gruppi Telegram tramite Python.
Nota sull’inserimento del numero di telefono
Quando accedi al portale https://my.telegram.org/auth per ottenere l’API ID e l’API Hash, ti verrà richiesto di inserire il tuo numero di telefono.
È importante inserire il numero completo di prefisso internazionale. Ad esempio, se sei in Italia, dovrai inserire il tuo numero preceduto da +39
.
Esempio per un numero italiano: +393331234567
(senza spazi).
Dopo aver inserito il numero, riceverai un codice di conferma via Telegram (non via SMS) che dovrai usare per accedere al pannello sviluppatore.
Come salvare ed eseguire lo script
Una volta che hai copiato lo script, il passo successivo è salvarlo e avviarlo tramite terminale. Ecco come fare:
- Salva lo script:
- Apri un editor di testo come Blocco Note, Notepad++ o VS Code.
- Incolla lo script Python desiderato (ad esempio quello per rimuovere utenti senza username o non presenti nella lista degli username autorizzati).
- Salva il file con il nome
remove.py
. Assicurati che l’estensione sia.py
e non.txt
.
- Apri il terminale:
-
- Se sei su Windows, puoi usare
cmd.exe
(Prompt dei comandi) oppurePowerShell
. - Posizionati nella cartella dove hai salvato il file
remove.py
usando il comandocd
. Ad esempio:
- Se sei su Windows, puoi usare
cd C:\Users\IlTuoNomeUtente\Desktop
-
- Esegui lo script:
-
- Avvia lo script digitando il seguente comando:
python remove.py
- Assicurati che Python sia stato correttamente installato e aggiunto al PATH, altrimenti il comando potrebbe non funzionare.
-
Lo script avvierà automaticamente il processo di connessione a Telegram e inizierà a rimuovere gli utenti in base ai criteri impostati.
Se vi capita l’errore ‘TabError’ dopo aver incollato il codice, ecco come risolverlo in Notepad++
Se dopo aver incollato il codice doveste incontrare l’errore TabError: inconsistent use of tabs and spaces in indentation, significa che ci sono dei conflitti tra tabulazioni e spazi usati per l’indentazione del codice. Per risolvere il problema, seguite questi passaggi:
- Aprite il codice in Notepad++.
- Selezionate tutto il contenuto del documento premendo Ctrl+A.
- Andate nel menu in alto e cliccate su Modifica.
- Selezionate Operazione sugli spazi e poi Converti TAB in spazi.
Questo comando sostituirà tutte le tabulazioni con spazi, eliminando l’incongruenza tra i due metodi di indentazione e risolvendo l’errore.
Conclusioni
Questi script ti permettono di gestire in modo efficiente la pulizia del tuo gruppo Telegram, eliminando in massa utenti non desiderati. Sia che tu voglia rimuovere gli utenti senza username o quelli che non appartengono alla lista dei permessi, questi strumenti sono fondamentali per mantenere il gruppo pulito e sicuro. L’uso di ritardi tra le operazioni è essenziale per evitare il ban del tuo account.
Se desideri creare un gruppo Telegram senza bot e membri fittizi, questi script possono essere davvero utili. Utilizzali con cautela e assicurati di seguire sempre le linee guida di Telegram per evitare sanzioni sul tuo account.