Skip to content

Releases: TehGM/Wolfringo

v2.0.1 - Fix old logging bug

13 Nov 13:46
fa0d089
Compare
Choose a tag to compare

Release info

This small update fixes an old bug that caused silenced messages to be logged as error, along with other really small tweaks.

Changes

  • Change: CommandsListBuilder now accepts ICommandsService instead of CommandsService in constructor.
  • Fix: Logging of silenced sending exception in commands now checks for a proper error code.

Package URL

Main meta-package - NuGet.org
Wolfringo.Hosting - NuGet.org

v2.0.0 - Client and CommandService builder, help command, cache separation, and much more!

08 Nov 13:31
3cb7a33
Compare
Choose a tag to compare

Release info

Wolfringo v2.0 brings some significant changes - streamlined client and commands initialization, separation of caching and client logic, addition of help command support, and many more.
See Upgrade Guide for help with migrating and high level breakdown of new features!

As a bonus, official documentation page now has a set of guides on Customizing Wolfringo, which should make it much easier for you to tweak Wolfringo's internals!

Changes

  • Added: WolfClientBuilder that makes creation of a WolfClient much easier! See Getting Started to check out the new flow!
  • Added: CommandsServiceBuilder that makes creation of a CommandsService much easier! See Commands System to check out the new flow!
  • Added: Easy help command support. See Help Command to learn more!
  • Added: {{RecipientID}} and {{RecipientName}} placeholders are now supported in command argument error messages.
  • Added: [ArgumentText] attribute for command method arguments.
  • Added: Support for checking URL metadata.
  • Added: Support for requesting group achievements.
  • Added: Both standard and regex commands now support a timeout.
  • Added: Regex commands now support a Regex engine timeout to prevent potential attacks.
  • Added: Extension method for ChatMessage class: GetMessageWithoutPrefix.
  • Added: CommandContextOptions class which can now be injected into command method.
  • Added: CommandRequirementsResult class for use by command requirements.
  • Added: IWolfTokenProvider interface, along with ConstantWolfTokenProvider, RandomizedWolfTokenProvider and HostedWolfTokenProvider classes, which are used by WolfClient. This increases flexibility of resolving token. They replace WolfTokenProvider.
  • Added: A new IWolfClientCache interface which allows for cache customization via Dependency Injection.
  • Added: A new WolfClientCache class with default caching implementation. This replaces old WolfEntityCacheContainer, which is now removed.
  • Added: A new WolfCacheOptions class for configuring built-in caching.
  • Change: Caching related properties have been removed from WolfClient.
  • Change: IWolfEntityCache<TEntity> has been renamed to IWolfCachedEntityCollection<TEntity>.
  • Change: WolfEntityCacheExtensions has been renamed to WolfCachedEntityCollectionExtensions.
  • Change: Caching related types (including IWolfClientCacheAccessor) were moved from TehGM.Wolfringo.Utilities to new TehGM.Wolfringo.Caching namespace.
  • Change: DefaultServerURL, BetaServerURL and DefaultDevice constants have been moved from WolfClient to a new WolfClientOptions class.
  • Change: ServerURL, Device and IgnoreOwnChatMessages properties of WolfClient have been moved to a new WolfClientOptions class.
  • Change: It is now possible to provide a custom ISocketClient to WolfClient.
  • Change: WolfClient's OnMessageSentInternalAsync and OnMessageReceivedInternalAsync were renamed to OnMessageSentAsync and OnMessageReceivedAsync respectively. Since caching logic has been moved to IWolfClientCache, they also are now empty, so overriding them is completely safe.
  • Change: UserAchievementListResponse has been replaced by EntityAchievementListResponse, which supports both user and group achievements.
  • Change: Sender utility now returns achievements with nullable timestamps. This is due to how WOLF server handles them.
  • Change: Command requirements' CheckAsync method now returns ICommandResult instead of a boolean. Supporting AbortOnFail and SendMessageWhenSkipping properties and ResultFromBoolean method were added to CommandRequirementAttribute class.
  • Change: StandardCommandInstance and RegexCommandInstance now inherit from a shared CommandInstanceBase class.
  • Change: CommandsOptions now implement a new ICommandOptions interface.
  • Change: Some WolfClient constructors were removed or marked as obsolete. Favour using WolfClientBuilder.
  • Change: Some CommandsService constructors were removed or marked as obsolete. Favour using CommandsServiceBuilder.
  • Change: Types implementing ICommandResult are now classes instead of structs.
  • Change: IsSuccess property of ICommandResult is now obsolete. Favour using Status property.
  • Change: Exception property has been removed from most of classes implementing ICommandResult.
  • Change: ErrorMessage property of ICommandRequirement has been removed. It is still present in CommandRequirementAttribute, so existing error messages should still work just fine.
  • Change: ICommandsService now has Commands property, containing all instance descriptors currently active within the service.
  • Change: SimpleServiceProvider and CombinedServiceProvider classes were removed, as they're no longer needed internally.
  • Change: CommandInstanceDescriptorExtensions class has been moved from TehGM.Wolfringo.Commands.Initialization to TehGM.Wolfringo.Commands namespace.
  • Change: Command instance descriptor extension methods now use new internal attribute cache class DescriptorAttributeCache. This cache uses lazy reflection for performance.
  • Change: Priority property of CommandInstanceDescriptor has been removed. Favour using extension methods.
  • Change: JSON Converters have been modified to support JsonPath.
  • Change: "command" argument has been renamed to "eventName" in signatures of built-in message and response serializers.
  • Change: Constructor of HostedWolfClient has been simplified.
  • Change: IHostedWolfClientServiceBuilder now has a new ConfigureCaching method.
  • Fix: Requesting specific achievements has been optimized, which should result in a slightly reduced network usage.
  • Fix: Dependency Injection mechanisms for Commands now correctly differentiate between argument with default value and optional argument.
  • Fix: Some Sender methods were not configuring await properly. This is now fixed.

