Skip to content

Releases: Teekeks/pyTwitchAPI

v4.4.0

19 Dec 18:45
ffc7311
Compare
Choose a tag to compare

Twitch

  • Added the following new Endpoint:
    • "Get Shared Chat Session" Twitch.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()
  • 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

15 Sep 02:15
306b465
Compare
Choose a tag to compare

Twitch

  • CustomReward.image is now parsed correctly

v4.3.0

31 Aug 15:54
7b7b7c4
Compare
Choose a tag to compare

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 to Twitch.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

27 Jun 18:45
0d97664
Compare
Choose a tag to compare

EventSub

  • Fixed event payload parsing for Channel Prediction events

v4.2.0

03 Feb 16:51
b2f51ff
Compare
Choose a tag to compare

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

19 Nov 01:19
4ce497a
Compare
Choose a tag to compare

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

28 Sep 12:40
f044073
Compare
Choose a tag to compare

Chat

  • Fixed RuntimeWarning when handling chat commands

v4.0.0

24 Sep 20:21
31fdda6
Compare
Choose a tag to compare

This is a major release, please see https://pytwitchapi.dev/en/v4.0.0/v4-migration.html for a migration guide!

Keystone Features

Twitch

  • Added new fields ChannelInformation.is_branded_content and ChannelInformation.content_classification_labels to response of get_channel_information()

  • Added new parameters modify_channel_information.is_branded_content and modify_channel_information.content_classification_labels to modify_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 to get_clips() and added object.api.Clip.is_featured to result.

EventSub

  • Moved old EventSub from twitchAPI.eventsub to new package twitchAPI.eventsub.webhook and renamed it to EventSubWebhook
  • 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 via EventSubWebhook.callback_loop in which to run all callbacks in
  • Added option for EventSubWebsocket to specify a asyncio loop via EventSubWebsocket.callback_loop in which to run all callbacks in
  • Added automatical removal of tailing / in EventSubWebhook.callback_url if present
  • Fixed broken handling of malformed HTTP requests made to the callback endport of EventSubWebhook
  • Made EventSubWebhook more easily mockable via twitch-cli by adding EventSubWebhook.subscription_url
  • Added optional subscription revokation handler via EventSubWebhook.revocation_handler to EventSubWebhook

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 and ChatMessage.reply_thread_parent_user_login to ChatMessage

  • 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 to twitchAPI.type
  • Moved all API related TwitchObjects from module twitchAPI.object to twitchAPI.object.api
  • Removed default imports from module twitchAPI

v3.11.0

21 May 19:57
96b97dd
Compare
Choose a tag to compare

Twitch

  • Added missing field emote_mode to response of Twitch.get_chat_settings() and Twitch.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

05 Apr 19:30
d2c793a
Compare
Choose a tag to compare

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