Releases: Teekeks/pyTwitchAPI
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
v3.9.0
Twitch
-
Added the following new Endpoints:
- "Get Channel Followers"
Twitch.get_channel_followers()
- "Get Followed Channels"
Twitch.get_followed_channels()
- "Get Channel Followers"
-
Fixed TypeError: __api_get_request() got an unexpected keyword argument 'body' (Thanks @JC-Chung )
EventSub
- Added new Topic
EventSub.listen_channel_follow_v2()
Chat
v3.8.0
Twitch
- Added the new Endpoint "Send a Shoutout"
Twitch.send_a_shoutout()
Twitch.get_users_follows()
is now marked as deprecated- Added missing parameter
type
toTwitch.get_streams()
Helper
- Added new Async Generator helper
limit()
, with this you can limit the amount of results returned from the given AsyncGenerator to a maximum number
EventSub
- Added the following new Topics:
- "Channel Shoutout Create"
EventSub.listen_channel_shoutout_create()
- "Channel Shoutout Receive"
EventSub.listen_channel_shoutout_receive()
- "Channel Shoutout Create"
PubSub
- Added new Topic "Low trust Users"
PubSub.listen_low_trust_users()
Chat
- Improved rate limit handling of
Chat.join_room()
when joining multiple rooms per call - The following functions now all ignore the capitalization of the given chat room:
Chat.join_room()
Chat.leave_room()
Chat.is_mod()
Chat.send_message()
- Added
initial_channel
toChat.__init__()
, with this you can auto join channels on bot startup - Added
Chat.is_in_room()
- Added
Chat.log_no_registered_command_handler
, with this you can control if the "no registered handler for event" warnings should be logged or not
OAuth
- Added the following new AuthScopes:
AuthScope.MODERATOR_MANAGE_SHOUTOUTS
AuthScope.MODERATOR_READ_SHOUTOUTS
AuthScope.MODERATOR_READ_FOLLOWERS
- Improved async handling of
UserAuthenticator
v3.7.0
Twitch
- Added the following Endpoints:
- "Get AutoMod Settings"
Twitch.get_automod_settings()
- "Update AutoMod Settings"
Twitch.update_automod_settings()
- "Get AutoMod Settings"
- Added
Twitch.session_timeout
config. With this you can optionally change the timeout behavior across the entire library
OAuth
- Added the following new AuthScopes:
MODERATOR_READ_AUTOMOD_SETTINGS
MODERATOR_MANAGE_AUTOMOD_SETTINGS