Changelog

Detailed version changes.

v3.6.4

Bug fixes

  • Fixed parameter_required error on email/password login.

  • Fixed Client.search_users().

  • Fixed fetch multiple stats methods to work with more than 20 stat keys at the same time.

v3.6.3

Bug fixes

  • Fixed an issue that made it possible for programs with ill intent to send events to the client.

v3.6.2

Added

  • Added timestamps related to fortnite season 17. - SeasonStartTimestamp.SEASON_17 - SeasonEndTimestamp.SEASON_16

Bug Fixes

  • Fixed an issue where the client could attempt to clear an emote after it had already left the party.

Misc

  • New documentation design. Woo.

v3.6.1

Bug Fixes

  • Fixed a critical crash issue introduced in v3.6.0.

v3.6.0

Changes

Added

Bug Fixes

  • Fixed an issue that caused the client to think that it was party leader after promoting someone else.

  • Fixed a rare race condition that could cause event_party_member_promote() to pass the new leaders object as the old one.

  • Fixed some applications not closing smoothly due to another bug fix.

  • Fixed a relatively hidden bug in PartyMember.swap_position().

Misc

v3.5.0

Bug Fixes

  • Fixed an issue that caused methods and properties related to party readiness to not work.

  • Fixed a possible issue where getting a party members platform could result in an error.

Misc

  • Added the kwarg prompt_code_if_invalid=True to all examples by default.

v3.4.0

This update adds Python 3.9 compatibility and other small fixes and features.

Changes

  • Bumped aioxmpp compatibility requirement to the latest version (0.12.0)

Added

  • Added a new kwarg fetch_user_data_in_events to Client. This is useful for larger applications that might deal with ratelimiting on their ip.

  • Added User.fetch() (applies to all objects derived from UserBase too) which can be used to refetch userdata like display name and external auths. This is useful if you have the new kwarg set to False.

Bug Fixes

  • Fixed several bugs related to changes in python 3.9 that caused the version to be incompatible with fortnitepy.

  • Fixed what I believe to be (hopefully) the last remaining issues that caused ClientParty.me to be None in some rare cases.

  • Party leave and party join actions are now under the same lock which should elliminate some race conditions.

  • Fixed an issue that caused aiohttp to spam noisy errors on shutdown when using asyncio.ProactorEventLoop.

  • Fixed an issue where an error was raised if a meta property was missing.

  • Fixed websocket sessions not being correctly closed when reconnecting after an unexpected close.

  • Suppressed the websocket stream closed by peer message.

  • Suppressed a noisy asyncio error log on shutdown that was introduced in the latest aioxmpp version.

  • Fixed an issue that caused processing of event_party_team_swap() to error in some very rare cases.

v3.3.5

Added

  • SeasonStartTimestamp.SEASON_15

  • SeasonEndTimestamp.SEASON_14

Bug Fixes

  • Fixed an issue that caused fetching battlepass levels for a new season to not work if the seasons timestamp was not added yet.

v3.3.4

Fixed typo in the Platform.XBOX_X value. Whoops.

v3.3.3

v3.3.2

Hotpatch to fix parties showing as outdated after the Fortnite v14.50 update.

Added

  • Added kwarg party_version to Client so that a custom party version can be set.

Bug Fixes

  • Fixed parties showing as outdated.

v3.3.1

Small patch to fix a problem with bots showing as offline when added as a friend.

Big Fixes

  • Fixed an issue that caused bots to appear as offline when being added by a new friend.

  • Fixed an error in the processing of PartyMember.corruption that often resulted in huge error spams.

  • Client.set_presence() now also correctly saves the away status.

  • Fixed a rare error in the processing of html errors being returned from graphql services.

v3.3.0

Changed

  • Changes made to PartyMember.create_variant():
    • (Renamed) PartyMember.create_variants -> PartyMember.create_variant(). This is not breaking though as its aliased to its old name.

    • (Breaking) Removed kwarg particle_config in favor of the new config_overrides.

  • Updated build version to fortnite v14.10.

Bug Fixes

v3.2.0

Changed

Added

Removed

  • Removed Client.remove_all_friends() as it had been deprecated by epic.

  • Removed the undocumented attribute HTTPClient.session.

Bug Fixes

  • Fixed a rare race condition causing the clients party member object to be missing.

  • Fixed an issue introduced in the last update which caused season timestamps to be a little incorrect. Fetching battlepass levels was sometimes affected by this issue.

  • Fixed an issue that caused the http client to retry a request one too many times.

  • Fixed an issue where some graphql requests would error on 500 statuses instead of retrying.

Docs

  • Added attribute tables for most models and dataclasses where it makes sense.

  • Added source links for methods and classes.

  • Changed the font used and cleaned up some other stuff a little.

v3.1.0

