This commit is contained in:
Alexander Popov 2025-03-13 13:44:26 +03:00
parent 30c2505379
commit 055b7f3bbd
Signed by: iiiypuk
GPG Key ID: E47FE0AB36CD5ED6
10 changed files with 29 additions and 8 deletions

3
.gitignore vendored
View File

@ -5,3 +5,6 @@
# App
.env
db.sqlite
# Docs
docs/

View File

@ -5,6 +5,8 @@ include_toc: true
# 🎴 Бот для ведения статистики клана в AniCard
![](./assets/icon.png)
## 📦 Возможности
- [ ] Сохранение статистики побед в КВ членов клана

View File

@ -1,6 +1,6 @@
# Информация о программе
__author__ = 'Alexander Popov'
__version__ = (0, 0, 1)
__version__ = (1, 0, 0)
# Импорт модулей стандартной библиотеки
from os import getenv
@ -15,13 +15,17 @@ from .db import DataBase
load_dotenv() # Выполняет чтение .env
# Приложение
client = Client(getenv('ACCOUNT'), api_id=getenv('APP_ID'), api_hash=getenv('APP_HASH'))
"""Клиент Telegram"""
# База данных
db = DataBase(getenv('DB_PATH'))
"""База данных"""
# Логгер
logger.add(getenv('LOG_PATH'), compression='zip')
"""Логгер"""
DELAY_TIME = 12 * 60 * 60 # 12 часов
"""Время приостановки выполнения цикла сбора статистики"""
BOT_NAME = '@anicardplaybot'
"""Имя бота"""

View File

@ -2,11 +2,12 @@
import time
# Импорт модулей приложения
from . import client, db, logger
from . import client, db, logger, DELAY_TIME
from .actions import get_top_wins, get_top_donates
async def main():
"""Запускак клиента Telegram"""
await client.start()
logger.info('Клиент Telegram запущен')
@ -22,7 +23,8 @@ async def main():
except Exception as e:
logger.error('Ошибка получения списка пожертвований')
time.sleep(12 * 60 * 60) # 12 часов
# Приостанавливает выполнение цикла
time.sleep(DELAY_TIME)
await client.stop()
logger.info('Клиент Telegram остановлен')

View File

@ -7,6 +7,7 @@ from .collect import parse_wins_top, parse_donates_top
async def get_top_wins() -> None:
"""Получает топ клана по победам"""
logger.info('Выполняется получения списка побед клана')
await client.send_message(BOT_NAME, '🛡 Мой клан')
@ -42,6 +43,7 @@ async def get_top_wins() -> None:
async def get_top_donates() -> None:
"""Получает топ клана по пожертвованиям"""
logger.info('Выполняется получения списка пожертвований клана')
await client.send_message(BOT_NAME, '🛡 Мой клан')

View File

@ -9,6 +9,7 @@ from . import db
def parse_wins_top(message: Message) -> None:
"""Выполняет парсинг данных топа побед членов клана"""
if message.text.startswith('🏆 Топ по победам'):
gamers = message.text.split('\n')
gamers.pop(0)
@ -45,6 +46,7 @@ def parse_wins_top(message: Message) -> None:
def parse_donates_top(message: Message) -> None:
"""Выполняет парсинг данных топа пожертвований членов клана"""
if message.text.startswith('🏆 Топ по пожертвованиям'):
players = message.text.split('\n')

View File

@ -4,25 +4,30 @@ import json
class DataBase(object):
"""..."""
"""Класс для работы с базой данных"""
def __init__(self, path):
super(DataBase, self).__init__()
self.path = path
"""Путь к файлу базы данных SQLite3"""
def connect(self) -> bool:
"""Выполняет подключение к базе данных"""
self.conn = sqlite3.connect(self.path)
return True
def close(self) -> bool:
"""Закрывает подключение к базе данных"""
self.conn.close()
return True
def commit(self) -> None:
"""Выполняет коммит"""
self.conn.commit()
return True
def add_data(self, data, wins: bool) -> bool: # wins изменит на Enum
"""Добавляет данные в базу данных"""
if wins:
table = 'wins'
else:

BIN
assets/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 KiB

View File

@ -11,7 +11,7 @@ requires-python = ">= 3.8"
classifiers=[ 'License :: OSI Approved :: MIT No Attribution License (MIT-0)', ]
[project.urls]
Changelog = "https://change.me//CHANGELOG.md"
Changelog = "https://git.a2s.su/AniCard/ClanStat/src/branch/master/CHANGELOG.md"
[tool.black]
skip-string-normalization = true

View File

@ -1,4 +1,5 @@
loguru==0.7.2
pdoc==15.0.1
Pyrogram==2.0.106
python-dotenv==1.0.1
TgCrypto==1.2.5