Исправление цикла для ВК и небольшие правки
This commit is contained in:
143
del-tests.py
Normal file
143
del-tests.py
Normal file
@@ -0,0 +1,143 @@
|
||||
import discord
|
||||
import asyncio
|
||||
import requests
|
||||
import logging
|
||||
import time
|
||||
|
||||
from telethon import TelegramClient, events
|
||||
from discord.ext.commands import Bot
|
||||
|
||||
import keys # Файл, где хранятся ваши ключи доступа
|
||||
|
||||
url_vk_get = "https://api.vk.com/method/wall.get"
|
||||
url_vk_delete = "https://api.vk.com/method/wall.delete"
|
||||
|
||||
# Укажите ваши токены и ID каналов
|
||||
TELEGRAM_API_ID = keys.api_id_tg
|
||||
TELEGRAM_API_HASH = keys.api_hash_tg
|
||||
DISCORD_TOKEN = keys.discord_token
|
||||
TELEGRAM_CHAT_ID = keys.channel_username_tg
|
||||
DISCORD_CHANNEL_ID = keys.dicord_channel # Укажите ID вашего канала
|
||||
|
||||
# Создание экземпляра клиента Telethon
|
||||
telegram_client = TelegramClient('session_name', TELEGRAM_API_ID, TELEGRAM_API_HASH)
|
||||
|
||||
|
||||
# Удаление сообщений из Telegram
|
||||
async def delete_all_telegram_messages(client, chat_id):
|
||||
async for message in client.iter_messages(chat_id):
|
||||
try:
|
||||
await client.delete_messages(chat_id, message.id)
|
||||
time.sleep(1.0)
|
||||
print(f"Удалено сообщение {message.id}")
|
||||
except Exception as e:
|
||||
print(f"Не удалось удалить сообщение {message.id}: {e}")
|
||||
|
||||
|
||||
# Удаление сообщений из Discord
|
||||
class MyClient(discord.Client):
|
||||
async def on_ready(self):
|
||||
print(f'Вошли как {self.user}')
|
||||
channel = self.get_channel(DISCORD_CHANNEL_ID)
|
||||
if channel is not None:
|
||||
await self.delete_all_messages(channel)
|
||||
|
||||
async def delete_all_messages(self, channel):
|
||||
try:
|
||||
async for message in channel.history(limit=100): # Установите лимит
|
||||
try:
|
||||
await message.delete()
|
||||
print(f'Удалено сообщение {message.id}')
|
||||
except Exception as e:
|
||||
print(f"Не удалось удалить сообщение {message.id}: {e}")
|
||||
except Exception as e:
|
||||
print(f"Не удалось получить историю сообщений: {e}")
|
||||
await self.close()
|
||||
|
||||
|
||||
intents = discord.Intents.default()
|
||||
intents.message_content = True
|
||||
discord_client = MyClient(intents=intents)
|
||||
|
||||
|
||||
# Основная функция
|
||||
async def main():
|
||||
await telegram_client.start()
|
||||
print("Telegram клиент запущен")
|
||||
await delete_all_telegram_messages(telegram_client, TELEGRAM_CHAT_ID)
|
||||
await telegram_client.disconnect()
|
||||
|
||||
|
||||
params_get = {
|
||||
'access_token': keys.user_token_vk,
|
||||
'v': '5.199', # Версия API
|
||||
'owner_id': str(keys.own_id),
|
||||
'count': 100,
|
||||
'offset': 0
|
||||
}
|
||||
|
||||
|
||||
def get_all_posts():
|
||||
all_posts = []
|
||||
while True:
|
||||
response = requests.get(url_vk_get, params=params_get)
|
||||
data = response.json()
|
||||
print(data)
|
||||
if 'error' in data:
|
||||
logging.error(f"Ошибка {data['error']['error_code']}: {data['error']['error_msg']}")
|
||||
break
|
||||
|
||||
items = data.get('response', {}).get('items', [])
|
||||
if not items:
|
||||
break
|
||||
|
||||
all_posts.extend(items)
|
||||
if len(items) < 100:
|
||||
break
|
||||
|
||||
params_get['offset'] += 100
|
||||
|
||||
return all_posts
|
||||
|
||||
|
||||
params_delete = {
|
||||
'access_token': keys.user_token_vk,
|
||||
'v': '5.199' # Версия API
|
||||
}
|
||||
|
||||
|
||||
def delete_post(post_id):
|
||||
params_delete.update({
|
||||
'owner_id': str(keys.own_id),
|
||||
'post_id': post_id
|
||||
})
|
||||
response = requests.post(url_vk_delete, params=params_delete)
|
||||
data = response.json()
|
||||
if 'error' in data:
|
||||
logging.error(f"Ошибка {data['error']['error_code']}: {data['error']['error_msg']}")
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def delete_all_posts():
|
||||
print("Удаление ВК постов запущено")
|
||||
all_posts = get_all_posts()
|
||||
print(all_posts)
|
||||
if not all_posts:
|
||||
logging.info("Нет постов для удаления")
|
||||
return
|
||||
|
||||
for post in all_posts:
|
||||
|
||||
post_id = post['id']
|
||||
if delete_post(post_id):
|
||||
logging.info(f"Пост {post_id} успешно удален")
|
||||
else:
|
||||
logging.error(f"Не удалось удалить пост {post_id}")
|
||||
time.sleep(1.0) # Пауза между запросами, чтобы избежать превышения лимитов API
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
delete_all_posts()
|
||||
discord_client.run(DISCORD_TOKEN)
|
||||
asyncio.run(main())
|
Reference in New Issue
Block a user