Releases: TehGM/Wolfringo
v2.0.1 - Fix old logging bug
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 ofCommandsService
in constructor. - Fix: Logging of silenced sending exception in commands now checks for a proper error code.
Package URL
v2.0.0 - Client and CommandService builder, help command, cache separation, and much more!
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 withConstantWolfTokenProvider
,RandomizedWolfTokenProvider
andHostedWolfTokenProvider
classes, which are used by WolfClient. This increases flexibility of resolving token. They replaceWolfTokenProvider
. - Added: A new
IWolfClientCache
interface which allows for cache customization via Dependency Injection. - Added: A new
WolfClientCache
class with default caching implementation. This replaces oldWolfEntityCacheContainer
, 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 toIWolfCachedEntityCollection<TEntity>
. - Change:
WolfEntityCacheExtensions
has been renamed toWolfCachedEntityCollectionExtensions
. - Change: Caching related types (including
IWolfClientCacheAccessor
) were moved fromTehGM.Wolfringo.Utilities
to newTehGM.Wolfringo.Caching
namespace. - Change:
DefaultServerURL
,BetaServerURL
andDefaultDevice
constants have been moved fromWolfClient
to a newWolfClientOptions
class. - Change:
ServerURL
,Device
andIgnoreOwnChatMessages
properties ofWolfClient
have been moved to a newWolfClientOptions
class. - Change: It is now possible to provide a custom
ISocketClient
toWolfClient
. - Change: WolfClient's
OnMessageSentInternalAsync
andOnMessageReceivedInternalAsync
were renamed toOnMessageSentAsync
andOnMessageReceivedAsync
respectively. Since caching logic has been moved toIWolfClientCache
, they also are now empty, so overriding them is completely safe. - Change:
UserAchievementListResponse
has been replaced byEntityAchievementListResponse
, 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 returnsICommandResult
instead of a boolean. SupportingAbortOnFail
andSendMessageWhenSkipping
properties andResultFromBoolean
method were added toCommandRequirementAttribute
class. - Change:
StandardCommandInstance
andRegexCommandInstance
now inherit from a sharedCommandInstanceBase
class. - Change:
CommandsOptions
now implement a newICommandOptions
interface. - Change: Some
WolfClient
constructors were removed or marked as obsolete. Favour usingWolfClientBuilder
. - Change: Some
CommandsService
constructors were removed or marked as obsolete. Favour usingCommandsServiceBuilder
. - Change: Types implementing
ICommandResult
are now classes instead of structs. - Change: IsSuccess property of
ICommandResult
is now obsolete. Favour usingStatus
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 inCommandRequirementAttribute
, 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
andCombinedServiceProvider
classes were removed, as they're no longer needed internally. - Change:
CommandInstanceDescriptorExtensions
class has been moved fromTehGM.Wolfringo.Commands.Initialization
toTehGM.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 newConfigureCaching
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
v1.1.2 - Fix to crashes when user icon is null
Release info
This update fixes a rare crash when user's icon is null for some reason.
Changes
- Change:
IconID
withAvatarUtility
is now optional. - Fix: Made WolfUser's and WolfGroup's
Icon
fields nullable.
Package URL
v1.1.1 - Silenced Responses + Non-existing Entities and other bug fixes
Release info
This update consists mainly of under-the-hood fixes and minor behaviour changes.
Changes
- Change:
WolfErrorCode.LoginIncorrectOrCannotSendToGroup
renamed toWolfErrorCode.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 onlyTaskCanceledException
.
Package URL
v1.1.0 - Avatar Utilities + DOB Support
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
v1.0.0 - Commands System & Full Release!
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
'sPrivileges
property changed type fromint
toWolfPrivilege
- Change:
WolfClientReconnector
will now log intermediate errors when reconnection fails - Change: (BREAKING)
Command
inIWolfMessage
was renamed toEventName
to avoid confusion with commands system. - Change:
MessageCommands
class was renamed toMessageEventNames
to avoid confusion with commands system. - Change:
ISerializerMap
,DefaultMessageSerializerMap
andDefaultResponseSerializerMap
were renamed toISerializerProvider
,MessageSerializerProvider
andResponseSerializerProvider
respectively. - Change: Serializer Maps (now Providers) property
FallbackSerializer
is now get-only. - Change: Serializer Maps (now Providers) not take their respective options (
MessageSerializerProviderOptions
andResponseSerializerProviderOptions
) 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 toGetSerializer
. - Change:
UserUpdateMessage
is now correctly in TehGM.Wolfringo.Messages namespace - Change:
DefaultResponseTypeResolver
has been renamed toResponseTypeResolver
. - Change:
DefaultWolfTokenProvider
has been renamed toWolfTokenProvider
. - 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 useIWolfClient
instead. - Change: Wolfringo.Hosting - renamed
ServiceCollectionExtensions
toWolfClientServiceCollectionExtensions
to avoid name clashing. - Fix: HostedWolfClient will no longer start multiple times when IHostedService is registered more than once.
Package URL
v0.4.1 - New login types
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
v0.4.0 - Tipping support, multiple login methods and more
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 replacesDateTime
occurences for WOLF chat messages.WolfTimestamp
supports implicit conversion from and to bothDateTime
andlong
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
andLoginResponse
have been updated to version 2 of login handshake. As a result,LoginResponse
now hasUser
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
v0.3.4 - Minor improvements
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 toProfileName
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
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