- 03.11.2024
- 63
- 2
- 18
- Награды
- 4
- Пол
- Жен.
Репутация:
- Автор темы
-
- #1
Быстрое вступление.
Данный гайд будет полезен тем, кто хочет быстро удалить все сообщения, оставленные в групповых чатах в telegram.
!Важно помнить, что способ работает только с чатами, в которых вы участвуете в данный момент, и только с сообщениями в групповых чатах.
В группах, откуда вас забанили, вы не сможете их удалять.
Эта статья служит ознакомительной инструкцией. В ней рассказывается о скриптах, использование которых приведет к безвозвратному удалению всех ваших сообщений.
Автор не отвечает за возможные последствия Вы сами решаете, хотите ли вы их использовать.
Если вам не подходит самый простой вариант (попросить об удалении админов чата), то приступаем к гайду:
Использовать будем который можно .
Шаг 1 — Скачиваем архив. Для этого откройте ссылку и нажмите на Code — download zip.
Шаг 2 — . Обратите внимание, что на последних версиях Python скрипт может не работать. Советую версию python 3.10
Шаг 3 — . Если у вас установлена Powershell, можно установить Pip через консольную команду: pip install pip.
Шаг 4 — Теперь нам необходимо на сайте телеграмма получить наш уникальный API_ID и API_Hash. (используйте VPN если в вашем регионе ограничен доступ) и вводим наши данные. Далее в пункте API development tools создаем новое приложение. Пишем App title, Short name и ссылку. Можно писать что угодно, например:
Api Title: Google
Short name: Google
URL: google.com
Platform: Android
Description: Anything
Нажимаем Create application и получаем наши API ID и API HASH.
Шаг 5 — Возвращаемся к нашему архиву. Распаковываем и запускаем install.bat. По окончании загрузки запускаем при помощи файла Start.bat. Здесь у новичков могут возникнуть проблемы, поскольку Install bat устанавливает необходимый нам Pyrogram, а у некоторых пользователей могут быть проблемы с доступом к ресурсам телеграма, что также ограничит установку программе. Попробуйте с VPN установить вручную через консольную команду pip install Pyrogram.
Шаг 6 — в появившемся окне от start.bat у нас запросит наш API ID и HASH. Вводим последовательно, после чего появится поле Enter phone number or bot token. Пишем наш номер телефона и код, который мы получим по смс в самом телеграме. Готово. Теперь перед нами появляется список групп, в которых мы участвуем в данный момент. Они обозначены цифрами. Для примера:
1. Группа Альфа
2. Группа Гамма
3. Группа Бета
Если нам нужно очистить все наши сообщения за всё время из условной группы "Гамма", просто пишем цифру 2 и запускаем процесс, где показывается количество удаленных нами сообщений. Готово.
Вопросы и ответы:
Start.bat после запуска сразу исчезает — используйте программу Pycharm. Это намного удобнее. Открываете через него папку скрипта, затем файл cleaner,py и запускаете скрипт. Появится терминал с полями для ввода Api id и hash.
Не могу установить Pyrogram — используем впн. Можно в том же Pycharm'е установить вручную. Скачайте zip-архив Pyrogram и в Pycharm запустите setup.
Не могу получить Api_Id и Api_Hash — выбираем в качестве платформы андроид. Неизвестная ошибка также может возникать при использовании VPN. Попробуйте другой VPN, страну. Если не сработает, то к сожалению могу предложить только попросить о помощи ваших знакомых, которым вы доверяете и у которых сервисы телеграма не ограничены.
Возникает ошибка в скрипте — откройте файл Cleaner и замените весь код скрипта на следующий (Удобнее всего делать это в Pycharm.)
Как узнать, в каких чатах я состоял(-а) ? — Здесь вам могут помочь боты для поиска информации по пользователям. Например
Пожалуйста, не злоупотребляйте этим и похожими инструментами для поиска. Используйте их только для ваших собственных профилей. Помните — несанкционированный сбор личной информации может повлечь за собой последствия.
Ошибка get_dialogs() got an unexpected keyword argument 'pinned_only' — в Pycharm откройте файл Cleaner и замените весь код на следующий:
Остались вопросы? Буду рада помочь в комментариях!
Данный гайд будет полезен тем, кто хочет быстро удалить все сообщения, оставленные в групповых чатах в telegram.
!Важно помнить, что способ работает только с чатами, в которых вы участвуете в данный момент, и только с сообщениями в групповых чатах.
В группах, откуда вас забанили, вы не сможете их удалять.
Эта статья служит ознакомительной инструкцией. В ней рассказывается о скриптах, использование которых приведет к безвозвратному удалению всех ваших сообщений.
Автор не отвечает за возможные последствия Вы сами решаете, хотите ли вы их использовать.
Если вам не подходит самый простой вариант (попросить об удалении админов чата), то приступаем к гайду:
Использовать будем который можно .
Шаг 1 — Скачиваем архив. Для этого откройте ссылку и нажмите на Code — download zip.
Шаг 2 — . Обратите внимание, что на последних версиях Python скрипт может не работать. Советую версию python 3.10
Шаг 3 — . Если у вас установлена Powershell, можно установить Pip через консольную команду: pip install pip.
Шаг 4 — Теперь нам необходимо на сайте телеграмма получить наш уникальный API_ID и API_Hash. (используйте VPN если в вашем регионе ограничен доступ) и вводим наши данные. Далее в пункте API development tools создаем новое приложение. Пишем App title, Short name и ссылку. Можно писать что угодно, например:
Api Title: Google
Short name: Google
URL: google.com
Platform: Android
Description: Anything
Нажимаем Create application и получаем наши API ID и API HASH.
Шаг 5 — Возвращаемся к нашему архиву. Распаковываем и запускаем install.bat. По окончании загрузки запускаем при помощи файла Start.bat. Здесь у новичков могут возникнуть проблемы, поскольку Install bat устанавливает необходимый нам Pyrogram, а у некоторых пользователей могут быть проблемы с доступом к ресурсам телеграма, что также ограничит установку программе. Попробуйте с VPN установить вручную через консольную команду pip install Pyrogram.
Шаг 6 — в появившемся окне от start.bat у нас запросит наш API ID и HASH. Вводим последовательно, после чего появится поле Enter phone number or bot token. Пишем наш номер телефона и код, который мы получим по смс в самом телеграме. Готово. Теперь перед нами появляется список групп, в которых мы участвуем в данный момент. Они обозначены цифрами. Для примера:
1. Группа Альфа
2. Группа Гамма
3. Группа Бета
Если нам нужно очистить все наши сообщения за всё время из условной группы "Гамма", просто пишем цифру 2 и запускаем процесс, где показывается количество удаленных нами сообщений. Готово.
Вопросы и ответы:
Start.bat после запуска сразу исчезает — используйте программу Pycharm. Это намного удобнее. Открываете через него папку скрипта, затем файл cleaner,py и запускаете скрипт. Появится терминал с полями для ввода Api id и hash.
Не могу установить Pyrogram — используем впн. Можно в том же Pycharm'е установить вручную. Скачайте zip-архив Pyrogram и в Pycharm запустите setup.
Не могу получить Api_Id и Api_Hash — выбираем в качестве платформы андроид. Неизвестная ошибка также может возникать при использовании VPN. Попробуйте другой VPN, страну. Если не сработает, то к сожалению могу предложить только попросить о помощи ваших знакомых, которым вы доверяете и у которых сервисы телеграма не ограничены.
Возникает ошибка в скрипте — откройте файл Cleaner и замените весь код скрипта на следующий (Удобнее всего делать это в Pycharm.)
Как узнать, в каких чатах я состоял(-а) ? — Здесь вам могут помочь боты для поиска информации по пользователям. Например
Пожалуйста, не злоупотребляйте этим и похожими инструментами для поиска. Используйте их только для ваших собственных профилей. Помните — несанкционированный сбор личной информации может повлечь за собой последствия.
Ошибка get_dialogs() got an unexpected keyword argument 'pinned_only' — в Pycharm откройте файл Cleaner и замените весь код на следующий:
Cleaner:
import os
import json
from time import sleep
from pyrogram import Client
from pyrogram.raw.functions.messages import Search
from pyrogram.raw.types import InputPeerSelf, InputMessagesFilterEmpty
from pyrogram.raw.types.messages import ChannelMessages
from pyrogram.errors import FloodWait, UnknownError
from pyrogram.enums import ChatType
cachePath = os.path.abspath(__file__)
cachePath = os.path.dirname(cachePath)
cachePath = os.path.join(cachePath, "cache")
if os.path.exists(cachePath):
with open(cachePath, "r") as cacheFile:
cache = json.loads(cacheFile.read())
API_ID = cache["API_ID"]
API_HASH = cache["API_HASH"]
else:
API_ID = os.getenv('API_ID', None) or int(input('Enter your Telegram API id: '))
API_HASH = os.getenv('API_HASH', None) or input('Enter your Telegram API hash: ')
app = Client("client", api_id=API_ID, api_hash=API_HASH)
app.start()
if not os.path.exists(cachePath):
with open(cachePath, "w") as cacheFile:
cache = {"API_ID": API_ID, "API_HASH": API_HASH}
cacheFile.write(json.dumps(cache))
class Cleaner:
def __init__(self, chats=None, search_chunk_size=100, delete_chunk_size=100):
self.chats = chats or []
if search_chunk_size > 100:
# https://github.com/gurland/telegram-delete-all-messages/issues/31
#
# The issue is that pyrogram.raw.functions.messages.Search uses
# pagination with chunks of 100 messages. Might consider switching
# to search_messages, which handles pagination transparently.
raise ValueError('search_chunk_size > 100 not supported')
self.search_chunk_size = search_chunk_size
self.delete_chunk_size = delete_chunk_size
@staticmethod
def chunks(l, n):
"""Yield successive n-sized chunks from l.
https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks#answer-312464"""
for i in range(0, len(l), n):
yield l[i:i + n]
@staticmethod
def get_all_chats():
# dialogs = app.get_dialogs(pinned_only=True)
# dialog_chunk = app.get_dialogs()
# while len(dialog_chunk) > 0:
# dialogs.extend(dialog_chunk)
# dialog_chunk = app.get_dialogs(offset_date=dialogs[-1].top_message.date-1)
dialogs = app.get_dialogs()
return [d.chat for d in dialogs]
def select_groups(self, recursive=0):
chats = self.get_all_chats()
#groups = [c for c in chats if c.type in ('group', 'supergroup')]
groups = [c for c in chats if c.type in (ChatType.GROUP, ChatType.SUPERGROUP)]
print('Delete all your messages in')
for i, group in enumerate(groups):
print(f' {i+1}. {group.title}')
print(
f' {len(groups) + 1}. '
'(!) DELETE ALL YOUR MESSAGES IN ALL OF THOSE GROUPS (!)\n'
)
nums_str = input('Insert option numbers (comma separated): ')
nums = map(lambda s: int(s.strip()), nums_str.split(','))
for n in nums:
if not 1 <= n <= len(groups) + 1:
print('Invalid option selected. Exiting...')
exit(-1)
if n == len(groups) + 1:
print('\nTHIS WILL DELETE ALL YOUR MESSSAGES IN ALL GROUPS!')
answer = input('Please type "I understand" to proceed: ')
if answer.upper() != 'I UNDERSTAND':
print('Better safe than sorry. Aborting...')
exit(-1)
self.chats = groups
break
else:
self.chats.append(groups[n - 1])
groups_str = ', '.join(c.title for c in self.chats)
print(f'\nSelected {groups_str}.\n')
if recursive == 1:
self.run()
def run(self):
for chat in self.chats:
peer = app.resolve_peer(chat.id)
message_ids = []
add_offset = 0
while True:
q = self.search_messages(peer, add_offset)
#message_ids.extend(msg.id for msg in q['messages'])
#messages_count = len(q['messages'])
message_ids.extend(msg.id for msg in q.messages)
messages_count = len(q.messages)
print(f'Found {messages_count} of your messages in "{chat.title}"')
if messages_count < self.search_chunk_size:
break
add_offset += self.search_chunk_size
self.delete_messages(chat.id, message_ids)
def delete_messages(self, chat_id, message_ids):
print(f'Deleting {len(message_ids)} messages with message IDs:')
print(message_ids)
for chunk in self.chunks(message_ids, self.delete_chunk_size):
try:
app.delete_messages(chat_id=chat_id, message_ids=chunk)
except FloodWait as flood_exception:
sleep(flood_exception.x)
def search_messages(self, peer, add_offset):
print(f'Searching messages. OFFSET: {add_offset}')
return app.invoke(
#return app.send(
Search(
peer=peer,
q='',
filter=InputMessagesFilterEmpty(),
min_date=0,
max_date=0,
offset_id=0,
add_offset=add_offset,
limit=self.search_chunk_size,
max_id=0,
min_id=0,
hash=0,
from_id=InputPeerSelf()
),
sleep_threshold=60
)
if __name__ == '__main__':
try:
deleter = Cleaner()
deleter.select_groups()
deleter.run()
except UnknownError as e:
print(f'UnknownError occured: {e}')
print('Probably API has changed, ask developers to update this utility')
finally:
app.stop()
Остались вопросы? Буду рада помочь в комментариях!
Последнее редактирование:
Последние темы в этом разделе:
- Узнаём что скрыто за пиксельным текстом(blur)
- Перевод видео в браузере Chrome как в Яндекс
- SEARCH ENGINE [flaru.com]
- KeePass - как хранить пароли
- Как зашифровать свой компьютер
- Гайд по использованию Whonix + Windows/Linux
- Правильно устанавливаем Windows 11 + Оптимизация системы
- Темы для оформления интерфейса Windows 11/10
- Как заблокировать ВСЮ рекламу в браузере (Лучше чем adblock plus)
- Отключение автозапуска приложений в Windows.