Changed

  • Renamed event_close() -> event_before_close(). This isn’t a breaking change though as it still exists under event_close().

  • Renamed PresenceGameplayStats.num_kills -> PresenceGameplayStats.kills but an alias still exist under the old name.

  • The client now reconnects to its last known party on auth refresh.

  • [Ext Commands] ext.commands.Group now inherits case_insensitive if not explicitly specified.

Added

Bug Fixes

  • event_before_close() now does not break the logout if an error was raised in the callback.

  • Fixed fetching battlepass levels for season 13.

  • Fixed an issue where HTTPExceptions could hypothetically in some rare cases be incorrect.

  • Fixed exponential backoff retries not working because of a typo (oops).

  • Fixed a race condition that caused the clients party member to not always equip its default meta.

  • Silenced a noisy error raised by aioxmpp on connection lost.

  • Fixed a crash on start caused by the special unallowed characters in the clients display name (for good this time).

  • Fixed an error raised in the processing of event_party_member_zombie() if the client was not fully started.

  • The client now has a correct multi user chat nick (not that it really matters).

v3.0.2

Another quick hotpatch.

Bug Fixes

  • Fixed TypeError: _request() got an unexpected keyword argument ‘config’.

v3.0.1

Quick hotpatch.

Changes

Bug Fixes

v3.0.0

This major update focuses on stability but also introduces lots of additions and changes.

Changed

Added

Removed

Bug Fixes

  • Reworked the invalid access token reauth strategy to fix multiple issues that caused stuff to break down completely.

  • Fixed an issue regarding joining a bots party when the bot was party leader but not the original creator.

  • Fixed party config patching.

  • Fixed an issue where bots were not able to join any new lobbies in some rare circumstances.

  • Fixed an issue that caused other users to not be able to rejoin or lookup the bots private party even when the user had already been a part of the party before.

  • Fixed an issue where HTTPException would sometimes fail at initializing because of a missing required value.

  • Fixed multiple issues regarding graphql error responses that was not correctly catched to raise an HTTPException and would raise an ugly error.

  • HTTP retries are now attempted for even more errors.

  • Fixed an issue where PartyMember.connection wasn’t always updated to use the latest connection.

  • Improved the clients knowledge of which member is actually the party leader.

  • Fixed and improved lots of stuff regarding sudden connection loss including recovering and dispatching events, automatic party reconnect if the criterias is met and more.

  • Fixed an issue where a member was removed from the party internally if their connection was lost but not expired.

  • Lowered the deadtime hard limit values for the xmpp connection before reconnecting.

  • Fixed a window where ClientParty.me could be None.

v2.3.1

Stability improvements.

Changed

  • Dropped the underlying launcher session since it’s not longer used for anything.

  • Authentication now attempts to reauthenticate on startup in some cases.

  • Reauthentication on sudden access token invalid has been improved.

Bug Fixes

  • Fixed some issues with incorrect handling of websocket disconnects that resulted in the xmpp connection to eventually time out.

  • A graceful close is now attempted even if the client is not ready.

  • Processing of messages now handles some race conditions that some times resulted in FriendMessage.author being None.

v2.3.0

Huge performance improvements and lots of bug fixes.

Changed

  • Internal parsing of xmpp stanzas like presences and messages are now processed by a custom processor which bypasses aioxmpp’s slow processing whenever possible. This is more noticable on accounts with lots of online friends. Internal tests are showing performance speeds to be more than three times faster than before.

Added

  • Added missing docs for connector keyword argument in Client.

  • Added keyword argument ws_connector to Client.

  • Added __slots__ to Avatar.

Removed

  • Removed two undocumented attributes related to presences to reduce memory footprint:
    • Presence.raw_properties

    • PresenceParty.raw

