Добро пожаловать! Игровой форум WLUX.NET - Игры, Читы, Скрипты, Статьи, Софт, Курсы.

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. После регистрации и входа в систему вы сможете создавать темы, публиковать ответы на существующие темы, повышать репутацию участников, скачивать вложения и файлы и многое, многое другое. Так чего же вы ждете?

Добро пожаловать гость!

Приветствуем вас на нашем форуме! Мы очень рады вас видеть и с большим удовольствием поделимся всей информацией нашего форума!

Мы уважаем своих пользователей и так же ждем от вас приятного общения.

Система наград, ежедневное пополнения тем!

Общайся, получай награды.

Статьи, гайды, софт

У нас вы можете скачать бесплатно читы для игр. Полезные гайды на любые темы и схемы заработка. Есть раздел халявы!

FAQ по форуму

Не понимаю, как и что тут работает у вас?!Как создавать темы, писать сообщения, как получать реакции. Почему не засчитывает сообщения. Все ответы здесь

  • Добро пожаловать на сайт - wlux.net!

    FAQ по форуму

    1. Все сообщения до группы местный проходят модерацию от 1 минуты до 24 часа

    2. Сообщения учитываються в следующих разделах: Читать

    3.Что-бы скачать вложение нужно 2 сообщения.

    4.Личные переписки работают только с Администрацией форума

    5. Запрещено: Просить скрытый текст , спам, реклама, скам, ддос, кардинг и другая чернуха, нарушать любые законы РФ/СНГ = бан аккаунта

    6. Внимание! Мы не удаляем аккаунты с форума! Будьте внимательны ДО регистрации! Как удалить аккаунт на форуме?!

    5.Не понимаю, как и что тут работает у вас?!Как создавать темы, писать сообщения, как получать реакции. Почему не засчитывает сообщения. Все ответы здесь

Гайд Удаление всех сообщений из групп telegram

cyberpsycho Онлайн

cyberpsycho 

Проверенный
Местный
LV
2
 
03.11.2024
63
2
18
Награды
4
Пол
Жен.

Репутация:

Быстрое вступление.
Данный гайд будет полезен тем, кто хочет быстро удалить все сообщения, оставленные в групповых чатах в 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()

Остались вопросы? Буду рада помочь в комментариях!
 
Последнее редактирование:
B Оффлайн

beytor

Участник
LV
0
 
20.11.2024
2
0
6
24

Репутация:

Очень хороший гайд, все расписано, побольше бы такого!

Удачки)
 
soboc Оффлайн

soboc

Участник
LV
2
 
12.11.2024
25
0
21
Награды
4
24

Репутация:

ждём, звучит очень интересно!!
 
A Оффлайн

aardvark5299

Местный
Участник
LV
2
 
20.10.2024
61
1
17
Награды
4
23

Репутация:

Спасибо за гайд по ТГ все работает
 
D Оффлайн

d13751684

Участник
LV
0
 
20.11.2024
2
0
6
19

Репутация:

Ооооо, спасибо, это пригодится
 
C Оффлайн

chikatiloMasik

Участник
LV
2
 
16.05.2024
5
0
24
Награды
2
26

Репутация:

можно попробовать но хз как
 
S Оффлайн

suufy

Участник
LV
0
 
21.11.2024
4
0
6
26

Репутация:

Спасибо за гайд по ТГ все работает
 
wtreq Оффлайн

wtreq

Участник
LV
0
 
21.11.2024
1
0
6
20

Репутация:

Спасибо, очень помог этим
 
I Оффлайн

Islam Syndicate

Участник
LV
0
 
21.11.2024
15
0
7
Награды
1
28

Репутация:

Спасибо, очень полезная информация 👍
 
B Оффлайн

bob0

Участник
LV
0
 
06.11.2024
5
0
6
Награды
1
24

Репутация:

Ого , спасибо большое , буду знать
 
Y Оффлайн

yoike

Участник
LV
3
 
03.06.2024
2
0
24
Награды
3
23

Репутация:

Ого , спасибо большое , буду знать
 
Z Оффлайн

zoomonic

Участник
LV
2
 
06.09.2024
4
0
9
Награды
2
22

Репутация:

Мда… люди так и не научились пользоваться Гуглом)
 
D Оффлайн

dragonklllagrn

Участник
LV
0
 
22.11.2024
11
0
7
Награды
1
25

Репутация:

Быстрое вступление.
Данный гайд будет полезен тем, кто хочет быстро удалить все сообщения, оставленные в групповых чатах в 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()

Остались вопросы? Буду рада помочь в комментариях!
Замечательный гайд с подробной информацией по всем аспектам, думаю тоже попробовать!
 
E Оффлайн

Evegi

Участник
LV
0
 
22.11.2024
3
0
6
Награды
1
25

Репутация:

Спасибо, очень полезный скрипт
 
Foty Оффлайн

Foty

Участник
LV
2
 
11.10.2024
7
0
12
Награды
2
22

Репутация:

Благодарю, то что я искал(y)
 
Gleb_Klishe Оффлайн

Gleb_Klishe

Участник
LV
0
 
23.11.2024
4
0
7
24

Репутация:

Быстрое вступление.
Данный гайд будет полезен тем, кто хочет быстро удалить все сообщения, оставленные в групповых чатах в 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()

Остались вопросы? Буду рада помочь в комментариях!
хороший гайд удачи всем))
 
О Оффлайн

олемя

Участник
LV
0
 
23.11.2024
5
0
5
30

Репутация:

Спасибо за гайд. Буду пользоваться.
 
T Оффлайн

Tanker2

Участник
LV
0
 
23.11.2024
6
0
6
Награды
1
32

Репутация:

Огромное спасибо! Очень хороший гайд, всё расписано, еще раз благодарю!
 

Поиск по форуму

shape1
shape2
shape3
shape4
shape7
shape8
Верх