Telegram TagAll

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:

python3 --version

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:

1
2
3
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.

pip install telethon

kalau ga bisa, paksa aja

pip install --break-system-packages telethon

4️⃣ Ambil API ID & API Hash dari Telegram

  1. Buka Telegram Developer Portal
  2. Login pakai nomor Telegram kamu.
  3. Klik "Create New Application", terus tinggal isi:
    • App title: Bebas (contoh: AutoReadBot)
    • Short name: Bebas (contoh: autoread)
    • Platform: Desktop
  4. Setelah membuat, kamu akan mendapatkan:
    • API ID
    • API Hash

Simpan kedua informasi ini karena akan kita gunakan.


5️⃣ Buat dan Jalankan Bot Auto-Read

Sekarang buat file tag.py dan tempelkan kode berikut:
MENUJU KODE


6️⃣ Jalankan Bot

Buka terminal atau command prompt, lalu jalankan:

python3 tag.py

Kalau ini pertama kali, biasanya dimintai Login pakai kode OTP.
Setelah login, bot akan Aktif.
TENANG, Script ini aman kok soalnya pakai API Telegram Resmi.


codespace

INI SCRIPTNYA YA!

TagAll

import asyncio
from telethon import TelegramClient, events, Button
from telethon.tl.functions.channels import GetParticipantsRequest
from telethon.tl.types import ChannelParticipantsSearch, PeerChannel
from datetime import datetime
import pytz

api_id = pakai_api_id_kamu
api_hash = 'pakai_api_hash_kamu'
phone_number = '+62xxxx'
AKUN_KU = "username_kamu_ya"

client = TelegramClient('session_name', api_id, api_hash)

async def get_all_groups():
    dialogs = await client.get_dialogs()
    return [d for d in dialogs if d.is_group]

async def get_all_usernames(group):
    users = []
    offset = 0
    limit = 100
    while True:
        result = await client(GetParticipantsRequest(
            channel=group,
            filter=ChannelParticipantsSearch(''),
            offset=offset,
            limit=limit,
            hash=0
        ))
        if not result.users:
            break
        for user in result.users:
            if user.username and user.username != AKUN_KU:
                users.append(user.username)
        offset += len(result.users)
    return users

def split_text(text, max_len=4096):
    return [text[i:i + max_len] for i in range(0, len(text), max_len)]

def get_waktu_wib():
    wib = pytz.timezone('Asia/Jakarta')
    now = datetime.now(wib)
    hari = now.strftime('%A')
    hari_map = {
        'Monday': 'Senin', 'Tuesday': 'Selasa', 'Wednesday': 'Rabu',
        'Thursday': 'Kamis', 'Friday': 'Jumat', 'Saturday': 'Sabtu', 'Sunday': 'Minggu'
    }
    hari_indo = hari_map.get(hari, hari)
    return f"🕒 {hari_indo}, {now.strftime('%d-%m-%Y %H:%M:%S')} WIB"

@client.on(events.NewMessage(incoming=True, pattern=r'^@all(?:\s.*)?$'))
@client.on(events.NewMessage(outgoing=True, pattern=r'^@all(?:\s.*)?$'))
async def handle_all_command(event):
    sender = await event.get_sender()
    chat = await event.get_chat()

    if not event.is_group:
        await event.reply("❌ Perintah ini hanya bisa digunakan di grup.")
        return

    is_admin = False
    try:
        perms = await client.get_permissions(chat, sender.id)
        is_admin = perms.is_admin or perms.is_creator
    except:
        is_admin = False

    me = await client.get_me()

    # Kalau yang kirim bukan bot dan dia bukan admin, tolak
    if sender.id != me.id:
        if not is_admin:
            await event.reply(f"Hey @{sender.username or sender.first_name}, kamu bukan admin, gak boleh pakai tagall")
            return

    isi_pengumuman = event.raw_text[5:].strip()
    usernames = await get_all_usernames(chat)
    mention_lines = [f"- @{u}" for u in usernames]
    mention_text = "\n".join(mention_lines)
    sender_username = f"@{sender.username}" if sender.username else sender.first_name

    # Cek permission bot di grup itu
    try:
        my_perms = await client.get_permissions(chat, me.id)
        can_delete = my_perms.is_admin and my_perms.delete_messages
    except:
        can_delete = False

    if isi_pengumuman:
        # Kirim format pengumuman lengkap
        full_text = (
            "📢 **PENGUMUMAN!**\n"
            "./Tagall\n\n"
            f"📝 Isi Pengumuman:\n{isi_pengumuman}\n\n"
            "👥 Memanggil Semua Anggota:\n"
            f"{mention_text}\n\n"
            f"📣 Admin yang memanggil:\n{sender_username}\n"
            f"{get_waktu_wib()}"
        )

        if sender.id != me.id and not can_delete:
            full_text += (
                "\n\n**ℹ Aku bukan admin, jadi pesan admin tetap ada. "
                "Aku bisa otomatis hapus pesan admin dan menggantikannya dengan tagall, "
                "tapi aku perlu izin admin terlebih dahulu. "
                "Kalau aku sudah jadi admin, mungkin izin \"delete message\" dimatikan untukku, "
                "silahkan aktifkan terlebih dahulu.**"
            )

        pesan_terbagi = split_text(full_text)
        pesan_utama = await client.send_message(
            chat,
            pesan_terbagi[0],
            buttons=[Button.inline("↩ Balas Pengumuman", b"reply_pengumuman")]
        )
        for part in pesan_terbagi[1:]:
            await asyncio.sleep(2.5)
            await client.send_message(chat, part, reply_to=pesan_utama.id)
    else:
        # Kirim tagall aja tanpa embel-embel
        tagall_aja = mention_text or "⚠️ Gak ada username yang bisa disebut."
        await client.send_message(chat, tagall_aja)

    print(f"✅ Tagall dikirim oleh {sender_username}")
    await event.delete()



@client.on(events.NewMessage(pattern='/listgroups', outgoing=True))
async def list_groups(event):
    groups = await get_all_groups()
    if not groups:
        await event.respond("❌ Gak ada grup yang ditemukan.")
        return

    text = "**Daftar Grup Kamu:**\n"
    for g in groups:
        text += f"- {g.name}\n"
    await event.respond(text)

@client.on(events.CallbackQuery(data=b'reply_pengumuman'))
async def reply_button(event):
    await event.answer("Silakan balas pengumuman ini langsung.", alert=False)

client.start(phone=phone_number)
print("🟢 [Aldi Was Here] - Bot berjalan... siap jalankan perintah! (Tekan CTRL+C untuk berhenti) @aldirobot")
client.run_until_disconnected()

Aldi was Here

Edit

Pub: 05 Apr 2025 05:59 UTC

Edit: 05 Apr 2025 06:13 UTC

Views: 15