Исправление цикла для ВК и небольшие правки

This commit is contained in:
2024-11-10 21:27:50 +03:00
parent 9483aad1fa
commit 188acdd812
3 changed files with 189 additions and 47 deletions

143
del-tests.py Normal file
View 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())