Releases: Teekeks/pyTwitchAPI
v4.4.0
Twitch
- Added the following new Endpoint:
- "Get Shared Chat Session"
Twitch.get_shared_chat_session()
- "Get Shared Chat Session"
EventSub
- Added the following new Topics:
- "Channel Shared Chat Session Begin"
EventSubBase.listen_channel_shared_chat_begin()
- "Channel Shared Chat Session Update"
EventSubBase.listen_channel_shared_chat_update()
- "Channel Shared Chat Session End"
EventSubBase.listen_channel_shared_chat_end()
- "Channel Shared Chat Session Begin"
- Added the "Golden Kappa Train" info to the following Topics:
EventSubBase.listen_hype_train_begin()
EventSubBase.listen_hype_train_progress()
EventSubBase.listen_hype_train_end()
Chat
- Added new middleware
SharedChatOnlyCurrent
which restricts the messages to only the current room (thanks @Latent-Logic ) - Added support for source room and user tags
- Added new option
no_shared_chat_messages
which controls if shared chat messages should be filtered out or not (thanks @Latent-Logic )
OAuth
- Made it possible to specify target host and port in constructor of
UserAuthenticator
(thanks @nojoule ) - Made it possible to control if a browser should be opened in
UserAuthenticator.authenticate()
(thanks @Latent-Logic )
v4.3.1
v4.3.0
Twitch
- Added the following new Endpoints:
- "Get User Emotes"
- "Warn Chat User"
- "Create EventSub Subscription"
- Fixed Error handling of Endpoint
Twitch.create_clip()
- Fixed not raising UnauthorizedException when auth token is invalid and auto_refresh_auth is False
- Added Parameter
is_paused
toTwitch.update_custom_reward()
(thanks @iProdigy ) - Remove deprecated field "tags_ids" from
SearchChannelResult
EventSub
- Added the following new Topics:
- "Channel Chat Settings Update"
- "User Whisper Message"
- "Channel Points Automatic Reward Redemption"
- "Channel VIP Add"
- "Channel VIP Remove"
- "Channel Unban Request Create"
- "Channel Unban Request Resolve"
- "Channel Suspicious User Message"
- "Channel Suspicious User Update"
- "Channel Moderate"
- "Channel Warning Acknowledgement"
- "Channel Warning Send"
- "Automod Message Hold"
- "Automod Message Update"
- "Automod Settings Update"
- "Automod Terms Update"
- "Channel Chat User Message Hold"
- "Channel Chat User Message Update"
- Fixed reconnect logic for Websockets (thanks @Latent-Logic )
- Fixed logger names being set incorrectly for EventSub transports
- Fixed field "ended_at being incorrectly named "ends_at" for ChannelPollEndData
Chat
- Added flag
ChatMessage.first
to ChatMessage indicating a first time chatter (thanks @lbrooney )
OAuth
- Added CodeFlow user authenticator, usefull for headless server user token generation.
- Added the following new Auth Scopes:
AuthScope.USER_READ_EMOTES
AuthScope.USER_READ_WHISPERS
AuthScope.MODERATOR_READ_UNBAN_REQUESTS
AuthScope.MODERATOR_MANAGE_UNBAN_REQUESTS
AuthScope.MODERATOR_READ_SUSPICIOUS_USERS
AuthScope.MODERATOR_READ_BANNED_USERS
AuthScope.MODERATOR_READ_CHAT_SETTINGS
AuthScope.MODERATOR_READ_WARNINGS
AuthScope.MODERATOR_MANAGE_WARNINGS
AuthScope.MODERATOR_READ_MODERATORS
AuthScope.MODERATOR_READ_VIPS
v4.2.1
v4.2.0
Twitch
- Fixed Endpoint
Twitch.get_stream_key()
(thanks @moralrecordings ) - Added the following new Endpoints:
- "Get Ad Schedule"
- "Snooze Next Ad"
- "Send Chat Message"
- "Get Moderated Channels"
EventSub
- Fixed
EventSubWebsocket.stop()
not raising RuntimeException when called and socket not running. - Added the following new Topics:
- "Channel Ad Break Begin"
- "Channel Chat Message"
OAuth
- Added the following new AuthScopes:
AuthScope.USER_WRITE_CHAT
AuthScope.CHANNEL_READ_ADS
AuthScope.CHANNEL_MANAGE_ADS
AuthScope.USER_READ_MODERATED_CHANNELS
v4.1.0
Twitch
- Removed the deprecated Endpoint "Get Users Follows"
- Removed the deprecated bits related fields from Poll Endpoint data
EventSub
-
Duplicate Webhook messages will now be ignored
-
EventSub will now recover properly from a disconnect when auth token is expired
-
Added the following new Topics:
- "Channel Chat Clear"
- "Channel Chat Clear User Messages"
- "Channel Chat Message Delete"
- "Channel Chat Notification"
-
Removed the deprecated version 1 of topic "Channel Follow"
Chat
- Improved recovery from broken network connection (thanks @Latent-Logic )
- Added
ChatMessage.is_me
flag - Fixed parsing of messages using the
/me
chat command
OAuth
- Added the following new AuthScopes:
AuthScope.CHANNEL_BOT
AuthScope.USER_BOT
AuthScope.USER_READ_CHAT
v4.0.1
v4.0.0
This is a major release, please see https://pytwitchapi.dev/en/v4.0.0/v4-migration.html for a migration guide!
Keystone Features
- EventSub now supports the newly added Websocket transport
- EventSub is now using TwitchObject based callback payloads instead of raw dictionaries
- Chat now supports Command Middleware, check out https://pytwitchapi.dev/en/v4.0.0/tutorial/chat-use-middleware.html for more info
- Added
UserAuthenticationStorageHelper
to cut down on common boilerplate code, check out https://pytwitchapi.dev/en/v4.0.0/tutorial/reuse-user-token.html for more info
Twitch
-
Added new fields
ChannelInformation.is_branded_content
andChannelInformation.content_classification_labels
to response ofget_channel_information()
-
Added new parameters
modify_channel_information.is_branded_content
andmodify_channel_information.content_classification_labels
tomodify_channel_information()
-
Added new Endpoint "Get Content Classification Labels"
get_content_classification_labels()
-
Removed the following deprecated Endpoints:
- "Get Soundstrack Current Track"
- "Get SoundTrack Playlist"
- "Get Soundtrack Playlists"
-
get_polls()
now allows up to 20 poll IDs -
get_channel_followers()
can now also be used without the required Scope or just with App Authentication -
Added new parameter
get_clips.is_featured
toget_clips()
and addedobject.api.Clip.is_featured
to result.
EventSub
- Moved old EventSub from
twitchAPI.eventsub
to new packagetwitchAPI.eventsub.webhook
and renamed it toEventSubWebhook
- Added new EventSub Websocket transport
EventSubWebsocket
- All EventSub callbacks now use
object.base.TwitchObject
based Payloads instead of raw dictionaries. See :ref:eventsub-available-topics
for a list of all available Payloads - Added
EventSubBase.listen_channel_update_v2()
- Added option for
EventSubWebhook
to specify a asyncio loop viaEventSubWebhook.callback_loop
in which to run all callbacks in - Added option for
EventSubWebsocket
to specify a asyncio loop viaEventSubWebsocket.callback_loop
in which to run all callbacks in - Added automatical removal of tailing
/
inEventSubWebhook.callback_url
if present - Fixed broken handling of malformed HTTP requests made to the callback endport of
EventSubWebhook
- Made
EventSubWebhook
more easily mockable viatwitch-cli
by addingEventSubWebhook.subscription_url
- Added optional subscription revokation handler via
EventSubWebhook.revocation_handler
toEventSubWebhook
PubSub
- Handle Authorization Revoked messages (Thanks @Braastos )
- Added option to specify a asyncio loop via
pubsub.PubSub.callback_loop
in which to run all callbacks in
Chat
-
Added Chat Command Middleware, a way to decide if a command should run, see https://pytwitchapi.dev/en/v4.0.0/tutorial/chat-use-middleware.html for more info.
-
Added the following default Chat Command Middleware:
ChannelRestriction
UserRestriction
StreamerOnly
ChannelCommandCooldown
ChannelUserCommandCooldown
GlobalCommandCooldown
-
Added option to specify a asyncio loop via
callback_loop
in which to run all callbacks in -
Fixed errors raised in callbacks not being properly reported
-
Added Hype Chat related fields to
ChatMessage
-
Improved logging
-
Fixed KeyError when encountering some Notice events
-
Added new reply tags
ChatMessage.reply_thread_parent_msg_id
andChatMessage.reply_thread_parent_user_login
toChatMessage
-
Reconnects no longer duplicate the channel join list
-
Chat.start()
now thows an error should Chat() not have been awaited
OAuth
- Added
UserAuthenticationStorageHelper
, a easy plug and play way to generate user auth tokens only on demand - Made it possible to mock all auth flows with
twitch-cli
Other
- Added
AsyncIterTwitchObject.current_cursor()
- Renamed module
twitchAPI.types
totwitchAPI.type
- Moved all API related TwitchObjects from module
twitchAPI.object
totwitchAPI.object.api
- Removed default imports from module
twitchAPI
v3.11.0
Twitch
- Added missing field
emote_mode
to response ofTwitch.get_chat_settings()
andTwitch.update_chat_settings()
(#234)
Chat
- Fixed timing based
AttributeError: 'NoneType' object has no attribute 'get'
in NoticeEvent during reconnect - Ensured that only Chat Messages will ever be parsed as chat commands
- Added functionality to set per channel based prefixes (#229):
Chat.set_channel_prefix()
to set a custom prefix for the given channel(s)Chat.reset_channel_prefix()
to remove a custom set prefix for the given channel(s)
v3.10.0
Twitch
-
Added new
ChatBadgeVersion
related fields to the following Endpoints: (Thanks @stolenvw )Twitch.get_chat_badges()
Twitch.get_global_chat_badges()
-
Twitch.set_user_authentication()
now tries to refresh the given token set if it seems to be out of date -
removed the following deprecated endpoints:
- "Replace Stream Tags"
- "Get Stream Tags"
- "Get All Stream Tags"
- "Redeem Code"
- "Get Code Status"
-
Fixed condition logic when parameter
first
was given for the following Endpoints:Twitch.get_chatters()
(Thanks @d7415 )Twitch.get_soundtrack_playlist()
Twitch.get_soundtrack_playlists()
PubSub
- PubSub now cleanly reestablishes the connection when the websocket was unexpectedly closed