summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitrii Morozov <snoopdesigns@gmail.com>2024-05-07 16:50:38 +0200
committerDmitrii Morozov <snoopdesigns@gmail.com>2024-05-07 16:50:38 +0200
commitcfa79cbbaf42a8f74a2cd4bca4d1d495b4d597f1 (patch)
tree6112ceda171cda2ed8c40c53cc0a8e0766c6e008
parentf5c57d8e73f33ca1d7374a2662fbc7a4592eb7cd (diff)
Python code style
-rw-r--r--FortniteEvents.py35
-rw-r--r--FortniteStatusNotifier.py37
-rw-r--r--app_types.py (renamed from Types.py)8
-rw-r--r--commands.py12
-rw-r--r--formatter.py (renamed from Formatter.py)2
-rwxr-xr-xfortnite_client.py (renamed from FortniteClient.py)22
-rw-r--r--fortnite_events.py35
-rw-r--r--fortnite_status_notifier.py37
-rw-r--r--persistence.py68
-rw-r--r--telegram_bot.py (renamed from TelegramBot.py)10
-rwxr-xr-xtgbot.py10
11 files changed, 138 insertions, 138 deletions
diff --git a/FortniteEvents.py b/FortniteEvents.py
deleted file mode 100644
index c096818..0000000
--- a/FortniteEvents.py
+++ /dev/null
@@ -1,35 +0,0 @@
-import fortnitepy
-import typing
-import time
-from FortniteClient import *
-from TelegramBot import *
-from persistence import PresenceRepository
-from Formatter import *
-
-class ClientInitObserverImpl(ClientInitObserver):
- async def on_event(self, fortniteClient: FortniteClient) -> None:
- print('----------------')
- print('FortniteClient ready as:')
- print(fortniteClient.user.display_name)
- print(fortniteClient.user.id)
- print('----------------')
-
-class FriendPresenceObserverImpl(FriendPresenceObserver):
-
- __telegramBot: TelegramBot
- __presenceRepository: PresenceRepository
-
- def __init__(self, telegramBot: TelegramBot, presenceRepository: PresenceRepository):
- self.__telegramBot = telegramBot
- self.__presenceRepository = presenceRepository
-
- async def update(self, display_name: str, playing: bool, party_size: int) -> None:
- if playing:
- last_presence = self.__presenceRepository.getLastUserPresence(display_name)
- diff = time.time() - last_presence
- if diff > 60 * 60: # 60 minutes
- await self.__notifyFriendPlaying(display_name, party_size)
- self.__presenceRepository.setLastUserPresence(display_name, time.time())
-
- async def __notifyFriendPlaying(self, display_name: str, party_size: int):
- await self.__telegramBot.send_message_to_all(format_friend_online(display_name, party_size)) \ No newline at end of file
diff --git a/FortniteStatusNotifier.py b/FortniteStatusNotifier.py
deleted file mode 100644
index 7932380..0000000
--- a/FortniteStatusNotifier.py
+++ /dev/null
@@ -1,37 +0,0 @@
-from telebot import formatting
-import time
-import asyncio
-from pythonFortniteStatus.FortniteStatus import *
-
-# Polling interval in seconds
-__polling_interval__ = 5 * 60 # 5 minutes
-
-class FortniteStatusObserver:
- async def update(self, fortnite_status) -> None:
- pass
-
-class FortniteStatusNotifier:
-
- __fortniteStatusObserver: FortniteStatusObserver
- __fortniteStatus: FortniteStatus
- __lastFortniteStatus: any
-
- def __init__(self, fortniteStatusObserver: FortniteStatusObserver):
- self.__fortniteStatusObserver = fortniteStatusObserver
- self.__fortniteStatus = FortniteStatus()
-
- async def run(self):
- # Initialize status
- self.__lastFortniteStatus = self.__fortniteStatus.getStatus()
- while True:
- await self.__readStatus()
- await asyncio.sleep(__polling_interval__)
-
- async def __readStatus(self):
- serviceStatusTmp = self.__fortniteStatus.getStatus()
- if serviceStatusTmp != self.__lastFortniteStatus:
- await self.__notify(serviceStatusTmp)
- self.__lastFortniteStatus = serviceStatusTmp
-
- async def __notify(self, fortniteStatus):
- await self.__fortniteStatusObserver.update(fortniteStatus) \ No newline at end of file
diff --git a/Types.py b/app_types.py
index fc2e034..699928a 100644
--- a/Types.py
+++ b/app_types.py
@@ -13,7 +13,7 @@ class User:
id: str
display_name: str
- __fortniteUser: fortnitepy.user.UserBase
+ __fortnite_user: fortnitepy.user.UserBase
def from_fortnite_friend(user: fortnitepy.user.UserBase):
@@ -24,13 +24,13 @@ class User:
instance.id = user.id
instance.display_name = user.display_name
- instance.__fortniteUser = user
+ instance.__fortnite_user = user
return instance
async def fetch_stats(self) -> UserStats:
- stats = await self.__fortniteUser.fetch_br_stats()
- bp_level: float = await self.__fortniteUser.fetch_battlepass_level(season=29) # TODO
+ stats = await self.__fortnite_user.fetch_br_stats()
+ bp_level: float = await self.__fortnite_user.fetch_battlepass_level(season=29) # TODO
combined_stats = stats.get_combined_stats()
device_stats = {}
if 'keyboardmouse' in combined_stats:
diff --git a/commands.py b/commands.py
index 4cf330b..feba4b8 100644
--- a/commands.py
+++ b/commands.py
@@ -1,8 +1,8 @@
import telebot
-from TelegramBot import *
-from Formatter import *
+from telegram_bot import *
+from formatter import *
from persistence import *
-from FortniteClient import FortniteClient
+from fortnite_client import FortniteClient
from pythonFortniteStatus.FortniteStatus import *
class StartCommand(CommandHandler):
@@ -19,7 +19,7 @@ class StartCommand(CommandHandler):
alias = message.chat.username
else:
alias = message.chat.title
- self.__user_repository.putUser(message.chat.id, alias)
+ self.__user_repository.put_user(message.chat.id, alias)
await self.__telegram_bot.reply(message, 'This chat successfully registered to receive Fortnite updates')
class GetStatusCommand(CommandHandler):
@@ -74,7 +74,7 @@ class GetTodayStatsCommand(CommandHandler):
self.__stats_repository = stats_repository
async def handle(self, message: telebot.types.Message):
- persisted_stats = self.__stats_repository.getStats()
+ persisted_stats = self.__stats_repository.get_stats()
friends = await self.__fortnite_client.get_friends()
current_stats = [await friend.fetch_stats() for friend in friends]
await self.__telegram_bot.reply(message, format_user_stats_difference(persisted_stats, current_stats))
@@ -91,4 +91,4 @@ class RecordStatsCommand(CommandHandler):
async def handle(self, message: telebot.types.Message):
friends = await self.__fortnite_client.get_friends()
for friend in friends:
- await self.__stats_repository.putStats(friend) \ No newline at end of file
+ await self.__stats_repository.put_stats(friend) \ No newline at end of file
diff --git a/Formatter.py b/formatter.py
index fa7a316..9efc249 100644
--- a/Formatter.py
+++ b/formatter.py
@@ -1,6 +1,6 @@
from telebot import formatting
import typing
-from Types import *
+from app_types import *
# Status
def format_fortnite_status(fortnite_status):
diff --git a/FortniteClient.py b/fortnite_client.py
index c52aacb..16b2652 100755
--- a/FortniteClient.py
+++ b/fortnite_client.py
@@ -5,7 +5,7 @@ import json
import os
import typing
from device_auth import DeviceAuth
-from Types import *
+from app_types import *
__fortnite_account_key__ = 'fornite-account-key'
@@ -15,19 +15,19 @@ class FriendPresenceObserver:
pass
class ClientInitObserver:
- async def on_event(self, fortniteClient) -> None:
+ async def on_event(self, fortnite_client) -> None:
pass
class FortniteClient(fortnitepy.Client):
__device_auth: DeviceAuth
- __friendPresenceObserver: FriendPresenceObserver
- __clientInitObserver: ClientInitObserver
+ __friend_presence_observer: FriendPresenceObserver
+ __client_init_observer: ClientInitObserver
- def __init__(self, clientInitObserver: ClientInitObserver, friendPresenceObserver: FriendPresenceObserver):
+ def __init__(self, client_init_observer: ClientInitObserver, friend_presence_observer: FriendPresenceObserver):
self.__device_auth = DeviceAuth()
- self.__clientInitObserver = clientInitObserver
- self.__friendPresenceObserver = friendPresenceObserver
+ self.__client_init_observer = client_init_observer
+ self.__friend_presence_observer = friend_presence_observer
if self.__device_auth.device_auth_file_exists():
self.__auth_device_auth()
else:
@@ -77,16 +77,16 @@ class FortniteClient(fortnitepy.Client):
async def event_ready(self):
await self.__generate_auth_details()
- await self.__clientInitObserver.on_event(self)
+ await self.__client_init_observer.on_event(self)
async def event_friend_request(self, request: typing.Union[fortnitepy.friend.IncomingPendingFriend, fortnitepy.friend.OutgoingPendingFriend]):
await IncomingFriendRequestEvent.on_event(request)
async def event_friend_presence(self, before, after: fortnitepy.Presence):
- await FriendPresenceEvent.on_event(before, after, self.__friendPresenceObserver)
+ await FriendPresenceEvent.on_event(before, after, self.__friend_presence_observer)
class FriendPresenceEvent:
- async def on_event(before, after: fortnitepy.Presence, friendPresenceObserver: FriendPresenceObserver):
+ async def on_event(before, after: fortnitepy.Presence, friend_presence_observer: FriendPresenceObserver):
if before is not None and after is not None:
if before.playing != after.playing:
print('FriendPresence changed for user {}, before {}, after {}'.format(after.friend.display_name, before.playing, after.playing))
@@ -95,7 +95,7 @@ class FriendPresenceEvent:
party: fortnitepy.PresenceParty = after.party
if party is not None and party.playercount is not None:
party_size = int(party.playercount)
- await friendPresenceObserver.update(
+ await friend_presence_observer.update(
after.friend.display_name,
after.playing,
party_size)
diff --git a/fortnite_events.py b/fortnite_events.py
new file mode 100644
index 0000000..d9e143f
--- /dev/null
+++ b/fortnite_events.py
@@ -0,0 +1,35 @@
+import fortnitepy
+import typing
+import time
+from fortnite_client import *
+from telegram_bot import *
+from persistence import PresenceRepository
+from formatter import *
+
+class ClientInitObserverImpl(ClientInitObserver):
+ async def on_event(self, fortnite_client: FortniteClient) -> None:
+ print('----------------')
+ print('FortniteClient ready as:')
+ print(fortnite_client.user.display_name)
+ print(fortnite_client.user.id)
+ print('----------------')
+
+class FriendPresenceObserverImpl(FriendPresenceObserver):
+
+ __telegram_bot: TelegramBot
+ __presence_repository: PresenceRepository
+
+ def __init__(self, telegram_bot: TelegramBot, presence_repository: PresenceRepository):
+ self.__telegram_bot = telegram_bot
+ self.__presence_repository = presence_repository
+
+ async def update(self, display_name: str, playing: bool, party_size: int) -> None:
+ if playing:
+ last_presence = self.__presence_repository.get_last_user_presence(display_name)
+ diff = time.time() - last_presence
+ if diff > 60 * 60: # 60 minutes
+ await self.__notify_friend_playing(display_name, party_size)
+ self.__presence_repository.set_last_user_presence(display_name, time.time())
+
+ async def __notify_friend_playing(self, display_name: str, party_size: int):
+ await self.__telegram_bot.send_message_to_all(format_friend_online(display_name, party_size)) \ No newline at end of file
diff --git a/fortnite_status_notifier.py b/fortnite_status_notifier.py
new file mode 100644
index 0000000..edf3009
--- /dev/null
+++ b/fortnite_status_notifier.py
@@ -0,0 +1,37 @@
+from telebot import formatting
+import time
+import asyncio
+from pythonFortniteStatus.FortniteStatus import *
+
+# Polling interval in seconds
+__polling_interval__ = 5 * 60 # 5 minutes
+
+class FortniteStatusObserver:
+ async def update(self, fortnite_status) -> None:
+ pass
+
+class FortniteStatusNotifier:
+
+ __fortnite_status_observer: FortniteStatusObserver
+ __fortnite_status: FortniteStatus
+ __last_fortnite_status: any
+
+ def __init__(self, fortnite_status_observer: FortniteStatusObserver):
+ self.__fortnite_status_observer = fortnite_status_observer
+ self.__fortnite_status = FortniteStatus()
+
+ async def run(self):
+ # Initialize status
+ self.__last_fortnite_status = self.__fortniteStatus.getStatus()
+ while True:
+ await self.__read_status()
+ await asyncio.sleep(__polling_interval__)
+
+ async def __read_status(self):
+ service_status_tmp = self.__fortniteStatus.getStatus()
+ if service_status_tmp != self.__last_fortnite_status:
+ await self.__notify(service_status_tmp)
+ self.__last_fortnite_status = service_status_tmp
+
+ async def __notify(self, fortnite_status):
+ await self.__fortnite_status_observer.update(fortnite_status) \ No newline at end of file
diff --git a/persistence.py b/persistence.py
index f8d7097..512836e 100644
--- a/persistence.py
+++ b/persistence.py
@@ -1,5 +1,5 @@
import sqlite3, typing
-from Types import *
+from app_types import *
class UserRepository:
@@ -7,29 +7,29 @@ class UserRepository:
self.__initialize()
def __initialize(self):
- cur = self.__getConnection().cursor()
+ cur = self.__get_connection().cursor()
cur.execute("CREATE TABLE IF NOT EXISTS user(chat_id INT, alias TEXT)")
cur.execute("CREATE UNIQUE INDEX IF NOT EXISTS chat_id_idx ON user(chat_id)")
- def __getConnection(self):
+ def __get_connection(self):
return sqlite3.connect('db.sqlite')
- def getUser(self, chat_id):
- connection = self.__getConnection()
+ def get_user(self, chat_id):
+ connection = self.__get_connection()
cur = connection.cursor()
query = "select * from user where chat_id = {chat_id}".format(chat_id = chat_id)
cur.execute(query)
return cur.fetchone()
- def getAllUsers(self):
- connection = self.__getConnection()
+ def get_all_users(self):
+ connection = self.__get_connection()
cur = connection.cursor()
query = "select * from user"
cur.execute(query)
return cur.fetchall()
- def removeChat(self, chat_id):
- connection = self.__getConnection()
+ def remove_chat(self, chat_id):
+ connection = self.__get_connection()
cur = connection.cursor()
query = "DELETE FROM user where chat_id = {chat_id}".format(
chat_id = chat_id)
@@ -37,9 +37,9 @@ class UserRepository:
connection.commit()
- def putUser(self, chat_id, alias):
- if not self.getUser(chat_id):
- connection = self.__getConnection()
+ def put_user(self, chat_id, alias):
+ if not self.get_user(chat_id):
+ connection = self.__get_connection()
cur = connection.cursor()
query = "INSERT INTO user(chat_id, alias) VALUES({chat_id}, '{text}')".format(
chat_id = chat_id,
@@ -52,18 +52,18 @@ class StatsRepository:
def __init__(self):
self.__initialize()
- def __getConnection(self):
+ def __get_connection(self):
return sqlite3.connect('db.sqlite')
def __initialize(self):
- cur = self.__getConnection().cursor()
+ cur = self.__get_connection().cursor()
cur.execute("CREATE TABLE IF NOT EXISTS stats(user_id TEXT, display_name TEXT, level INT, matches_played INT, kills INT, wins INT)")
cur.execute("CREATE UNIQUE INDEX IF NOT EXISTS user_id_idx ON stats(user_id)")
- async def putStats(self, user: User):
+ async def put_stats(self, user: User):
stats: UserStats = await user.fetch_stats()
- connection = self.__getConnection()
+ connection = self.__get_connection()
cur = connection.cursor()
query = "INSERT OR REPLACE INTO stats(user_id, display_name, level, matches_played, kills, wins) VALUES('{user_id}', '{display_name}', {level}, {matches_played}, {kills}, {wins})".format(
user_id = user.id,
@@ -75,39 +75,39 @@ class StatsRepository:
cur.execute(query)
connection.commit()
- def getStats(self) -> typing.List[UserStats]:
- connection = self.__getConnection()
+ def get_stats(self) -> typing.List[UserStats]:
+ connection = self.__get_connection()
cur = connection.cursor()
query = "SELECT * FROM stats"
cur.execute(query)
result = cur.fetchall()
- return [self.__mapFromDb(stats) for stats in result]
+ return [self.__map_from_db(stats) for stats in result]
- def __mapFromDb(self, record):
- userStats = UserStats()
- userStats.user_id = str(record[0])
- userStats.user_display_name = str(record[1])
- userStats.level = int(record[2])
- userStats.matches_played = int(record[3])
- userStats.kills = int(record[4])
- userStats.wins = int(record[5])
- return userStats
+ def __map_from_db(self, record):
+ user_stats = UserStats()
+ user_stats.user_id = str(record[0])
+ user_stats.user_display_name = str(record[1])
+ user_stats.level = int(record[2])
+ user_stats.matches_played = int(record[3])
+ user_stats.kills = int(record[4])
+ user_stats.wins = int(record[5])
+ return user_stats
class PresenceRepository:
def __init__(self):
self.__initialize()
- def __getConnection(self):
+ def __get_connection(self):
return sqlite3.connect('db.sqlite')
def __initialize(self):
- cur = self.__getConnection().cursor()
+ cur = self.__get_connection().cursor()
cur.execute("CREATE TABLE IF NOT EXISTS user_presence(display_name TEXT, last_online INT)")
cur.execute("CREATE UNIQUE INDEX IF NOT EXISTS display_name_idx ON user_presence(display_name)")
- def getLastUserPresence(self, display_name):
- connection = self.__getConnection()
+ def get_last_user_presence(self, display_name):
+ connection = self.__get_connection()
cur = connection.cursor()
query = "select last_online from user_presence where display_name = '{display_name}'".format(display_name = display_name)
cur.execute(query)
@@ -118,8 +118,8 @@ class PresenceRepository:
else:
return 0
- def setLastUserPresence(self, display_name: str, last_online: int):
- connection = self.__getConnection()
+ def set_last_user_presence(self, display_name: str, last_online: int):
+ connection = self.__get_connection()
cur = connection.cursor()
query = "INSERT OR REPLACE INTO user_presence(display_name, last_online) VALUES('{display_name}', {last_online})".format(
display_name = display_name,
diff --git a/TelegramBot.py b/telegram_bot.py
index 50db950..26d3071 100644
--- a/TelegramBot.py
+++ b/telegram_bot.py
@@ -12,10 +12,10 @@ class CommandHandler:
class TelegramBot:
__bot: AsyncTeleBot
- __userRepository: UserRepository
+ __user_repository: UserRepository
- def __init__(self, userRepository: UserRepository):
- self.__userRepository = userRepository
+ def __init__(self, user_repository: UserRepository):
+ self.__user_repository = user_repository
# Check token in environment variables
if "TELEBOT_BOT_TOKEN" not in os.environ:
@@ -34,7 +34,7 @@ class TelegramBot:
commands=[ command ])
async def send_message_to_all(self, message_text: str):
- for user in self.__userRepository.getAllUsers():
+ for user in self.__user_repository.get_all_users():
try:
await self.__bot.send_message(
user[0],
@@ -43,7 +43,7 @@ class TelegramBot:
)
except Exception as error:
if 'bot was kicked from the group chat' in str(error):
- self.__userRepository.removeChat(user[0])
+ self.__user_repository.remove_chat(user[0])
async def reply(self, message, message_text):
await self.__bot.reply_to(
diff --git a/tgbot.py b/tgbot.py
index a0e248b..6fbd07c 100755
--- a/tgbot.py
+++ b/tgbot.py
@@ -1,12 +1,12 @@
#!/usr/bin/python3
import os, time, telebot, asyncio, telebot.async_telebot, nest_asyncio, sys
-from FortniteStatusNotifier import *
-from Formatter import *
-from FortniteClient import *
-from FortniteEvents import *
+from fortnite_status_notifier import *
+from formatter import *
+from fortnite_client import *
+from fortnite_events import *
from persistence import UserRepository, StatsRepository, PresenceRepository
-from TelegramBot import TelegramBot, CommandHandler
+from telegram_bot import TelegramBot, CommandHandler
from commands import *
class FortniteStatusObserverImpl(FortniteStatusObserver):