Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/getting-started/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ Changelog

- Bug fixes
- Fix :func:`~twitchio.utils.setup_logging` breaking coloured formatting on `CRITICAL` logging level
- Fix :class:`~models.eventsub_.ChannelPointsAutoRedeemAdd` now accounts for attribute message in payload to be None


3.1.0
Expand Down
13 changes: 7 additions & 6 deletions twitchio/models/eventsub_.py
Original file line number Diff line number Diff line change
Expand Up @@ -3407,7 +3407,7 @@ class ChannelPointsAutoRedeemAdd(_ResponderEvent):
id: str
The ID of the redemption.
text: str
The text of the chat message.
The text of the chat message. This will be an empty string for redemptions that do not contain a message (e.g. emote unlocks).
redeemed_at: datetime.datetime
The datetime object of when the reward was redeemed.
reward: AutoRedeemReward
Expand All @@ -3416,15 +3416,15 @@ class ChannelPointsAutoRedeemAdd(_ResponderEvent):
V2 does not cover Power-ups e.g. `gigantify_an_emote`, `celebration`, and `message_effect`.
Please see ChannelBitsUseSubscription for those specific types if using V2.
emotes: list[ChannelPointsEmote]
A list of ChannelPointsEmote objects that appear in the text.
A list of ChannelPointsEmote objects that appear in the text. Not populated for redemptions that do not contain a message.

- If using V1, this is populated by Twitch.
- If using V2, the emotes can be found in the fragments, but we calculate the index ourselves for this property.

user_input: str | None
The text input by the user if the reward requires input. This is `None` when using V2. `text` is the preferred attribute to use.
fragments: list[ChatMessageFragment]
The ordered list of chat message fragments. This is only populated when using V2.
The ordered list of chat message fragments. This is only populated when using V2, and only for redemptions that contain a message.
"""

subscription_type = "channel.channel_points_automatic_reward_redemption.add"
Expand All @@ -3437,13 +3437,14 @@ def __init__(self, payload: ChannelPointsAutoRewardRedemptionEvent, *, http: HTT
)
self.user: PartialUser = PartialUser(payload["user_id"], payload["user_login"], payload["user_name"], http=http)
self.id: str = payload["id"]
self.text: str = payload["message"]["text"]
message = payload.get("message") or {}
self.text: str = message.get("text", "")
self.user_input: str | None = payload.get("user_input")
self.redeemed_at: datetime.datetime = parse_timestamp(payload["redeemed_at"])
self.reward: AutoRedeemReward = AutoRedeemReward(payload["reward"])
fragments = payload["message"].get("fragments", [])
fragments = message.get("fragments", [])
self.fragments: list[ChatMessageFragment] = [ChatMessageFragment(f, http=http) for f in fragments]
self._raw_emotes = payload.get("message", {}).get("emotes", [])
self._raw_emotes = message.get("emotes", [])

def __repr__(self) -> str:
return f"<ChannelPointsAutoRedeemAdd broadcaster={self.broadcaster} user={self.user} id={self.id}>"
Expand Down
2 changes: 1 addition & 1 deletion twitchio/types_/eventsub.py
Original file line number Diff line number Diff line change
Expand Up @@ -948,7 +948,7 @@ class BaseChannelPointsRewardData(TypedDict):
class ChannelPointsAutoRewardRedemptionEvent(BroadcasterUserEvent):
id: str
reward: BaseChannelPointsRewardData
message: ChannelPointsMessageData
message: ChannelPointsMessageData | None
user_input: str | None
redeemed_at: str

Expand Down