В телеграм можна видаляти свої повідомлення вибираючи їх один за одним що деколи не зручно і займає багато часу. Щоб автоматично видалити всі повідомлення можна скористатися api від telegram і python.

Потрібно отримати api_id

Для того, щоб отримати ідентифікатор API та розробити власний додаток за допомогою API Telegram, потрібно виконати наступне:

  • Увійдіть в API Telegram: https://my.telegram.org.
  • Перейдіть до розділу «API development tools» та заповніть форму.
  • Ви отримаєте api_id та api_hash, необхідні для авторизації користувача.
  • На цей момент до кожного номера може бути підключений лише один api_id.

Ці api_id та api_hash потрібні внести в скрипт і він буде поводитись як додаток і мати доступ до ваших чатів в яких ви хочете видалити коментарі. При першому запуску скрипту запросить підтвердження що це саме ви та відправить код на ваш телеграм. Цей код потрібно вписати в вже запущений скрипт. В тій директорії звідки будете запускати скрипт, з'явиться файл налаштування з розширенням .session. Це файл авторизації. Це так само якби ви перевстановили Телеграм і вас знову просять авторизуватися.

Для запуску скрипту потрібен python та додатковий модуль telethon. Майже у всіх Лінукс по замовчуванню стоїть python потрібно встановити pip менеджер пакетів:
Встановлюємо по черзі:

sudo apt install python3-pip
pip install telethon

Ну і сам скрипт:

Цей скрипт потрібно скопіювати (в правому верхньому кутку є Copy) та вставити у звичайний текстовий файл з розширенням .py як приклад telegram_delete_message.py та запускати python3 telegram_delete_message.py.
Маленьке доповнення, в мові python дуже важливі відступи в рядках. Якщо якісь рядки здвинути вліво чи вправо від оригіналу, скрипт не буде працювати.

import time
import csv
import random
from telethon.tl.functions.channels import InviteToChannelRequest
from telethon import errors
from telethon import TelegramClient
import asyncio
import sys

# Remember to use your own values from my.telegram.org!
api_id = XXXXXX  # Без лапок
api_hash = "xxXXxxxXxXXXXXXXXxxXXX"  # В лапках
client = TelegramClient('telethon_delete_message', api_id, api_hash)

async def main():
    # Getting information about yourself
    me = await client.get_me()
    me_id = me.id
    print('{:>14}: {}'.format("Вітаю", me.username))

    def check_quit():
        input_y = input("Продовжимо? Введіть 'y' потім натисніть Enter: ")
        if input_y == 'y':
            pass
        else:
            sys.exit(0)

    check_quit()
    chat_name = []
    chat_id = []

    count_chats = 0
    async for dialog in client.iter_dialogs():
        await asyncio.sleep(0.25)
        count_chats = count_chats + 1
        chat_name.append(dialog.title)
        chat_id.append(dialog.id)
        print('{:>14}: {}'.format(count_chats, dialog.title), dialog.id)

    count_messages = 0
    print("-" * 80)
    number_chats = input("Введіть 'номер' чата потім натисніть Enter: ")
    print("-" * 80)
    print('Ви вибрали -->', chat_name[int(number_chats) - 1])
    print("-" * 80)
    check_quit()

    async for messages in client.iter_messages(chat_id[int(number_chats) - 1],
                                               from_user=me_id, limit=3000, wait_time=60):
        await asyncio.sleep(1)
        count_messages = count_messages + 1
        if messages.text is not None:
            if messages.text:
                print('{:>10} Видалено --> {}'.format(count_messages, messages.date), messages.text[:48])
                await client.delete_messages(chat_id[int(number_chats) - 1], messages.id)
            else:
                print('{:>10} Видалено --> {}'.format(count_messages, messages.date), 'Якесь Фото, Відео, Аудіо')
                await client.delete_messages(chat_id[int(number_chats) - 1], messages.id)

with client:
    client.loop.run_until_complete(main())

print("-" * 80)
print("Поздоровляю ви все видалили!")

Додати комментар

Наступний запис Попередній запис