Bug Fixes

  • Fixed lots of issues regarding the xmpp over websocket solution. The most noticable one is that xmpp will auto reconnect on errors and unexpected closings.

  • Fixed invalid refresh token sometimes crashing the bot while refreshing the session. NOTE: This only works when using DeviceAuth or AdvancedAuth.

  • Fixed an issue where stored meta changes from DefaultPartyConfig.meta wasn’t always applied correctly when creating a new party.

  • Fixed an issue where some meta props wasn’t always updated when using ClientParty.edit() or ClientPartyMember.edit().

  • aiohttp.BaseConnector’s passed to Client will no longer be closed when the client is closed.

  • Fixed PartyMember.external_auths always being empty when the member was a part of ClientParty.

  • Fixed an issue that caused the client to sometimes leave the party some seconds after joining due to an event not being fired.

  • The client will no longer send out its presence two times on startup. Sowwy epic :(

v2.2.1

Fixes an issue that caused some accounts with lots of friends to crash on startup.

v2.2.0

Changed

  • (Breaking) Split PendingFriend into two separate objects IncomingPendingFriend and OutgoingPendingFriend depending on the direction of the request. Keep in mind that Client.pending_friends can include instances of both classes.

  • (Breaking) event_friend_presence() now takes two arguments before and after.

  • (Breaking) PendingFriendBase.inbound has been renamed to PendingFriendBase.incoming.

  • Made some small visual improvements to the documentation.

Added

Removed

  • Removed API KEY usage from the Fortnite-API example. Thanks (cup#9125).

  • Removed some piece of code which auto claimed the fortnite entitlement. This has not been actively used for some updates.

  • beautifulsoup4 and websockets have been removed from requirements because they’re no longer used.

Bug Fixes

  • Fixed various bugs regarding the xmpp over websocket solution introduced in the last minor update. The library now uses aiohttp for websockets instead of the websockets library.

  • Fixed a rare issue regarding last_online that sometimes crashed the client on startup.

  • Fixed an issue that caused voice chat to not work for regular users in the clients party.

  • Fixed a rare error that was sometimes raised in PartyJoinConfirmation.confirm() and PartyJoinConfirmation.reject()

  • Silenced an error in processing of event_party_invite().

v2.1.1

Fixes an issue where Friend.last_logout would sometimes be a string after v2.1.0.

v2.1.0

This update fixes the new xmpp authentication issue + some other bugs.

Bug Fixes

  • Fixed xmpp authentication by running xmpp over a custom xmpp over websocket connector.

  • You can now use ProactorEventLoop with fortnitepy.

  • Fixed an issue where a bot would not be able to start in some scenarios because of a friend missing the last_online property.

  • Fixed an issue where a party was not created after refreshing the session. This was the cause of error code -93 after refreshes.

  • Fixed an issue that caused Client.restart() to not work.

  • Silenced an error in processing of party_team_member_swap().

v2.0.7

Fixes bugs introduced in fortnite v13.00 + fixes other bugs and adds some other changes.

Changes

  • Client.add_friend() and other methods to add/accept friends now raises more specific exceptions.

  • A RuntimeError with more info is now raised if a running ProactorEventLoop is found when importing fortnitepy.

Bug Fixes

v2.0.6

Various bug fixes

Bug Fixes

Other

v2.0.5

Changes

  • Added AuthorizationCodeAuth as an auth method.

  • Added optional parameter authorization_code to AdvancedAuth.

  • Added optional parameter prompt_authorization_code to AdvancedAuth.

  • (Breaking) Renamed optional parameter prompt_exchange_code_if_invalid -> prompt_code_if_invalid for AdvancedAuth.

  • (Breaking) Renamed optional parameter prompt_exchange_code_if_throttled -> prompt_code_if_throttled for AdvancedAuth.

  • (Breaking) Renamed parameter exchange_code -> code for ExchangeCodeAuth.

  • Updated all examples to use prompt_authorization_code since thats now the easiest method.

v2.0.4

Small update which introduces some serious memory optimizations for accounts with many friends + exchange code fix.

Changes

  • Added keyword argument prompt_exchange_code_if_invalid to AdvancedAuth.

  • Exchange code prompt messages now includes the cause for exchange code being needed.

  • Added AuthException.original which can be used to retrieve the original error object.

  • Made some serious changes to optimize memory usage.

  • Corrected the endpoint used for retrieving an exchange code in EmailAndPasswordAuth.

  • Fixed an issue that caused invalid party team position swap requests to not be handled correctly.

  • Fixed an issue where constructing presences would fail in some cases due to an unexpected type.

v2.0.1

Hotpatches to fix some overlooked major bugs.

v2.0.0

Big update which adds a commands extension and other huge changes.

Changes

  • The main way to access the clients party has been moved from ClientUser to Client. client.user.party -> client.party.

  • Client’s keyword arg default_party_config has been completely reworked. Read more about it on Client’s page.

  • Client’s keyword arg default_party_member_config has been completely reworked. Read more about it on Client’s page.

  • Renamed Client.logout() -> Client.close().

  • Renamed event_logout() -> event_close().

  • Renamed PartyInvitation -> ReceivedPartyInvitation.

  • Presence.avatar now returns Avatar.

Added

Removed

  • Removed Client.update_net_cl().

  • Removed Friend.fetch_mutual_friend_count. You can now use the new Friend.fetch_mutual_friends().

  • Removed ClientPartyMember.set_shout().

  • Removed Presence.avatar_colors.

Bug Fixes

  • Fixed an issue that caused party methods and sometimes party to be None whenever a new party was being created.

  • Fixed an issue that caused sessions to not be correctly killed when closing.

  • Fixed an issue where it was not possible to register more than one of each event.

  • Fixed an issue that caused event_party_member_confirm() to not always work.

  • Client.to_iso() now only has floating point precision of three like fortnite expects.

  • Client.run() and other utility run functions now works correctly in docker environments.

  • Fixed an issue that caused display name cache lookups in profile fetch methods to not work.

  • Client.event() can now also correctly be used on staticmethods.

  • Fixed an issue that caused start_time and end_time in all stats fetch methods to not work.

  • Client.fetch_multiple_br_stats() now accepts more than 51 owners.

  • Fixed an issue where HTTPException’s were incomplete when raised from a graphql request.

  • Fixed an issue that caused some meta values to be incorrect in some instances because of a parsing error.

  • Fixed an issue where PartyMember.platform could be None in some rare cases.

  • Fixed an issue that crashed the client on startup if the clients display name contained arabic or other letters that are read in the other direction.

Miscellanious

  • Updated the build version.

  • Removed documentation for old client kwarg engine_build.

  • Fixed some documentation issues.

v1.7.0

Update to fix some issues regarding auth and overall control over the application + some more.

Changes

  • The exchange_code argument in ExchangeCodeAuth and keyword argument in AdvancedAuth now also accepts a callable or awaitable that must return an exchange code in form of a str.

Added

Bug Fixes

  • Fixed an issue that caused Client.restart() not to work with all of the available auth methods.

  • Fixed an issue where the wrong refresh_token was refreshed which resulted in no active launcher access token to be valid after the first auth refresh (~8 hours).

  • Fixed run_multiple() not shutting down correctly in environments that depend on signals to shut down the process.

  • The client now ignores ghost pings (invites).

v1.6.2

Fixes HTTPException not being raised and changes some stuff related to AuthException.

Changes

  • AuthException is now only raised when invalid credentials (email/password, device auth, exchange code or 2fa code) are passed and some other misc failures. It will no longer eat all errors raised.

  • Removed HTTPException.reraise().

Added

  • Added parameter prompt_exchange_code_if_throttled to AuthException. If set to True it will prompt exchange code if the account is throttled.

Bug Fixes

  • Fixed an issue that caused no HTTPException’s to be raised. This caused other errors which often looked weird.

v1.6.1

Hotpatch to fix bots not being able to start.

Bug Fixes

  • Fixed an issue that caused json payloads sometimes not being decoded.

v1.6.0

This update fixes device authentication and adds some new methods to play around with.

Added

Bug Fixes

  • Fixed an issue that caused device auth to not work with newly generated details.

  • Fixed an issue that caused Client.fetch_profile_by_display_name() to not work if the account requested had linked external platforms to their account.

v1.5.5

Update to fix a breaking issue and also change some other necessary stuff.

Changes

  • Friend.last_logout now always is None when the friend is added while the client is running.

Added

Bug Fixes

  • Fixed an issue that caused some events not to work correctly due to an unknown payload being received.

  • Fixed an issue that caused the client to attempt to join two or more parties at a time.

  • Fixed an issue that in rare cases caused cache initialization to fail on startup and therefore break.

  • Fixed a race condition between two events that very rarely broke the clients party.

  • Readded detailed stack traces for HTTPException in most cases.

v1.5.4

Another hotpatch to fix a breaking auth refreshing issue.

Bug Fixes

  • Fixed an issue that caused stuff to break after auth refresh.

  • Fixed an issue that caused the cache keyword to be ignored in Client.fetch_profile() and similar fetch profile functions.

  • (Docs) Fixed an issue causing ExternalAuth’s section to be empty.

v1.5.3

Hotpatch to fix auth refreshing.

Bug Fixes

  • Fixed an issue that caused auth refreshing not to work.

  • Silenced an unecessary error raised sometimes when the bot left a party.

v1.5.2

Another update add some changes and fix a big issue introduced in v1.5.0.

Changes

Added

Bug Fixes

  • Fixed an issue that caused members of a party not to load correctly when the client was the leader of the party.

  • Fixed an issue that caused an incorrect member to be marked as the leader of the party.

  • The client will no longer try to promote itself when promoting a random member when changing ready state to ReadyState.SITTING_OUT.

v1.5.1

Quick hotpatch to fix Python 3.5 & 3.6 compatibility.

Bug Fixes

  • Fixed Python 3.5 & 3.6 compatibility.

v1.5.0

This update fixes some important bugs and introduces functionality to ban members in party chat.

Removed

Added

Bug Fixes

  • Fixed compatibility with Python 3.8 on windows specifically by setting the event loop policy to asyncio.WindowsSelectorEventLoopPolicy.

  • The email passed in event_device_auth_generate() is now never None and always the correct email.

  • Fixed an issue that caused party members of a party you joined to have the default meta values.

  • Fixed an issue that caused event_party_invite() to not emit.

  • Fixed an issue that caused an internal method to never be run.

  • Fixed ClientPartyMember.leader.

  • Fixed an issue that caused an error to be raised when a message from a non-party member was sometimes received.

v1.4.0

Very breaking update introducing new methods to authenticate, type hinting and more.

Changes

  • You no longer pass an email and a password directly when initializing Client. auth is the new parameter taking one of the new authentication methods. Read more about them here here.

  • Also moved parameters two_factor_code, launcher_token, fortnite_token and device_id to the auth object.

  • Friend.join() now returns the new ClientParty the client just joined.

Bug Fixes

v1.3.1

Fixes some issues from the last update.

Added

Bug Fixes

  • Fixed an issue that broke startup of accounts with a large amount of friends.

  • Optimized startup speed of accounts with a large amount of friends.

  • Fixed an issue that caused the internal blocked users cache to not get initialized correctly.

  • Fixed another breaking issue that would break cache initializations.

  • Friend.nickname and Friend.note now correctly is None if not set.

  • Fixed an issue causing Client.has_friend() to return the wrong value (even though technically it did work).

  • Fixed an issue where some dataclasses inheriting from User was missing external auths at some times.

v1.3.0

Introduces some much awaited utility functions for starting multiple accounts at once and more stability in general.

Changes

  • [Breaking] Member meta attributes assisted_challenge, outfit, backpack, pickaxe, contrail and emote now returns the asset path instead of just the id.

  • [Breaking] User.external_auths has been changed and fully utilized.

  • Optimized the auth flow and general startup speeds by ~1 second.

  • Lookup methods now also searches for non-epic accounts.

  • User.display_name now uses an external display name if the account is not linked to an epic account.

  • Client.fetch_br_stats() now raises Forbidden if the account requested has private stats.

  • Changed some examples to reflect some of this updates changes.

Added

Bug Fixes

  • Fixed an issue that caused Client.start() to return whenever Client.restart() was returned.

  • Client.restart() now correctly returns errors.

  • Fixed an issue that in some rare cases caused task cancelling on shutdown to break.

  • Fixed an issue that caused Client.fetch_profiles() to break in some cases where you looked up an id and a display name.

  • Some annoyingly long error stack traces should now be a little smaller (without losing any context).

  • Fixed an issue that caused buying fortnite on accounts that did not already own it to fail.

  • Fixed an issue that caused ClientPartyMember.set_assisted_challenge() to break if no asset was passed.

  • Fixed a rare issue that caused some presences to break.

  • Fixed a trailing issue from last update that caused some events regarding pending friend requests to not work properly.

v1.2.2

Fixes the login flow and another breaking login bug.

Changes

  • [BREAKING] Attribute favorite removed from PendingFriend.

Bug Fixes

  • Fixed the login flow (you can now actually log in to an account).

  • Fixed an issue where login would break because of a missing parameter in a payload.

v1.2.1

Fixes small mistakes introduced in v1.2.0.

Bug Fixes

  • The client no longer sends a party message every time a new member joins (oops).

  • Using ClientPartyMember.clear_emote() now cancels current clear tasks created by run_for.

  • Fixed some docs issues as well as a logging issue.

v1.2.0

This update adds a lot of new stuff and also increases stability.

[ALL BREAKING] Changes

Added

Bug Fixes

  • Fixed two factor authentication.

  • Fixed an issue that caused event_party_member_confirm() to not work when defined in a subclass of Client.

  • Fixed an issue that caused Client.fetch_blocklist() to not work.

  • The HTTP client now attempts to resend a request if server_error or concurrent_modifaction_error is received.

  • Fixed an issue that caused PartyMember.kick() to raise an incorrect error.

  • Calling ClientPartyMember.set_emote() with the run_for keyword argument will now cancel any existing emote cancelling tasks created by run_for before.

  • Fixed an issue where an error would be raised if the client was friends with someone that had never entered fortnite before.

  • Fixed two rare errors raised because of missing attributes in xmpp event payloads.

  • Fixed an noisy issue where the client sometimes attempted to remove a missing pending friend from the cache.

  • Fixed an issue that caused the processing of variant changes from other party members to fail.

  • Fixed a noisy issue that was raised on startup of some clients (bIsPlaying).

  • Fixed an issue that caused PartyInvitation.decline() to raise an error.

v1.1.0

This update adds some much awaited edit functions to ClientPartyMember as well as some important bug fixes.

Added

  • Added ClientPartyMember.edit() which patches multiple meta changes at once.

  • Added ClientPartyMember.edit_and_keep() which patches multiple meta changes at once and then keeps the changes so they are automatically equipped when joining new parties.

  • Added keyword default_party_member_config to Client which takes a list of meta changes and automatically equips them when joining new parties.

Bug Fixes

  • Fixed Friend.remove().

  • Fixed an issue where PartyMember.outfit would sometimes raise an error.

  • Fixed an issue causing an error to sometimes be raised when a new member joined the party.

  • Fixed an issue causing an error to sometimes be raised when a message was received from party chat.

v1.0.3

Another hotpatch to fix a silly issue from the last one .-.

Bug Fixes

  • Fixed Client.from_iso().

v1.0.2

Another hotpatch.

Changes

  • Fixed an issue where event_party_member_kick() would not emit if the member was kicked by the client.

  • Fixed a bug that caused an error to be raised when converting a string to a datetime object internally.

  • Client.join_to_party() now waits until the client has joined the party before returning.

  • PresenceParty.join() now returns the ClientParty that was just joined.

v1.0.1

Quick update to fix some issues brought along with v1.0.0.

Added

Renamed

Bug Fixes

  • Unavailable presences now work as expected again.

  • Fixed an issue where an error was raised when when removing a friend in some special cases.

  • Fixed an issue that caused Client.remove_or_decline_friend() to not work.

v1.0.0

BREAKING UPDATE
Massive code overhaul and lots of new stuff / bugs fixes. Keep in mind that this is a very big update so issues and bugs might appear. If so, report them either on the issue tracker or on discord.

Added

[ALL BREAKING] Renamed

Changes

Bug Fixes

v0.9.0

BREAKING UPDATE
This update adds windows support for python 3.8, removes the need for setting a net_cl and fixes multiple important bugs.

Breaking Changes

  • Forbidden has been renamed from PartyPermissionError.

  • Reworked and added documentation for Client.join_to_party(). The function no longer takes party as a keyword and a new kwarg check_private has been added.

Changes

  • You no longer need to worry about net_cl, ever.

  • Added get_event_loop() to get a working event loop on Windows. It isn’t necessary to use this function as long as fortnitepy is imported before the event loop is created.

  • Added HTTPException.reraise() which reraises the exception.

  • Added Friend.invite() which invites the friend to your party.

  • ClientPartyMember.set_banner() and ClientParty.set_playlist()

  • The loading time between accepting and joining a party with 2+ users has been significantly decreased.

  • PartyInvitation.accept() now raises Forbidden if you attempted to join a private party you have already been a member of before.

Bug Fixes

  • Fixed multiple internal issues related to party chat.

  • Fixed an issue where that caused invites sent by the client to its private party to not work.

  • Fixed an issue where event_party_member_join() would dispatch before party chat was ready.

  • Fixed an issue that caused aioxmpp logger to not work.

v0.8.0

BREAKING UPDATE
This update reworks and adds a couple of stats functions, adds some new features that came with Fortnite 2 season 1 and fixes some important bugs.

Breaking Changes

  • Most functions with keyword arguments now uses strict kwargs. This means you must specify the argument as a keyword. If you’ve used keyword arguments correctly before, this will not be an issue.

  • The new correct way to get stats from the object StatsV2 is now with the StatsV2.get_stats() method. Up until this version the way to get the stats from the object was to call StatsV2.stats.

  • Client.fetch_br_stats() now returns None if the user was not found. An empty StatsV2 is still returned if a valid user doesn’t have any recorded stats.

  • Client.fetch_multiple_br_stats() now returns None mapped to the passed userid if the user was not found. An empty StatsV2 is still returned if a valid user doesn’t have any recorded stats for the stats you requested.

  • The cache keyword argument in Client.fetch_profile(), Client.fetch_profiles() and Client.fetch_profile_by_display_name() now defaults to False which means the client will not attempt to get any of the requested users from the cache.

  • Playlist.violator was renamed from violater because of the typo.

  • PresenceGameplayStats.players_alive was moved from Presence to PresenceGameplayStats.

Added

  • Added a new event event_friend_request_abort() which emits when a sent friend request is aborted before the receiving user has accepted it.

  • Added Client.update_net_cl() which updated the current net_cl and party_build_id while the client is running.

  • Added Client.fetch_multiple_battleapss_levels() which fetches multiple userids battlepass levels at once.

  • Added Client.fetch_battlepass_level() which fetches a userid’s battlepass level.

  • You can now pass None to ClientPartyMember.set_ready() to make the client go into the Sitting Out state.

  • Added PartyInvitation.net_cl which returnes the net_cl that was sent with a party invitation.

  • Added Presence.avatar to get the cid of the friends Kairos avatar.

  • Added Presence.avatar_colors to get the background colors of the friends Kairos avatar.

  • Added StatsV2.get_stats() which is now the correct approach to getting the users stats mapped to platforms and gamemodes from the object.

  • Added StatsV2.get_combined_stats() to get the users combined stats mapped to platforms. There is also an option to combine stats across all platforms.

  • Added User.fetch_br_stats() to get a users stats directly from the object. (Function exists for Friend too since it inherits from User)

  • Added User.fetch_battlepass_levels() to get a users battlepass level directly from the object. (Function exists for Friend too since it inherits from User)

  • Updated net_cl and build info.

Bug Fixes

  • StatsV2.start_time and StatsV2.end_time now actually works.

  • Removed the new stat s11_social_bp_level from StatsV2.

  • Moved the check invalid net_cl check to method PartyInvitation.accept() so it is possible to catch the exception.

  • Renamed Playlist.violator from violater because of the typo.

  • Waiting for the 2fa code to be entered into console is no longer blocking.

  • Playlist now uses __slots__ to reduce its memory footprint.

  • Fixed another issue that lead to Incompatible net_cl being incorrectly raised.

  • Attempted to fix issue #38.

  • Fixed some issues in the docs.

v0.7.0

BREAKING UPDATE
Lots of small bug fixes and some added functionality as well.

Breaking Changes

Added

  • Added event_logout() which is called just before the client is about to log out.

  • Fortnite is now automatically bought for free on startup if the account does not already own it.

  • Added an example to showcase how you can have multiple clients running at the same time.

  • Added enumeration Platform.

  • Added Client.os. You shouldnt ever need to change this but you could do it by passing a different value with the os keyword when initialising Client.

  • Added PartyMember.outfit_variants to get the raw outfit variants of this member.

  • Added PartyMember.backpack_variants to get the raw backpack variants of this member.

  • Added PartyMember.pickaxe_variants to get the raw pickaxe variants of this member.

  • Added keyword variants to ClientPartyMember.set_backpack().

  • Added keyword variants to ClientPartyMember.set_pickaxe().

  • Added PresenceParty.net_cl to get the net_cl received with this presence.

  • Updated net_cl and build info.

Bug Fixes

  • Fixed and silenced multiple noisy errors like the OpenSSL error printed on shutdown.

  • The default user-agent used internally is now correctly built by Client.build and Client.os.

  • Removed the annoying message printed to console every time a friend was added or removed.

  • Client now successfully shuts down if an error occurs in the login process.

  • You can now try except Client.run().

  • Outgoing presences now correctly uses Client.party_build_id instead of Client.net_cl.

  • Display names of friends should now always have a value if exists.

  • Fixed an issue where a presence would not be sent if a member was promoted to leader of the party.

  • Fixed an issue where Presence.friend would sometimes be None.

  • Fixed an issue where the platform set would not be visibly changed in-game.

  • Fixed an issue where party chat would sometimes not work.

v0.6.4

Little update to push out a better authentication flow.

Added

  • Added a more stable, faster and more reliable authentication flow. Thanks iXyles and Bad_Mate_Pat.

v0.6.3

HIGHLY IMPORTANT UPDATE
Fixed authentication to work with the newest changes fortnite made to their services.

Updated

  • Updated net_cl.

Bug Fixes

  • Fixed authentication.

v0.6.1

Hotpatch to make all datetime objects represented in the UTC timezone.

Changed

  • All datetime objects are now represented in the UTC timezone.

Bug Fixes

  • Fixed an issue where token refresh would happen at the wrong time.

v0.6.0

BREAKING UPDATE
Reworked parties and added some new stuff. This rework has been in my mind for some time but was recently accelerated because of some breaking bugs that required this rework.

Reworked

  • ClientParty is the new object for parties the client is a part of.

  • Party is now only used for parties the client is not a part of.

  • ClientPartyMember is the new object that represents the client as a partymember.

  • PartyMember represents party members like usual but is now mostly read-only with exceptions for some methods.

Note

You can get the ClientPartyMember object from ClientParty.me.

Additions

Bug Fixes

  • Fixed an issue where PartyMember.direction and PartyMember.favorite would be None in events.

  • Fixed an issue where parties would sometimes break down completely when receiving an invite.

v0.5.2

Internal changes 99% of you wont ever notice + some small bug fixes.

Refactored

  • Reworked Client.run() to use asyncio.AbstractEventLoop.run_forever() and implemented better task cleanup heavily based of discord.py’s cleanup method.

  • Reworked Client.start() and Client.logout() a work better together when logging out while running.

  • Changed some internal data body values related to parties to match fortnite’s values.

  • The clients XMPP jid will now use a unique id in its resource part.

Bug Fixes

  • Fixed an issue with Client.fetch_profiles() where if raw was True and some of the profiles were gotten from cache they would not be returned raw.

  • Fixed an issue with Client.fetch_profiles() where if no profiles was retrieved an error would be raised.

v5.0.1

Quick update fixing some small bugs.

Bug Fixes

  • Fixed PartyMember.set_emote() raising an error if run_for keyword argument was None.

  • Fixed an internal error where the party chatroom was not overwritten correctly when leaving a party.

v0.5.0

Breaking update removing Party.leave() and adding many new meta related party features + important bug fixes.

Breaking Changes

  • Removed Party.leave(). Use PartyMember.leave() instead.

New Features

Updated

  • Updated Client.net_cl to match the value from the Fortnite v10.10 update.

  • Updated Client.build to match the value from the Fortnite v10.10 update.

  • Updated Client.engine_build to match the value from the Fortnite v10.10 update.

Bug Fixes

  • Fixed the naming of event_member_updated() not matching the docs.

  • Fixed Client.has_friend() returning the opposite of the correct value.

  • Fixed PartyMember.create_variants() not working like intended in some situations.

  • Fixed an issue where you would get an error if you tried to initialize the client with a different default party privacy.

  • Fixed an issue where Party.set_privacy() would raise an error causing the function to fail.

  • Fixed an issue where an error were sometimes raised due to attempting to create a new party while already in a another.

  • Fixed PartyMember.set_assisted_challenge() only taking a full path for the quest argument.

  • Fixed an issue where members of a party the client is joining would not have updated metas.

  • Fixed an issue where an unecessary error would be raised when sending a message to a party chat.

Miscellanious

  • Added missing event_party_member_leave() to the event reference.

  • Added “How can I fix the Incompatible net_cl error” to the faq.

  • Updated the faq answer regarding two factor auhentication usage.

  • Updated arena docs example for Party.set_privacy() to match the new arena playlist information introduced in Fortnite v10.

v0.4.1

Small update which adds some basic functionality and fixes some important bugs like invites not working.

New Features

Updated

  • Updated Client.net_cl to match the value from the Fortnite v10 update.

  • Updated Client.build to match the value from the Fortnite v10 update.

  • Updated Client.engine_build to match the value from the Fortnite v10 update.

Bug Fixes

v0.4.0

This is a small feature update I’m releasing before I go on a small vacation. I have a couple more features planned that I wished I had time to add to this update that unfortunately didn’t make it in. They will be included in the next update.

New Features

  • event_friend_presence() is now also emitted when a user goes offline on Fortnite.

  • Added Presence.is_available to show if the user that emitted this presence is online or went offline.

  • Added Friend.is_online to show if a friend is currently online on Fortnite.

  • Added support for two factor auhentication. If you do not pass a 2fa code when initializing the client, you will be asked to enter it into console when that time comes.

  • You can now pass Client.two_factor_code and Client.device_id to client when initializing.

  • Added HTTPException.raw to get the raw error received from Fornite services.

Bug Fixes

  • Client.fetch_profile_by_display_name() and Client.fetch_profile() now correctly returns None when the user was not found.

  • Fixed an issue where the fetching of friends on startup did not work as intended.

  • Fixed an issue where the client would fail to automatically recreate a party in some situations.

  • Fixed an issue where party presences was processed as a user presence.

Miscellanious

  • Added missing documentation to some functions.

  • The Incompatible build id error message will now say Incompatible net_cl to avoid some confusion around what the problem really is.

v0.3.1

Minor release to update build info to match the new values changed in v9.41.

Updated

  • Updated Client.net_cl.

  • Updated Client.build.

  • Updated Client.engine_build.

v0.3.0

This update fixes some of the big issues and bugs with this library making it much more stable. It also introduces a couple of missing methods and attributes.

New Features

  • Added PartyMember.leave() for leaving a party and creating a new one.

  • Reworked HTTPException to include more data of the request and exception gotten from Fortnite services.

  • Added attributes display_names and violator to FeaturedStoreItem and DailyStoreItem.

Bug Fixes

  • Fixed XMPP service timing out after a while due to pinging not being handled well enough.

  • Fixed asyncio.TimeoutError sometimes occurring when a new party was being made (mainly noticed on startup) which completely shut down the clients party services.

  • Fixed stale_revision sometimes occurring when party related request happened making the request completely fail.

  • Fixed error code -93 sometimes occurring when trying to join the clients party.

v0.2.0

This is the first major update for fortnitepy. This update includes a fix for an issue with invites not working after the Fortnite v9.40 as well as a couple of new features.

Thanks to amrsatrio and Luc1412 for suggestions and help with this update.

New Features

Bug Fixes

  • Fixed an issue introduced with the Fortnite v9.40 update that made party invites not work.

  • Fixed an issue where the client would not make a new party if the client expires from an earlier party. (fix for fortnite error code -93 upon attempting to join the clients party.)

Miscellanious

  • Added some enums and functions to make ready for StatsV1 support coming in a later update.

v0.1.3

Quick update to update new build info that came with the Fortnite v9.40 update.

Updates

  • Updated net_cl.

  • Updated engine_build.

  • Updated build.