Telegram-AlwaysON (AutoRead)
Pakai Telethon, perlu install pakai Python
(Linux & Windows)
1️⃣ Install Python dan Pip
Sebelum mulai, pastikan Python 3.8+ sudah terinstall.
Cek versi Python dengan perintah:
Kalau belum ada, install dulu:
-
Linux (Ubuntu/Debian/Xubuntu/Lubuntu)
|
sudo apt update
sudo apt install python3 python3-pip
|
-
Windows
Download Python dari python.org terus install.
Pastikan opsi "Add Python to PATH" dicentang.
2️⃣ Buat Virtual Environment (Opsional, tapi Disarankan)
Agar tidak mengganggu sistem Python, gunakan virtual
environment:
|
python3 -m venv venv
source venv/bin/activate # Linux
venv\Scripts\activate # Windows (CMD)
|
Kalo aku ga pakai sih
3️⃣ Install Telethon
Telethon itu library Python buat Telegram API.
kalau ga bisa, paksa aja
|
pip install --break-system-packages telethon
|
4️⃣ Ambil API ID & API Hash dari Telegram
-
Buka Telegram Developer Portal
-
Login pakai nomor Telegram kamu.
-
Klik "Create New Application", terus tinggal isi:
-
App title: Bebas (contoh: AutoReadBot)
-
Short name: Bebas (contoh: autoread)
-
Platform: Desktop
-
Setelah membuat, kamu akan mendapatkan:
Simpan kedua informasi ini karena akan kita gunakan.
5️⃣ Buat dan Jalankan Bot Auto-Read
Sekarang buat file auto.py
dan tempelkan kode berikut:
|
from telethon import TelegramClient, events
from telethon.tl.functions.account import UpdateStatusRequest
import asyncio
import random
from datetime import datetime
# Ganti dengan punyamu
API_ID = GANTI_API_ID_KAMU
API_HASH = "GANTI_API_HASH_KAMU"
# Target chats yang akan di-auto-read
TARGET_CHATS = ["username1", "username2", "username3", "username4", "username5"]
TARGET_CHATS_LOWER = {u.lower() for u in TARGET_CHATS} # Pakai set biar lebih cepat
# Chats yang tidak mau ditampilkan di terminal (tetap auto-read)
SILENT_CHATS = ["username1", "username2"]
SILENT_CHATS_LOWER = {u.lower() for u in SILENT_CHATS} # Pakai set biar lebih efisien
client = TelegramClient("session_name", API_ID, API_HASH)
async def autoread():
await client.start()
me = await client.get_me()
print(f"Login sebagai: {me.username or me.first_name}")
async def stay_online():
while True:
try:
await client(UpdateStatusRequest(offline=False))
await asyncio.sleep(60)
except Exception as e:
print("Error update status online:", e)
@client.on(events.NewMessage())
async def handler(event):
try:
chat = await event.get_chat()
username = getattr(chat, 'username', None) # Bisa None
title = getattr(chat, 'title', None) # Untuk grup/channel
name_display = title or username or 'Private Chat'
username_lower = username.lower() if username else None
title_lower = title.lower() if title else None
# Jika chat masuk daftar auto-read
if username_lower in TARGET_CHATS_LOWER or title_lower in TARGET_CHATS_LOWER:
# Delay acak sebelum auto-read (0.5 - 0.8 detik)
await asyncio.sleep(random.uniform(0.5, 0.8))
await client.send_read_acknowledge(event.chat_id)
# Jika chat ada di SILENT_CHATS, jangan tampilkan di terminal
if username_lower in SILENT_CHATS_LOWER or title_lower in SILENT_CHATS_LOWER:
return
timestamp = datetime.now().strftime("[AUTO %d %B %Y : %H:%M:%S]")
print(f"{timestamp} ✅ Auto-read pesan dari {name_display}")
# Chat lain tetap ditampilkan
else:
timestamp = datetime.now().strftime("[%d %B %Y : %H:%M:%S]")
print(f"{timestamp} 🔔 Pesan baru dari {name_display}")
print(f" Isi: {event.message.text[:100]}{'...' if len(event.message.text) > 100 else ''}")
except Exception as e:
print("Error handle pesan:", e)
print("[Aldi Was Here] - Bot berjalan... (Tekan CTRL+C untuk berhenti) - @aldirobot")
await asyncio.gather(
stay_online(),
client.run_until_disconnected()
)
if __name__ == "__main__":
asyncio.run(autoread())
|
6️⃣ Jalankan Bot
Buka terminal atau command prompt, lalu jalankan:
Kalau ini pertama kali, biasanya dimintai Login pakai nomor Telegram dan kode OTP.
Setelah login, bot akan
otomatis membaca pesan di channel/grup/forum yang kamu tentukan.
TENANG, Script ini aman kok soalnya pakai API Telegram Resmi.
7️⃣ Menambahkan Channel/Grup/Forum
-
Jika ingin membaca dari channel atau grup lain, tambahkan ke
TARGET_CHATS
dalam kode:
|
TARGET_CHATS = ["username1", "username2", "username3", "username4", "username5"]
|
-
Untuk mendapatkan username channel/grup, cek di Telegram:
-
Channel publik: Bisa pakai
@username
-
Grup publik: Bisa pakai
@username_grup
-
Grup/channel private: Pakai ID (
-1001234567890
)
INI SCRIPTNYA YA! Sama kok kayak yg diatas, takut kelewat aja :)
Ini Versi 1, AutoRead Chat Tertentu:
|
from telethon import TelegramClient, events
from telethon.tl.functions.account import UpdateStatusRequest
import asyncio
import random
from datetime import datetime
# Ganti dengan punyamu
API_ID = GANTI_API_ID_KAMU
API_HASH = "GANTI_API_HASH_KAMU"
# Target chats yang akan di-auto-read
TARGET_CHATS = ["username1", "username2", "username3", "username4", "username5"]
TARGET_CHATS_LOWER = {u.lower() for u in TARGET_CHATS} # Pakai set biar lebih cepat
# Chats yang tidak mau ditampilkan di terminal (tetap auto-read)
SILENT_CHATS = ["username1", "username2"]
SILENT_CHATS_LOWER = {u.lower() for u in SILENT_CHATS} # Pakai set biar lebih efisien
client = TelegramClient("session_name", API_ID, API_HASH)
async def autoread():
await client.start()
me = await client.get_me()
print(f"Login sebagai: {me.username or me.first_name}")
async def stay_online():
while True:
try:
await client(UpdateStatusRequest(offline=False))
await asyncio.sleep(60)
except Exception as e:
print("Error update status online:", e)
@client.on(events.NewMessage())
async def handler(event):
try:
chat = await event.get_chat()
username = getattr(chat, 'username', None) # Bisa None
title = getattr(chat, 'title', None) # Untuk grup/channel
name_display = title or username or 'Private Chat'
username_lower = username.lower() if username else None
title_lower = title.lower() if title else None
# Jika chat masuk daftar auto-read
if username_lower in TARGET_CHATS_LOWER or title_lower in TARGET_CHATS_LOWER:
# Delay acak sebelum auto-read (0.5 - 0.8 detik)
await asyncio.sleep(random.uniform(0.5, 0.8))
await client.send_read_acknowledge(event.chat_id)
# Jika chat ada di SILENT_CHATS, jangan tampilkan di terminal
if username_lower in SILENT_CHATS_LOWER or title_lower in SILENT_CHATS_LOWER:
return
timestamp = datetime.now().strftime("[AUTO %d %B %Y : %H:%M:%S]")
print(f"{timestamp} ✅ Auto-read pesan dari {name_display}")
# Chat lain tetap ditampilkan
else:
timestamp = datetime.now().strftime("[%d %B %Y : %H:%M:%S]")
print(f"{timestamp} 🔔 Pesan baru dari {name_display}")
print(f" Isi: {event.message.text[:100]}{'...' if len(event.message.text) > 100 else ''}")
except Exception as e:
print("Error handle pesan:", e)
print("[Aldi Was Here] - Bot berjalan... (Tekan CTRL+C untuk berhenti) - @aldirobot")
await asyncio.gather(
stay_online(),
client.run_until_disconnected()
)
if __name__ == "__main__":
asyncio.run(autoread())
|
Ini Versi 2, AutoRead semua chat Kecuali yang tercantum:
|
from telethon import TelegramClient, events
from telethon.tl.functions.account import UpdateStatusRequest
import asyncio
import random
from datetime import datetime
# Ganti dengan API ID dan API HASH kamu
API_ID = "GANTI_API_ID_KAMU"
API_HASH = "GANTI_API_HASH_KAMU"
# Daftar username yang **tidak** ingin di-auto-read
EXCLUDED_CHATS = {
"username1", "username2", "username3", "username4", "masukinajasebanyaknya"
}
# Daftar chat yang **auto-read tapi tidak muncul di terminal**
SILENT_CHATS = {
"username1", "username2"
}
client = TelegramClient("session_name", API_ID, API_HASH)
async def autoread():
async with client:
me = await client.get_me()
print(f"Login sebagai: {me.username or me.first_name}")
@client.on(events.NewMessage())
async def handler(event):
chat = await event.get_chat()
username = getattr(chat, 'username', None)
username_check = username.lower() if username else None
# Paksa status online
await client(UpdateStatusRequest(offline=False))
# Delay sebelum auto-read (acak antara 0.5 - 0.8 detik)
delay = random.uniform(0.5, 0.8)
await asyncio.sleep(delay)
# Dapatkan timestamp
timestamp = datetime.now().strftime("[AUTO %d %B %Y : %H:%M:%S]")
if username_check in EXCLUDED_CHATS:
print(f"{timestamp} 🚫 Pesan dari @{username} dilewati (Excluded).")
else:
await client.send_read_acknowledge(event.chat_id)
# Jika ada di daftar silent, jangan tampilkan di terminal
if username_check in SILENT_CHATS:
return
print(f"{timestamp} ✅ Auto-read pesan dari {getattr(chat, 'title', username or 'Private Chat')}")
print("[Aldi Was Here] - Bot berjalan... (Tekan CTRL+C untuk berhenti) @aldirobot")
await client.run_until_disconnected()
if __name__ == "__main__":
asyncio.run(autoread())
|
Aldi was Here