1.0.0
This commit is contained in:
parent
30c2505379
commit
055b7f3bbd
3
.gitignore
vendored
3
.gitignore
vendored
@ -5,3 +5,6 @@
|
|||||||
# App
|
# App
|
||||||
.env
|
.env
|
||||||
db.sqlite
|
db.sqlite
|
||||||
|
|
||||||
|
# Docs
|
||||||
|
docs/
|
||||||
|
@ -5,6 +5,8 @@ include_toc: true
|
|||||||
|
|
||||||
# 🎴 Бот для ведения статистики клана в AniCard
|
# 🎴 Бот для ведения статистики клана в AniCard
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## 📦 Возможности
|
## 📦 Возможности
|
||||||
|
|
||||||
- [ ] Сохранение статистики побед в КВ членов клана
|
- [ ] Сохранение статистики побед в КВ членов клана
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Информация о программе
|
# Информация о программе
|
||||||
__author__ = 'Alexander Popov'
|
__author__ = 'Alexander Popov'
|
||||||
__version__ = (0, 0, 1)
|
__version__ = (1, 0, 0)
|
||||||
|
|
||||||
# Импорт модулей стандартной библиотеки
|
# Импорт модулей стандартной библиотеки
|
||||||
from os import getenv
|
from os import getenv
|
||||||
@ -15,13 +15,17 @@ from .db import DataBase
|
|||||||
|
|
||||||
load_dotenv() # Выполняет чтение .env
|
load_dotenv() # Выполняет чтение .env
|
||||||
|
|
||||||
# Приложение
|
|
||||||
client = Client(getenv('ACCOUNT'), api_id=getenv('APP_ID'), api_hash=getenv('APP_HASH'))
|
client = Client(getenv('ACCOUNT'), api_id=getenv('APP_ID'), api_hash=getenv('APP_HASH'))
|
||||||
|
"""Клиент Telegram"""
|
||||||
|
|
||||||
# База данных
|
|
||||||
db = DataBase(getenv('DB_PATH'))
|
db = DataBase(getenv('DB_PATH'))
|
||||||
|
"""База данных"""
|
||||||
|
|
||||||
# Логгер
|
|
||||||
logger.add(getenv('LOG_PATH'), compression='zip')
|
logger.add(getenv('LOG_PATH'), compression='zip')
|
||||||
|
"""Логгер"""
|
||||||
|
|
||||||
|
DELAY_TIME = 12 * 60 * 60 # 12 часов
|
||||||
|
"""Время приостановки выполнения цикла сбора статистики"""
|
||||||
|
|
||||||
BOT_NAME = '@anicardplaybot'
|
BOT_NAME = '@anicardplaybot'
|
||||||
|
"""Имя бота"""
|
||||||
|
@ -2,11 +2,12 @@
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
# Импорт модулей приложения
|
# Импорт модулей приложения
|
||||||
from . import client, db, logger
|
from . import client, db, logger, DELAY_TIME
|
||||||
from .actions import get_top_wins, get_top_donates
|
from .actions import get_top_wins, get_top_donates
|
||||||
|
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
|
"""Запускак клиента Telegram"""
|
||||||
await client.start()
|
await client.start()
|
||||||
logger.info('Клиент Telegram запущен')
|
logger.info('Клиент Telegram запущен')
|
||||||
|
|
||||||
@ -22,7 +23,8 @@ async def main():
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error('Ошибка получения списка пожертвований')
|
logger.error('Ошибка получения списка пожертвований')
|
||||||
|
|
||||||
time.sleep(12 * 60 * 60) # 12 часов
|
# Приостанавливает выполнение цикла
|
||||||
|
time.sleep(DELAY_TIME)
|
||||||
|
|
||||||
await client.stop()
|
await client.stop()
|
||||||
logger.info('Клиент Telegram остановлен')
|
logger.info('Клиент Telegram остановлен')
|
||||||
|
@ -7,6 +7,7 @@ from .collect import parse_wins_top, parse_donates_top
|
|||||||
|
|
||||||
|
|
||||||
async def get_top_wins() -> None:
|
async def get_top_wins() -> None:
|
||||||
|
"""Получает топ клана по победам"""
|
||||||
logger.info('Выполняется получения списка побед клана')
|
logger.info('Выполняется получения списка побед клана')
|
||||||
|
|
||||||
await client.send_message(BOT_NAME, '🛡 Мой клан')
|
await client.send_message(BOT_NAME, '🛡 Мой клан')
|
||||||
@ -42,6 +43,7 @@ async def get_top_wins() -> None:
|
|||||||
|
|
||||||
|
|
||||||
async def get_top_donates() -> None:
|
async def get_top_donates() -> None:
|
||||||
|
"""Получает топ клана по пожертвованиям"""
|
||||||
logger.info('Выполняется получения списка пожертвований клана')
|
logger.info('Выполняется получения списка пожертвований клана')
|
||||||
|
|
||||||
await client.send_message(BOT_NAME, '🛡 Мой клан')
|
await client.send_message(BOT_NAME, '🛡 Мой клан')
|
||||||
|
@ -9,6 +9,7 @@ from . import db
|
|||||||
|
|
||||||
|
|
||||||
def parse_wins_top(message: Message) -> None:
|
def parse_wins_top(message: Message) -> None:
|
||||||
|
"""Выполняет парсинг данных топа побед членов клана"""
|
||||||
if message.text.startswith('🏆 Топ по победам'):
|
if message.text.startswith('🏆 Топ по победам'):
|
||||||
gamers = message.text.split('\n')
|
gamers = message.text.split('\n')
|
||||||
gamers.pop(0)
|
gamers.pop(0)
|
||||||
@ -45,6 +46,7 @@ def parse_wins_top(message: Message) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def parse_donates_top(message: Message) -> None:
|
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')
|
||||||
|
|
||||||
|
@ -4,25 +4,30 @@ import json
|
|||||||
|
|
||||||
|
|
||||||
class DataBase(object):
|
class DataBase(object):
|
||||||
"""..."""
|
"""Класс для работы с базой данных"""
|
||||||
|
|
||||||
def __init__(self, path):
|
def __init__(self, path):
|
||||||
super(DataBase, self).__init__()
|
super(DataBase, self).__init__()
|
||||||
self.path = path
|
self.path = path
|
||||||
|
"""Путь к файлу базы данных SQLite3"""
|
||||||
|
|
||||||
def connect(self) -> bool:
|
def connect(self) -> bool:
|
||||||
|
"""Выполняет подключение к базе данных"""
|
||||||
self.conn = sqlite3.connect(self.path)
|
self.conn = sqlite3.connect(self.path)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def close(self) -> bool:
|
def close(self) -> bool:
|
||||||
|
"""Закрывает подключение к базе данных"""
|
||||||
self.conn.close()
|
self.conn.close()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def commit(self) -> None:
|
def commit(self) -> None:
|
||||||
|
"""Выполняет коммит"""
|
||||||
self.conn.commit()
|
self.conn.commit()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def add_data(self, data, wins: bool) -> bool: # wins изменит на Enum
|
def add_data(self, data, wins: bool) -> bool: # wins изменит на Enum
|
||||||
|
"""Добавляет данные в базу данных"""
|
||||||
if wins:
|
if wins:
|
||||||
table = 'wins'
|
table = 'wins'
|
||||||
else:
|
else:
|
||||||
|
BIN
assets/icon.png
Normal file
BIN
assets/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 681 KiB |
@ -11,7 +11,7 @@ requires-python = ">= 3.8"
|
|||||||
classifiers=[ 'License :: OSI Approved :: MIT No Attribution License (MIT-0)', ]
|
classifiers=[ 'License :: OSI Approved :: MIT No Attribution License (MIT-0)', ]
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
Changelog = "https://change.me//CHANGELOG.md"
|
Changelog = "https://git.a2s.su/AniCard/ClanStat/src/branch/master/CHANGELOG.md"
|
||||||
|
|
||||||
[tool.black]
|
[tool.black]
|
||||||
skip-string-normalization = true
|
skip-string-normalization = true
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
loguru==0.7.2
|
loguru==0.7.2
|
||||||
|
pdoc==15.0.1
|
||||||
Pyrogram==2.0.106
|
Pyrogram==2.0.106
|
||||||
python-dotenv==1.0.1
|
python-dotenv==1.0.1
|
||||||
TgCrypto==1.2.5
|
TgCrypto==1.2.5
|
||||||
|
Loading…
Reference in New Issue
Block a user