# Импорт модулей стандартной библиотеки import re # Импорт сторонних модулей from pyrogram.types import Message from pyrogram.enums import MessageEntityType # Импорт модулей приложения from . import db from .utils import get_telegram_id, get_player_data async def parse_wins_top(message: Message) -> None: """Выполняет парсинг данных топа побед членов клана""" if message.text.startswith('🏆 Топ по победам'): players = message.text.split('\n') players.pop(0) players.pop(0) WINS = list() for idx, player in enumerate(players): player = re.sub(r'^\d+. ', '', player) # удаляет нумерацию player, battle_count = player.split(' - ') # разделяет ник и количество побед в клановых сражениях # оставляет ники игроков, Python не может в эмодзи в RegExp, по этому пришлось делать через str.replace() # player = re.sub(r'\s[⚡⚜]$', '', player) player = player.replace(' ⚡', '') player = player.replace(' ⚜', '').replace('\ufe0f', '') player = player.replace(' 💎', '') battle_count = battle_count.replace(' ⚔', '') # удаляем эмодзи мечей battle_count = int(re.sub(r'[^\x00-\x7F]', '', battle_count)) # преобразовывает строку в число player_url, player_telegram_id = await get_player_data(message, idx) WINS.append( { 'telegram_id': player_telegram_id, 'username': player, 'count': battle_count, 'url': player_url, } ) print(WINS) db.add_data(WINS, True) else: pass async def parse_donates_top(message: Message) -> None: """Выполняет парсинг данных топа пожертвований членов клана""" if message.text.startswith('🏆 Топ по пожертвованиям'): players = message.text.split('\n') # Удаляет из массива строку с заголовком и последующую пустую строку players.pop(0) players.pop(0) DONATES = list() for idx, player in enumerate(players): player = re.sub(r'^\d+. ', '', player) # удаляет нумерацию player, donates_count = player.split(' - ') # разделяет ник и количество пожертвований в клановую сокровищницу # Оставляет только ники игроков. # Python не может парсить эмодзи в RegExp, по этому пришлось делать через str.replace() # player = re.sub(r'\s[⚡⚜]$', '', player) player = player.replace(' ⚡', '') player = player.replace(' ⚜', '').replace('\ufe0f', '') player = player.replace(' 💎', '') donates_count = donates_count.replace(' 💠', '') # удаляем эмодзи пожертвований donates_count = int(re.sub(r'[^\x00-\x7F]', '', donates_count)) # преобразовывает строку в число player_url, player_telegram_id = await get_player_data(message, idx) DONATES.append( { 'telegram_id': player_telegram_id, 'username': player, 'count': donates_count, 'url': player_url, } ) print(DONATES) db.add_data(DONATES, False) else: pass