Package URL

Main meta-package - NuGet.org
Wolfringo.Hosting - NuGet.org

v1.1.2 - Fix to crashes when user icon is null

05 Feb 12:31
0c96ef5
Compare
Choose a tag to compare

Release info

This update fixes a rare crash when user's icon is null for some reason.

Changes

  • Change: IconID with AvatarUtility is now optional.
  • Fix: Made WolfUser's and WolfGroup's Icon fields nullable.

Package URL

Main meta-package - NuGet.org
Wolfringo.Hosting - NuGet.org

v1.1.1 - Silenced Responses + Non-existing Entities and other bug fixes

06 Jan 11:53
08fcbcc
Compare
Choose a tag to compare

Release info

This update consists mainly of under-the-hood fixes and minor behaviour changes.

Changes

  • Change: WolfErrorCode.LoginIncorrectOrCannotSendToGroup renamed to WolfErrorCode.LoginIncorrectOrCannotSendMessage.
  • Change: WolfErrorCode.LoginIncorrectOrCannotSendMessage error description changed to "Blocked, silenced, banned, or not in group".
  • Change: Commands Service will now log warning instead of error when command failed to reply.
  • Fix: Requesting users/groups that don't exist will now return null instead of default.
  • Fix: Improve internal de-registering of events in HostedWolfClient.
  • Fix: ReconnectorConfig will no longer throw when attempts count is 0.
  • Fix: Interactive utilities now handle all OperationCanceledException instead of only TaskCanceledException.

Package URL

Main meta-package - NuGet.org
Wolfringo.Hosting - NuGet.org

v1.1.0 - Avatar Utilities + DOB Support

04 Jan 15:48
2b4cefd
Compare
Choose a tag to compare

Release info

This update adds a few small features - utilities for user and group avatars, as well support for user's Date of Birth.
On top of code changes, Wolfringo Documentation now has a small FAQ section designed to help when moving to Wolfringo from other WOLF libraries - check it here.

