В телеграм можна видаляти свої повідомлення вибираючи їх один за одним що деколи не зручно і займає багато часу. Щоб автоматично видалити всі повідомлення можна скористатися 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("Поздоровляю ви все видалили!")