Skip to content

Commit ca716d8

Browse files
committed
Fix fetch_bits_leaderboard
Fix PartialUser..fetch_bits_leaderboard Fix BitsLeaderboard model parsing datetime Correct typing and typo
1 parent 9c07abf commit ca716d8

File tree

4 files changed

+27
-11
lines changed

4 files changed

+27
-11
lines changed

docs/changelog.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ Master
77
- Additions
88
- Added optional ``started_at`` and ``ended_at`` arguments to :func:`~twitchio.PartialUser.fetch_clips`
99
- Updated docstring regarding new HypeTrain contribution method ``OTHER`` for :attr:`~twitchio.HypeTrainContribution.type`
10+
11+
- Bug fixes
12+
- Fix :func:`~twitchio.PartialUser.fetch_bits_leaderboard` not handling ``started_at`` and :class:`~twitchio.BitsLeaderboard` not correctly parsing
13+
1014
- ext.eventsub
1115
- Additions
1216
- Updated docs regarding new HypeTrain contribution method ``other`` for :attr:`~twitchio.ext.eventsub.HypeTrainContributor.type`

twitchio/http.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -315,18 +315,24 @@ async def get_game_analytics(
315315
raise NotImplementedError # TODO
316316

317317
async def get_bits_board(
318-
self, token: str, period: str = "all", user_id: str = None, started_at: datetime.datetime = None
318+
self,
319+
token: str,
320+
period: str = "all",
321+
user_id: Optional[str] = None,
322+
started_at: Optional[datetime.datetime] = None,
319323
):
320324
assert period in {"all", "day", "week", "month", "year"}
325+
query = [
326+
("period", period),
327+
("started_at", started_at.isoformat() if started_at else None),
328+
("user_id", user_id),
329+
]
330+
321331
route = Route(
322332
"GET",
323333
"bits/leaderboard",
324334
"",
325-
query=[
326-
("period", period),
327-
("started_at", started_at.isoformat() if started_at else None),
328-
("user_id", user_id),
329-
],
335+
query=[q for q in query if q[1] is not None],
330336
token=token,
331337
)
332338
return await self.request(route, full_body=True, paginate=False)

twitchio/models.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class BitsLeaderboard:
8787
------------
8888
started_at: :class:`datetime.datetime`
8989
The time the leaderboard started.
90-
ended_at: :class`datetime.datetime`
90+
ended_at: :class:`datetime.datetime`
9191
The time the leaderboard ended.
9292
leaders: List[:class:`BitLeaderboardUser`]
9393
The current leaders of the Leaderboard.
@@ -97,8 +97,10 @@ class BitsLeaderboard:
9797

9898
def __init__(self, http: "TwitchHTTP", data: dict):
9999
self._http = http
100-
self.started_at = datetime.datetime.fromisoformat(data["date_range"]["started_at"])
101-
self.ended_at = datetime.datetime.fromisoformat(data["date_range"]["ended_at"])
100+
self.started_at = (
101+
parse_timestamp(data["date_range"]["started_at"]) if data["date_range"]["started_at"] else None
102+
)
103+
self.ended_at = parse_timestamp(data["date_range"]["ended_at"]) if data["date_range"]["ended_at"] else None
102104
self.leaders = [BitLeaderboardUser(http, x) for x in data["data"]]
103105

104106
def __repr__(self):

twitchio/user.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,11 @@ async def create_custom_reward(
261261
raise
262262

263263
async def fetch_bits_leaderboard(
264-
self, token: str, period: str = "all", user_id: int = None, started_at: datetime.datetime = None
264+
self,
265+
token: str,
266+
period: str = "all",
267+
user_id: Optional[int] = None,
268+
started_at: Optional[datetime.datetime] = None,
265269
) -> "BitsLeaderboard":
266270
"""|coro|
267271
@@ -280,7 +284,7 @@ async def fetch_bits_leaderboard(
280284
"""
281285
from .models import BitsLeaderboard
282286

283-
data = await self._http.get_bits_board(token, period, user_id, started_at)
287+
data = await self._http.get_bits_board(token, period, str(user_id), started_at)
284288
return BitsLeaderboard(self._http, data)
285289

286290
async def start_commercial(self, token: str, length: int) -> dict:

0 commit comments

Comments
 (0)