Changes

  • Added: A few extension methods designed to help with downloading user and group avatars.
  • Added: WolfUser now has Date of Birth.
  • Added: Profile Update now can change Date of Birth of current user.
  • Change: Made some methods of SimpleServiceProvider an implicit implementations.
  • Fix: Added missing or previously broken documentation comments.

Package URL

Main meta-package - NuGet.org
Wolfringo.Hosting - NuGet.org

v1.0.0 - Commands System & Full Release!

18 Dec 13:24
741e1df
Compare
Choose a tag to compare

Release info

This update adds a new, extensible commands system, among other smaller improvements. This update marks v1.0.0 release of the library.
On top of code changes, Wolfringo now has a Documentation Page. Wooo!

Changes

  • Added: (MAJOR FEATURE) A Commands System, with standard and regex commands. Fully extensible with Dependency Injection and proper abstractions.
  • Added: Wolfringo.Hosting - AddWolfClient() now returns a new builder type, which allows chaining calls to add/alter serializer mappings, as well as modify options.
  • Added: WolfPrivilege enum that maps user's account-wide privileges. WolfUser's Privileges property changed type from int to WolfPrivilege
  • Change: WolfClientReconnector will now log intermediate errors when reconnection fails
  • Change: (BREAKING) Command in IWolfMessage was renamed to EventName to avoid confusion with commands system.
  • Change: MessageCommands class was renamed to MessageEventNames to avoid confusion with commands system.
  • Change: ISerializerMap, DefaultMessageSerializerMap and DefaultResponseSerializerMap were renamed to ISerializerProvider, MessageSerializerProvider and ResponseSerializerProvider respectively.
  • Change: Serializer Maps (now Providers) property FallbackSerializer is now get-only.
  • Change: Serializer Maps (now Providers) not take their respective options (MessageSerializerProviderOptions and ResponseSerializerProviderOptions) classes as arguments, instead of Enumerables of KeyValuePairs. (breaking if custom serializers were used)
  • Change: Serializer Maps (now Providers) no longer have MapSerializer method. Please use their options classes instead. (breaking if custom serializers were used)
  • Change: Serializer Maps (now Providers) method GetMappedSerializer was renamed to GetSerializer.
  • Change: UserUpdateMessage is now correctly in TehGM.Wolfringo.Messages namespace
  • Change: DefaultResponseTypeResolver has been renamed to ResponseTypeResolver.
  • Change: DefaultWolfTokenProvider has been renamed to WolfTokenProvider.
  • Change: AddWolfClient from Wolfringo.Hosting won't overwrite any service registered by the user anymore.
  • Change: Wolfringo.Hosting now uses Wolfringo.Commands as dependency.
  • Change: (BREAKING) IHostedWolfClient interface was removed. Please use IWolfClient instead.
  • Change: Wolfringo.Hosting - renamed ServiceCollectionExtensions to WolfClientServiceCollectionExtensions to avoid name clashing.
  • Fix: HostedWolfClient will no longer start multiple times when IHostedService is registered more than once.

Package URL

Main meta-package - NuGet.org
Wolfringo.Hosting - NuGet.org

v0.4.1 - New login types

18 Oct 17:59
Compare
Choose a tag to compare

Release info

This update adds new login types supported by WOLF, and brings some improvements to reconnection logic.

Note: While this library will now be distributed via nuget.org, it's still not version 1.0.0, so breaking changes might still occur. This is caused by WOLF protocol rapidly changing while being inconsistent. I also want to develop a proper commands system before version 1.0.0 - and it's still WIP.

Changes

  • Added: Support for logging in via Snapchat and Twitter.
  • Change: WolfClientReconnector and HostedWolfClient now both accept negative values for count of reconnect attempts. Such values will be treated as infinite attempts.
  • Fix: Improved cancellation token support in WolfClientReconnector.

Disclaimer

Any version before version 1.0.0 may include major breaking changes, and might have bugs.
Any version before version 0.3.0 may be especially unstable.

Package URL

Main meta-package - NuGet.org
Wolfringo.Hosting - NuGet.org

v0.4.0 - Tipping support, multiple login methods and more

20 Sep 16:03
Compare
Choose a tag to compare

Release info

