Добавлены параметры telegram id и telegram url

This commit is contained in:
Alexander Popov 2025-05-01 20:18:46 +03:00
parent 35c2a3e578
commit f4ce13a2c7
Signed by: iiiypuk
GPG Key ID: E47FE0AB36CD5ED6
4 changed files with 36 additions and 13 deletions

View File

@ -35,7 +35,7 @@ async def get_top_wins() -> None:
time.sleep(1) time.sleep(1)
async for message in client.get_chat_history(BOT_NAME, limit=1): async for message in client.get_chat_history(BOT_NAME, limit=1):
parse_wins_top(message) await parse_wins_top(message)
await client.read_chat_history(BOT_NAME) await client.read_chat_history(BOT_NAME)
@ -71,7 +71,7 @@ async def get_top_donates() -> None:
time.sleep(1) time.sleep(1)
async for message in client.get_chat_history(BOT_NAME, limit=1): async for message in client.get_chat_history(BOT_NAME, limit=1):
parse_donates_top(message) await parse_donates_top(message)
await client.read_chat_history(BOT_NAME) await client.read_chat_history(BOT_NAME)

View File

@ -3,12 +3,14 @@ import re
# Импорт сторонних модулей # Импорт сторонних модулей
from pyrogram.types import Message from pyrogram.types import Message
from pyrogram.enums import MessageEntityType
# Импорт модулей приложения # Импорт модулей приложения
from . import db from . import db
from .utils import get_telegram_id, get_player_data
def parse_wins_top(message: Message) -> None: async def parse_wins_top(message: Message) -> None:
"""Выполняет парсинг данных топа побед членов клана""" """Выполняет парсинг данных топа побед членов клана"""
if message.text.startswith('🏆 Топ по победам'): if message.text.startswith('🏆 Топ по победам'):
players = message.text.split('\n') players = message.text.split('\n')
@ -30,23 +32,24 @@ def parse_wins_top(message: Message) -> None:
battle_count = battle_count.replace('', '') # удаляем эмодзи мечей battle_count = battle_count.replace('', '') # удаляем эмодзи мечей
battle_count = int(re.sub(r'[^\x00-\x7F]', '', battle_count)) # преобразовывает строку в число battle_count = int(re.sub(r'[^\x00-\x7F]', '', battle_count)) # преобразовывает строку в число
player_url, player_telegram_id = await get_player_data(message, idx)
WINS.append( WINS.append(
{ {
# 'telegram_id': message.entities[idx].url.strip('http://t.me/'), 'telegram_id': player_telegram_id,
'username': player, 'username': player,
'count': battle_count, 'count': battle_count,
'url': player_url,
} }
) )
# print('{0} - {1} (@{2})'.format(player, battle_count, message.entities[idx].url.strip('http://t.me/')))
print(WINS) print(WINS)
db.add_data(WINS, True) db.add_data(WINS, True)
else: else:
pass pass
def parse_donates_top(message: Message) -> None: async def parse_donates_top(message: Message) -> None:
"""Выполняет парсинг данных топа пожертвований членов клана""" """Выполняет парсинг данных топа пожертвований членов клана"""
if message.text.startswith('🏆 Топ по пожертвованиям'): if message.text.startswith('🏆 Топ по пожертвованиям'):
players = message.text.split('\n') players = message.text.split('\n')
@ -71,16 +74,17 @@ def parse_donates_top(message: Message) -> None:
donates_count = donates_count.replace(' 💠', '') # удаляем эмодзи пожертвований donates_count = donates_count.replace(' 💠', '') # удаляем эмодзи пожертвований
donates_count = int(re.sub(r'[^\x00-\x7F]', '', donates_count)) # преобразовывает строку в число donates_count = int(re.sub(r'[^\x00-\x7F]', '', donates_count)) # преобразовывает строку в число
player_url, player_telegram_id = await get_player_data(message, idx)
DONATES.append( DONATES.append(
{ {
# 'telegram_id': message.entities[idx].url.strip('http://t.me/'), 'telegram_id': player_telegram_id,
'username': player, 'username': player,
'count': donates_count, 'count': donates_count,
'url': player_url,
} }
) )
# print('{0} - {1} (@{2})'.format(player, donates_count, message.entities[idx].url.strip('http://t.me/')))
print(DONATES) print(DONATES)
db.add_data(DONATES, False) db.add_data(DONATES, False)
else: else:

View File

@ -1,8 +1,27 @@
# Импорт сторонних модулей
from pyrogram.types import Message
from pyrogram.enums import MessageEntityType
from . import client from . import client
async def get_telegram_id(username: str) -> int: async def get_telegram_id(username: str) -> int:
"""Возвращает Telegram ID по имени пользователя""" """Возвращает Telegram ID"""
telegram_user = await client.get_users(username) telegram_user = await client.get_users(username)
return telegram_user.id return telegram_user.id
async def get_player_data(message: Message, idx: int) -> tuple():
"""..."""
if message.entities[idx].type == MessageEntityType.TEXT_LINK:
player_url = message.entities[idx].url
player_telegram_id = await get_telegram_id(player_url.replace('http://t.me/', ''))
elif message.entities[idx].type == MessageEntityType.TEXT_MENTION:
player_url = None
player_telegram_id = message.entities[idx].user.id
else:
player_url = None
player_telegram_id = None
return (player_url, player_telegram_id)

View File

@ -1,7 +1,7 @@
[project] [project]
dynamic = [ "version" ] dynamic = [ "version" ]
name = "..." name = "ClanStat"
description = "..." description = "AniCard Clan Statistics"
authors = [ {name = "Alexander Popov", email = "iiiypuk@fastmail.fm"}, ] authors = [ {name = "Alexander Popov", email = "iiiypuk@fastmail.fm"}, ]
readme = "README.md" readme = "README.md"
license = { text = "MIT-0 License" } license = { text = "MIT-0 License" }