Compare commits

..

No commits in common. "94c49a62aa0b790ae58004aef9595b17fcd1bf15" and "0fe918d29e36474403d8bf24ff9ba7b04de8c302" have entirely different histories.

2 changed files with 0 additions and 61 deletions

View File

@ -1,40 +1,2 @@
# discord-presence-tracker # discord-presence-tracker
A discord bot to track discord presence activity. It can be used, for example, as *played in different games* hours counter.
## Commands
Notes:
- `total <something>` usually means just sum for numeric values in output.
- `SPFR` short from *Show Position For Requested* mean in output we should show position in rating for a requested item.
- `period`, `SPFR` should be preserved between redirects
1. `/stats <User | None> <Game | None>` Gives information about hours spent in games for given user per games
or in specified game.
- Output: `Game name, spent hours`.
- Features: Pagination, total hours, total hours for page, period.
- Redirects: `Game name` -> `/top_games 'Game name'` (or /top_players?).
2. `/top_players <Game name | None>` Gives information about users who spent the most time
in games or in a selected game.
- Output: `User name, spent hours`
- Features: Pagination, total hours, total hours for page, period, SPFR (user by default).
- Redirects: `User name` -> `/stats 'User name'`.
3. `/top_games` Gives information about most played games.
- Output: `Game name, spent hours` (NB: spent hours by all players)
- Features: Pagination, total hours, total hours for page, period, SPFR (No default, optional)
- Redirects: `Game name` -> `/top_players 'Game name'`.
4. `/game_sessions ((<User | None) | (Game name | None))` Gives raw information about game sessions.
- Output: `User name, start time, end time, diff, activity name`
- Features: Pagination, total count of sessions, total count of sessions for page, period
- Redirects: None
## Aspects to consider
### End user security
- User might want to restrict who are able to view his activity
- User might want to forbid collecting of his presence data
- User might want to delete collected data about him
- User might want to download his collected presence data
It's possible to fingerprint user's machines activity start time

View File

@ -1,23 +0,0 @@
import discord
from datetime import datetime
from datetime_utils import to_unix
from loguru import logger
class DateTransformer(discord.app_commands.Transformer):
"""
Converts date as 2022-12-24 to unix timestamp
"""
async def transform(self, interaction: discord.Interaction, value: str, /) -> int:
logger.trace(f'Converting {value} to unix timestamp')
date_format = "%Y-%m-%d"
try:
date = to_unix(datetime.strptime(value, date_format))
return date
except Exception:
logger.opt(exception=True).warning(f"Failed to parse to datetime {value!r}")
raise