This update brings significant changes to logging in, support for message tipping and deleting, as well as numerous smaller improvements.

This release also is the first release that is available on nuget.org. This should make it much easier to download and use the library.

Note: While this library will now be distributed via nuget.org, it's still not version 1.0.0, so breaking changes might still occur. This is caused by WOLF protocol rapidly changing while being inconsistent. I also want to develop a proper commands system before version 1.0.0 - and it's still WIP.

Changes

  • Added: Ability to delete and restore group messages.
  • Added: Ability to tip group messages, and retrieve tips information.
  • Added: Support for logging in via FB, Apple and Google.
  • Added: New WolfTimestamp type, which replaces DateTime occurences for WOLF chat messages. WolfTimestamp supports implicit conversion from and to both DateTime and long types.
  • Added: Support for group owner change group action event.
  • Change: HostedWolfClient configuration "LoginEmail" has been renamed to "LoginUsername". New "LoginType" property has been added.
  • Change: IChatMessage.ID is now marked as obsolete, as WOLF now prefers to use Timestamp for chat message identification.
  • Change: LoginMessage and LoginResponse have been updated to version 2 of login handshake. As a result, LoginResponse now has User property instead of multiple properties describing the user.
  • Change: Subscribing to group messages and tips now returns dictionary of subscribed group IDs and the HTTP status code. This can be used to determine which subscribtions were successful or failed on a per-group basis.
  • Fix: Fixed dependency error that occured in previous version of Wolfringo metapackage.
  • Fix: Getting contact and group lists will no longer throw an exception when bot user has no contacts/groups.
  • Fix: Timestamp is now parsed with correct accuracy.

Disclaimer

Any version before version 1.0.0 may include major breaking changes, and might have bugs.
Any version before version 0.3.0 may be especially unstable.

Package URL

Main meta-package - NuGet.org
Wolfringo.Hosting - NuGet.org

v0.3.4 - Minor improvements

20 Aug 15:02
Compare
Choose a tag to compare

Release info

This small update aims to make client a bit more customizable without need to rewrite its parts.

Note: This version of metapackage has a small error in its dependencies. Please manually update Wolfringo.Utilities to version 0.2.3 for this version. This dependency will be fixed in next releases.

Changes

  • Added: WolfClient now has IgnoreOwnChatMessages property. By default it's set to true. Setting it to false makes bot receive callbacks for own chat messages. HostedWolfClient can set this property using configuration.
  • Added: New methods in Sender utility to allow subscribing to messages.
  • Change: Sender's LoginAsync no longer automatically subscribes to all messages. Please read README to see how to handle subscribing.
  • Change: Name property of User Update was renamed to ProfileName to stay the same as WolfUser entity.
  • Change: WolfClient's CallbackDispatcher and SocketClient are now protected.
  • Change: MessageSendingException now includes the command sent to the server in its Message.

Disclaimer

Any version before version 1.0.0 may include major breaking changes, and might have bugs.
Any version before version 0.3.0 may be especially unstable.

Package URL

Main meta-package - GitHub Packages
Wolfringo.Hosting - GitHub Packages

v0.3.3 - Reconnection bug fixes

10 Aug 14:07
Compare
Choose a tag to compare

Release info

This small update fixes a few bugs regarding provided reconnection helpers

Changes

  • Change: WolfClient constructor now takes device as WolfDevice enum instead of a string.
  • Change: WolfClient now has an overload for ConnectAsync method which allows changing device used for new connection.
  • Change: WolfClientReconnector will throw if configured reconnect attempts is less than 1.
  • Fix: WolfClientReconnector and built-in reconnection in HostedWolfClient will no longer keep trying to reconnect after a reconnection attempt was successful.
  • Fix: SocketClient will now clear itself before raising Disconnected event to fix IsConnected being true after disconnection.

Disclaimer

Any version before version 1.0.0 may include major breaking changes, and might have bugs.
Any version before version 0.3.0 may be especially unstable.

Package URL

Main meta-package - GitHub Packages
Wolfringo.Hosting - GitHub Packages