- Fixed some bugs to how new command stuff are handled due to mention support
- Fixed errors not being thrown when command itself throws an error. Now it can be caught in
CommandModule. - Added
Permission.RemoveVoiceGroupMembers
- Added the ability to use
Member,RoleandServerChannel, as well as being able to parse through mentions - Added
member.GetPermissionsAsync()method - Added message threading
- Added supports for categories
- Added all of the message information on deleted messages
- Added support for
priorityin role updates - Added support for
hiddenUrls/HiddenUrlsin messages, message creations, message updates - Added support for category and channel user/role permissions (events and CRUD)
- Renamed
role.Positiontorole.Priority - Fixed
role.Position/role.Prioritybeinguint(it's nowint) - Fixed issue where role colours had issues deserializing
- Fixed
Role.BotUserIdbeing GUID instead of HashId
- Added the ability to create threads through
client.CreateChannelAsyncormessage.CreateThreadAsync. Thread creation inServerChannel/ChatChannel/VoiceChannel/StreamChannelis still missing - Added announcements, announcement reactions, announcement comments and their events, as well as CRUD
- Added user status CRUD and events
- Added Groups CRUD and events
- Added Role CRUD and events
- Added the ability to get member's permissions
- Added server subscription tiers and get server subscription tiers method
- Added
Message.GroupId - Added
IArchivableContentthat is now an interface forGroupandServerChannelobjects - Added
GetServersAsyncto fetch bot's servers - Renamed
IWebhookCreatabletoIWebhookCreatedfor consistency withIUserCreated - Moved
IUserCreated,ICreatableContent,IUpdatableContent,IWebhookCreatedtoGuildednamespace
- Fix some serialization issues and channel creation specifically
- Changed name from
CalendarRsvptoCalendarEventRsvp - Changed name from
CalendarRsvpStatustoCalendarEventRsvpStatus - Changed name from
CalendarCancellationtoCalendarEventCancellation - Changed
MessageDeleted.ToString()return value toDeleted Message message-id-here - Removed long deleted
XpAddedEventandAbstractGuildedClient.XpAdded. These will be re-added once Guilded API adds them back.
Events:
-
Added
CalendarEventCommentclass -
Added
CreateEventCommentAsync,UpdateEventCommentAsync,DeleteEventCommentAsync,AddEventCommentReaction,RemoveEventCommentReactionmethods for calendar event comments -
Added
CalendarEventReaction,CalendarEventCommentReactionreaction classes -
Added
CalendarEventSeriesfor repeating events. -
Added
CalendarEventRepetitionandCalendarEventIntervalclasses,CalendarEventRepetitionTypeandCalendarEventIntervalTypeenums for setting calendar repetition -
Added the ability to create, update and delete event series through
CreateEventAsync,UpdateEventSeriesAsync,DeleteEventSeriesAsync. -
Added
EventSeriesUpdated,EventSeriesDeletedevents for calendar event repetition changes -
Added
EventReactionAdded,EventReactionRemovedevents for calendar event reactions -
Added
EventCommentCreated,EventCommentUpdated,EventCommentDeleted,EventCommentReactionAdded,EventCommentReactionRemovedevents for calendar event comments -
Added
UpdateEventSeriesAsyncandDeleteEventSeriesAsynctoEventChannelandCalendarEvent
Docs:
- Added
DocReactionAdded,DocReactionRemovedevents for doc reactions - Added
DocCommentCreated,DocCommentUpdated,DocCommentDeleted,DocCommentReactionAdded,DocCommentReactionRemovedevents for doc comments - Added
DocCommentclass for document comments - Added
DocReaction,DocCommentReactionclasses for document reactions - Added
Idgetter toDocEvent
Other stuff:
- Added
UserIdtoSocialLink - Added
CreatedAttoSocialLink - Added
MemberSocialLinkCreated,MemberSocialLinkUpdated,MemberSocialLinkDeletedevents forSocialLinkchanges - Changed
client.UpdateItemAsync'smessageargument to be nullable. - Changed lots of documentation
- Added
UserReferenceand its single enum fieldMe - Added support for
UserReferencein most areas where user ID is required (except bans)
- Added support for topic comment reactions
- Fixed topic comment bug where it used wrong API event name
- Added
ArgumentConverterstoCommandConfigurationthat exposes command argument converters that were previously internal. This will allow you to add new argument converters for types, as well as modify them (in cases where you want there to be more thantrueandfalseboolean values, for instance) - Added
ChannelIdtoTopicCommentandTopicCommentEvent - Added
Updated,DeletedtoTopicCommentandTopicCommentEvent - Added
CommentCreated,CommentUpdated,CommentDeletedtoTopicandTopicEvent - Fixed
TopicReactionEventusingMessageReactioninstead ofTopicReaction
- Added
Urias a type of a command argument - Added the ability to have multiple prefixes
- Fixed
teamRolesUpdatednot being replaced
- Use the new
Server...event naming scheme instead ofTeam....
- Added
BaseGuildedConnection.DisconnectedWithErrorobservable - Fixed deserialization errors not being caught and crashing WS events
- Made
CalendarCancellation.Descriptionoptional - Made
ServerChannelnon-abstract for the time being because of Newtonsoft screaming about absolutely nothing (will fix later)
- Fixed where command names that end with
CommandandAsyncwould cut down to the length ofCommandofAsyncstrings
Important renames:
ListItemBase<T>,ListItemSummary,ListItem,ListItemNoteSummary,ListItemNote,ListItemEventwere renamed toItemBase<T>,ItemSummary,Item,ItemNoteSummary,ItemNote,ItemEventrespectively to be more consistent withTopic,TopicComment,Doc,Messageand future types likeMedia,MediaComment,Schedule, as well as to haveListItemNoteSummaryshorter.
Package changes:
Guilded.Baseis now very barebones for Guilded REST stuff. Doesn't contain things likeclient.CreateMessageAsyncor anything. Still contains embeds andMessageContentGuilded.Connection. This hasGuilded.Baseas a dependency and builds upon it for WebSocket stuff. OnlyGuildedpackage uses it, but this is primarily made for unofficial Guilded libraries.
Actual changes:
- Added
client.Id,client.BotId,client.CreatedBy,client.CreatedAt,client.Namethat get the named properties fromclient.Me - Added
message.Replied,message.Updated,topic.Updated,topicEvent.Updated,user.MemberUpdated,member.Updatedand similar events - Added
Guilded.GuildedObservableExtensionsthat addobservable.ElapseOn(TimeSpan),observable.ElapseOnIfNothing(TimeSpan),guildedObservable.InServer(HashId),guildedObservable.InChannel(Guid),guildedObservable.CreatedBy(HashId), etc. - Added
TopicComment,CreateTopicCommentAsync, etc. - Added
CreateCommentAsync,UpdateCommentAsync, etc. toTopic - Added
LockTopicAsync,UnlockTopicAsynctoForumChannel - Renamed
BaseGuildedClienttoBaseGuildedConnection, made it for webhook stuff only - Renamed
GuildedWebsocketExceptiontoGuildedSocketExceptionfor consistency withGuildedSocketMessage - Renamed
RolesUpdatedEvent.RolesUpdatedclass toRolessUpdatedEvent.UserRoleUpdate - Renamed tons of things like
UserId,EmoteId, etc. etc. in models likeRolesUpdatedEvent.UserRoleUpdateto justIdto useIModelHasId<T>interface (this adds additional extensions to things like observables andIList<T>). - Moved most of the models from
Guilded.Basepackage toGuildedpackage.Guilded.Basenow only contains exception types,HashId,FormId, embed stuff,BaseGuildedService,GuildedUrl,IWebhook,MessageContentand some JSON converters. - Moved
GuildedSocketException,GuildedSocketMessage,BaseGuildedConnectionandSocketOpcodetoGuilded.Connectionpackage
Template changes:
- Added VB.NET and F# templates for Webhook client
- Added another example command to commands bot
- Fixed channel conversion (v1.0.1)
- Fixed
nullbeing passed to arguments despite - Removed overlooked channel conversion
Console.WriteLine(v1.0.2)
- Added webhook masquerading
- Added
ChatChannel,ForumChannel,MediaChannel, etc. - Added
CommandRestAttributefor string command arguments with spaces included - Added
CommandRegexAttributeforMatchCollectionandMatcharguments - Added
object? additionalContextargument toDoCommandsAsync(MessageEvent, string, CommandConfig). This allows you to pass anything you need to pass down to commands or something you don't want to re-fetch. - Added
Guilded.Markdownpackage. This includes:MarkdownUtilstatic class withInlineCode,CodeBlock,Bold, etc. methodsMarkdownBuilderstatic class withStringBuilderextension methods likeAppendInlineCode,AppendBoldGuildedMarkdownExtensionsstatic class with extension methods likemessage.AddReactionAsync('...')andmessage.AddReactionAsync("smile_guilded")Emotesstatic class withByNameandBySymboldictionaries of emotes
- Added
AddTopicPinAsync,RemoveTopicPinAsync - Added
GuildedListExtensionswith extension methods forIList<T>for Guilded objects. These include:IList<TModel>.ById(TId)(e.g.,memberList.ById(new HashId("...")))IList<TModel>.ByIdOrDefault(TId)(e.g.,messageList.ByIdOrDefault(new Guid("...")))IList<TModel>.Contains(TId)(e.g.,topicList.Contains(12345678))
- Added
DoCommandsAsync(MessageEvent, CommandConfig)that will now be invoked by the client instead. This will still invoke previousDoCommandsAsync - Renamed
CreateListItemAsync,UpdateListItemAsync,CompleteListItemAsync, etc. toCreateItemAsync,UpdateItemAsync,CompleteItemAsync, etc. - Changed to new WebSocket URL
- Moved
AbstractGuildedClienttoGuilded.Abstractnamespace - Moved
BaseGuildedClienttoGuilded.Base.Clientnamespace - Fixed docs (to make more sense/a bit more consistent with .NET, especially
<returns>) - Removed
BaseModeland all types no longer have it
- Added
BannerandCreatedAttoMembertype (notUser, which already had them) - Added
AddReactionAsync(..., Emote emote)andRemoveReactionAsync(..., Emote emote) - Added
MentionstoTopicEvent - Added
Webhook.CreateUrl(webhookId, token) - Added
ServerIdtoMemberandMemberSummary(this gets set in the behind the scenes of Guilded.NET, so bugs may occur) - Added
RemoveAsync,AddBanAsync,GetSocialLinkAsync, etc. toMemberandMemberSummary - Moved
GuildedWebhookClientandWebhookSkeletontoGuilded.Webhookpackage - Fixed client hanging on reconnect
Important:
- Renamed
AddRoleAsyncandRemoveRoleAsynctoAddMemberRoleAsyncandRemoveMemberRoleAsyncrespectively
Other changes:
- Added
UrlandIsExecutableproperties toWebhookmodel - Added
WebhookSkeleton,BaseGuildedServiceandGuildedWebhookClient(extendsBaseGuildedService) - Fixed
ParentClientinCommandEventalways being null - Fixed
InvokeCommandAsyncinCommandParentnot being used at all (now it is used for command invokation, useful for permission stuff) - Moved REST stuff to
BaseGuildedService - Made
BaseGuildedClientextendBaseGuildedService
- Added
Mentionsproperty toTopicclass - Added
ParentClienttoMessageEvent(forCommandEvent) - Added different
CommandBaseclass that extends olderCommandBase(CommandParent), now withInstanceInfo,Name,Description,ExamplesandAliasesproperties - Renamed
CommandBasetoCommandParent(CommandBasestill exists)
- Added forum CRUD and events
- Renamed
ReactionAdded/ReactionRemovedtoMessageReactionAdded/MessageReactionRemoved - Fixed update calendar event method
- Fixed error related to
Websocket.NativeClient
Important:
- !!! Bumped framework version from .NET Standard 2.1 to .NET 5
- Removed
IDisposablefrom the client (that means you now have to doawait using var client = ...;instead)
Other stuff:
- Added rate-limiting handling (rejects)
- Added automatic resuming
- Added
ResponseReceivedobservable - Added
ToStringtoGuildedSocketMessage - Added Calendar event RSVPs
- Added
IChannelBasedandIGlobalContentinterfaces - Added
client.GetServerAsync(HashId), because I forgot to do that for some reason - Renamed
IServerEventtoIServerBased - Changed
LastMessageId's access frompublictoprotected - Changed
WebsocketMessage's access fromprotectedtopublic - Removed
IServerEventfrom all events - Removed
IDisposablefrom the client
- Added support for static methods to be commands too
- Added
CommandConfiguration - Added new
AddCommandsarguments, which either requireCommandConfigurationor its constructor's arguments - Added
Emotemodel - Added
ReactionAddedandReactionRemovedevent - Fixed having the ability to declare abstract types and abstract methods as commands
- Fixed not being able to use multiple
Exampleattributes - Removed
Prefix,SeparatorsandSplitOptionsinCommandModule - Removed required constructors in
CommandModule
- Added calendar event support
- Renamed
KickMemberAsyncandmember.KickAsynctoRemoveMemberAsync - Renamed
BanMemberAsyncandmember.BanAsynctoAddMemberBanAsync - Renamed
UnbanMemberAsyncandmember.UnbanAsynctoRemoveMemberBanAsync - Fixed mentions always being
nullin messages
- Added
DescriptionAttribute,ExampleAttributeattributes for commands - Added
UsageAreaAttributeattribute for commands, but it isn't used anywhere yet - Added more
EmbedField,EmbedAuthorandEmbedFooterconstructors - Added
Mentionsproperty toListItemNote - Added support for nullable command arguments
- Renamed
ForumThreadandCreateForumThreadAsynctoTopicandCreateTopicAsync - Fixed bugs related to commands
- Fixed embeds not being sent if author does not contain an icon and URL
- Removed
CommandAttribute.DescriptionandCommandAttribute.Examplesproperties
Minor bug fix
- Fixed commands not being able to have
uint,ulongorushorttypes as their arguments - Fixed arguments of
chartype being parsed asdecimaltype instead - Made
BaseGuildedClient,AbstractGuildedClientandGuildedBotClientimplementIAsyncDisposable- It is recommended to use
await using var client = ...;, butusing var client = ...;is still suppported
- It is recommended to use
- Added
CommandLookupproperty inCommandBase - Added
DescriptionandExamplesgetters inICommandInfo<T> - Added
Mentionsproperty toMessage,ListItemSummaryandDoctypes - Added
IModelHasId<T> - Added
CommandBase.InvokeCommandAsyncvirtual methods for overriding - Added
charandTimeSpantypes to the command argument type list - Fixed event property's documentation
- Renamed
BaseObjecttoBaseModelandClientObjecttoContentModel - Renamed
RootCommandContexttoRootCommandEventfor consistency - Renamed
FailedCommandEvent.TypetoFailedCommandEvent.FailType(sinceMessageEvent.Typeis now inherited) - Renamed
CommandBase.InvokeAnyCommandAsynctoCommandBase.InvokeCommandByNameAsync - Made
CommandEventextendMessageEvent- NOTE:
FailedCommandEventextendsCommandEvent, so it appplies toFailedCommandEventas well
- NOTE:
- Removed
CommandEvent.MessageEvent
- Added the ability to execute webhooks using URLs (not only using tokens and webhook IDs independently)
- Added
IsOwnerproperty toMember - Added command system
- Added
IsSilenttoMessagetype - Added
IsPrivatetoMessageDeletedEvent.MessageDeletedandMessageDeletedEventtypes - Added
IsPrivate,IsSilentReplyMessageIdsandEmbedsproperties toMessageEventtype
- Added channels and channel events
- Added docs events
- Added list item events
- Added see also to a lot of documented items and added a lot of see references in documentation
- Added comparisons between
HashIdandstring - Fixed requiring
embeds:in message creation for embeds - Fixed
includePrivateerror inGetMessageAsync - Renamed
ListItem<T>toListItemBase<T>and addedListItemandListItemSummary - Removed extra unused properties and arguments in embeds
- Added
IsCompletedproperty inListItem - Added
isSilentparameter while creating messages - Added
Message.EmbedLimitandMessage.ReplyLimit - Added creating messages with embeds support
- Added
Message.Embeds - Added
TitledContent, which is now a parent type ofDocandForumThreadtypes - Added
IServerEventto the events that are supposed to have it - Changed method parameter names (
messageId->message;emoteId->emote) - Changed
UserSummary.ToStringreturn value to the mention of the user - Reformatted and reworked a lot of documentation
- Renamed
Message.ContentLimittoMessage.TextLimit - Fix
messageargument inUpdateListItemAsyncnot being required (consistency with API) - Fix
typeargument inUserSummarynot being optional (consistency with API) - Fix
iconUrlandurlarguments being switched inEmbedAuthor - Commented out remove reaction method that can fool developers
- Fix
Preparedbeing called constantly
- Fix
Preparedactually not being observable
- Added
MeandIsPreparedproperties to AbstractGuildedClient - Added
IsSystemMessagetoMessageandMessageEvent - Added
IsReplytoMessageEvent - Added
Reconnectedto AbstractGuildedClient - Changed
Prepared,Connected,Disconnectedto observables for consistency - Changed
Preparedto now be invoked afterWelcome - Changed
Disconnected,PreparedandConnectedreturned argumentsDisconnected—Websocket.Client.DisconnectionInfoConnected—BaseGuildedClientPrepared—Me
- Added
limit,beforeandafterparameters to get messages, docs and list items methods - Added rest of list item CRUD methods (
UpdateListItemAsync,DeleteListItemAsync,GetListItemAsync,GetListItemsAsync) - Added member moderation commands (
KickMemberAsync,BanMemberAsync,UnbanMemberAsync,GetBanAsync,GetBansAsync) - Added member removal, member join, member (un)ban, webhook creation/updating events
- Added member, user, member ban and webhook models (
Member,MemberSummary,MemberBan,User,UserSummary,UserType) - Changed list item's note type to
ListItemNote(from create, update, get list item methods) orListItemNoteSummary(from get list item list method) - Merged
MessageCreatedEventandMessageUpdatedEventintoMessageEvent:WebhookEventandMemberBanEventare also mergedMessageCreatedEventadded nothing new andMessageUpdatedEventonly added non-nullUpdatedAt
- Minor fixes