kopia lustrzana https://github.com/mkdryden/telegram-stats-bot
revert dbcc41ff
since methods are not actually internal
rodzic
271f21d11d
commit
447172ef0e
|
@ -92,8 +92,8 @@ def update_usernames_wrapper(context: CallbackContext):
|
||||||
|
|
||||||
|
|
||||||
def update_usernames(context: CallbackContext): # context.job.context contains the chat_id
|
def update_usernames(context: CallbackContext): # context.job.context contains the chat_id
|
||||||
user_ids = stats._get_message_user_ids()
|
user_ids = stats.get_message_user_ids()
|
||||||
db_users = stats._get_db_users()
|
db_users = stats.get_db_users()
|
||||||
tg_users = {user_id: None for user_id in user_ids}
|
tg_users = {user_id: None for user_id in user_ids}
|
||||||
to_update = {}
|
to_update = {}
|
||||||
for u_id in tg_users:
|
for u_id in tg_users:
|
||||||
|
@ -109,9 +109,9 @@ def update_usernames(context: CallbackContext): # context.job.context contains
|
||||||
to_update[u_id] = tg_users[u_id]
|
to_update[u_id] = tg_users[u_id]
|
||||||
except BadRequest: # Handle users no longer in chat or haven't messaged since bot joined
|
except BadRequest: # Handle users no longer in chat or haven't messaged since bot joined
|
||||||
logger.debug("Couldn't get user %s", u_id) # debug level because will spam every hour
|
logger.debug("Couldn't get user %s", u_id) # debug level because will spam every hour
|
||||||
stats._update_user_ids(to_update)
|
stats.update_user_ids(to_update)
|
||||||
if stats.users_lock.acquire(timeout=10):
|
if stats.users_lock.acquire(timeout=10):
|
||||||
stats.users = stats._get_db_users()
|
stats.users = stats.get_db_users()
|
||||||
stats.users_lock.release()
|
stats.users_lock.release()
|
||||||
else:
|
else:
|
||||||
logger.warning("Couldn't acquire username lock.")
|
logger.warning("Couldn't acquire username lock.")
|
||||||
|
|
|
@ -88,16 +88,16 @@ class StatsRunner(object):
|
||||||
self.engine = engine
|
self.engine = engine
|
||||||
self.tz = tz
|
self.tz = tz
|
||||||
|
|
||||||
self.users: Dict[int, Tuple[str, str]] = self._get_db_users()
|
self.users: Dict[int, Tuple[str, str]] = self.get_db_users()
|
||||||
self.users_lock = Lock()
|
self.users_lock = Lock()
|
||||||
|
|
||||||
def _get_message_user_ids(self) -> List[int]:
|
def get_message_user_ids(self) -> List[int]:
|
||||||
"""Returns list of unique user ids from messages in database."""
|
"""Returns list of unique user ids from messages in database."""
|
||||||
with self.engine.connect() as con:
|
with self.engine.connect() as con:
|
||||||
result = con.execute("SELECT DISTINCT from_user FROM messages_utc;")
|
result = con.execute("SELECT DISTINCT from_user FROM messages_utc;")
|
||||||
return [user for user, in result.fetchall()]
|
return [user for user, in result.fetchall()]
|
||||||
|
|
||||||
def _get_db_users(self) -> Dict[int, Tuple[str, str]]:
|
def get_db_users(self) -> Dict[int, Tuple[str, str]]:
|
||||||
"""Returns dictionary mapping user ids to usernames and full names."""
|
"""Returns dictionary mapping user ids to usernames and full names."""
|
||||||
query = """
|
query = """
|
||||||
select user_id, username, display_name from (
|
select user_id, username, display_name from (
|
||||||
|
@ -116,7 +116,7 @@ class StatsRunner(object):
|
||||||
|
|
||||||
return {user_id: (username, name) for user_id, username, name in result}
|
return {user_id: (username, name) for user_id, username, name in result}
|
||||||
|
|
||||||
def _update_user_ids(self, user_dict: Dict[int, Tuple[str, str]]):
|
def update_user_ids(self, user_dict: Dict[int, Tuple[str, str]]):
|
||||||
"""
|
"""
|
||||||
Updates user names table with user_dict
|
Updates user names table with user_dict
|
||||||
:param user_dict: mapping of user ids to (username, display name)
|
:param user_dict: mapping of user ids to (username, display name)
|
||||||
|
@ -176,7 +176,7 @@ class StatsRunner(object):
|
||||||
query_where = f"WHERE {' AND '.join(query_conditions)}"
|
query_where = f"WHERE {' AND '.join(query_conditions)}"
|
||||||
|
|
||||||
query = f"""
|
query = f"""
|
||||||
SELECT "from_user", COUNT(*)
|
SELECT "from_user", COUNT(*) as "count"
|
||||||
FROM "messages_utc"
|
FROM "messages_utc"
|
||||||
{query_where}
|
{query_where}
|
||||||
GROUP BY "from_user"
|
GROUP BY "from_user"
|
||||||
|
|
Ładowanie…
Reference in New Issue