- 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
,Role
andServerChannel
, 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
priority
in role updates - Added support for
hiddenUrls
/HiddenUrls
in messages, message creations, message updates - Added support for category and channel user/role permissions (events and CRUD)
- Renamed
role.Position
torole.Priority
- Fixed
role.Position
/role.Priority
beinguint
(it's nowint
) - Fixed issue where role colours had issues deserializing
- Fixed
Role.BotUserId
being GUID instead of HashId
- Added the ability to create threads through
client.CreateChannelAsync
ormessage.CreateThreadAsync
. Thread creation inServerChannel
/ChatChannel
/VoiceChannel
/StreamChannel
is 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
IArchivableContent
that is now an interface forGroup
andServerChannel
objects - Added
GetServersAsync
to fetch bot's servers - Renamed
IWebhookCreatable
toIWebhookCreated
for consistency withIUserCreated
- Moved
IUserCreated
,ICreatableContent
,IUpdatableContent
,IWebhookCreated
toGuilded
namespace
- Fix some serialization issues and channel creation specifically
- Changed name from
CalendarRsvp
toCalendarEventRsvp
- Changed name from
CalendarRsvpStatus
toCalendarEventRsvpStatus
- Changed name from
CalendarCancellation
toCalendarEventCancellation
- Changed
MessageDeleted.ToString()
return value toDeleted Message message-id-here
- Removed long deleted
XpAddedEvent
andAbstractGuildedClient.XpAdded
. These will be re-added once Guilded API adds them back.
Events:
-
Added
CalendarEventComment
class -
Added
CreateEventCommentAsync
,UpdateEventCommentAsync
,DeleteEventCommentAsync
,AddEventCommentReaction
,RemoveEventCommentReaction
methods for calendar event comments -
Added
CalendarEventReaction
,CalendarEventCommentReaction
reaction classes -
Added
CalendarEventSeries
for repeating events. -
Added
CalendarEventRepetition
andCalendarEventInterval
classes,CalendarEventRepetitionType
andCalendarEventIntervalType
enums for setting calendar repetition -
Added the ability to create, update and delete event series through
CreateEventAsync
,UpdateEventSeriesAsync
,DeleteEventSeriesAsync
. -
Added
EventSeriesUpdated
,EventSeriesDeleted
events for calendar event repetition changes -
Added
EventReactionAdded
,EventReactionRemoved
events for calendar event reactions -
Added
EventCommentCreated
,EventCommentUpdated
,EventCommentDeleted
,EventCommentReactionAdded
,EventCommentReactionRemoved
events for calendar event comments -
Added
UpdateEventSeriesAsync
andDeleteEventSeriesAsync
toEventChannel
andCalendarEvent
Docs:
- Added
DocReactionAdded
,DocReactionRemoved
events for doc reactions - Added
DocCommentCreated
,DocCommentUpdated
,DocCommentDeleted
,DocCommentReactionAdded
,DocCommentReactionRemoved
events for doc comments - Added
DocComment
class for document comments - Added
DocReaction
,DocCommentReaction
classes for document reactions - Added
Id
getter toDocEvent
Other stuff:
- Added
UserId
toSocialLink
- Added
CreatedAt
toSocialLink
- Added
MemberSocialLinkCreated
,MemberSocialLinkUpdated
,MemberSocialLinkDeleted
events forSocialLink
changes - Changed
client.UpdateItemAsync
'smessage
argument to be nullable. - Changed lots of documentation
- Added
UserReference
and its single enum fieldMe
- Added support for
UserReference
in 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
ArgumentConverters
toCommandConfiguration
that 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 thantrue
andfalse
boolean values, for instance) - Added
ChannelId
toTopicComment
andTopicCommentEvent
- Added
Updated
,Deleted
toTopicComment
andTopicCommentEvent
- Added
CommentCreated
,CommentUpdated
,CommentDeleted
toTopic
andTopicEvent
- Fixed
TopicReactionEvent
usingMessageReaction
instead ofTopicReaction
- Added
Uri
as a type of a command argument - Added the ability to have multiple prefixes
- Fixed
teamRolesUpdated
not being replaced
- Use the new
Server...
event naming scheme instead ofTeam...
.
- Added
BaseGuildedConnection.DisconnectedWithError
observable - Fixed deserialization errors not being caught and crashing WS events
- Made
CalendarCancellation.Description
optional - Made
ServerChannel
non-abstract for the time being because of Newtonsoft screaming about absolutely nothing (will fix later)
- Fixed where command names that end with
Command
andAsync
would cut down to the length ofCommand
ofAsync
strings
Important renames:
ListItemBase<T>
,ListItemSummary
,ListItem
,ListItemNoteSummary
,ListItemNote
,ListItemEvent
were renamed toItemBase<T>
,ItemSummary
,Item
,ItemNoteSummary
,ItemNote
,ItemEvent
respectively to be more consistent withTopic
,TopicComment
,Doc
,Message
and future types likeMedia
,MediaComment
,Schedule
, as well as to haveListItemNoteSummary
shorter.
Package changes:
Guilded.Base
is now very barebones for Guilded REST stuff. Doesn't contain things likeclient.CreateMessageAsync
or anything. Still contains embeds andMessageContent
Guilded.Connection
. This hasGuilded.Base
as a dependency and builds upon it for WebSocket stuff. OnlyGuilded
package uses it, but this is primarily made for unofficial Guilded libraries.
Actual changes:
- Added
client.Id
,client.BotId
,client.CreatedBy
,client.CreatedAt
,client.Name
that get the named properties fromclient.Me
- Added
message.Replied
,message.Updated
,topic.Updated
,topicEvent.Updated
,user.MemberUpdated
,member.Updated
and similar events - Added
Guilded.GuildedObservableExtensions
that 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
,UnlockTopicAsync
toForumChannel
- Renamed
BaseGuildedClient
toBaseGuildedConnection
, made it for webhook stuff only - Renamed
GuildedWebsocketException
toGuildedSocketException
for consistency withGuildedSocketMessage
- Renamed
RolesUpdatedEvent.RolesUpdated
class toRolessUpdatedEvent.UserRoleUpdate
- Renamed tons of things like
UserId
,EmoteId
, etc. etc. in models likeRolesUpdatedEvent.UserRoleUpdate
to justId
to useIModelHasId<T>
interface (this adds additional extensions to things like observables andIList<T>
). - Moved most of the models from
Guilded.Base
package toGuilded
package.Guilded.Base
now only contains exception types,HashId
,FormId
, embed stuff,BaseGuildedService
,GuildedUrl
,IWebhook
,MessageContent
and some JSON converters. - Moved
GuildedSocketException
,GuildedSocketMessage
,BaseGuildedConnection
andSocketOpcode
toGuilded.Connection
package
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
null
being passed to arguments despite - Removed overlooked channel conversion
Console.WriteLine
(v1.0.2)
- Added webhook masquerading
- Added
ChatChannel
,ForumChannel
,MediaChannel
, etc. - Added
CommandRestAttribute
for string command arguments with spaces included - Added
CommandRegexAttribute
forMatchCollection
andMatch
arguments - Added
object? additionalContext
argument 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.Markdown
package. This includes:MarkdownUtil
static class withInlineCode
,CodeBlock
,Bold
, etc. methodsMarkdownBuilder
static class withStringBuilder
extension methods likeAppendInlineCode
,AppendBold
GuildedMarkdownExtensions
static class with extension methods likemessage.AddReactionAsync('...')
andmessage.AddReactionAsync("smile_guilded")
Emotes
static class withByName
andBySymbol
dictionaries of emotes
- Added
AddTopicPinAsync
,RemoveTopicPinAsync
- Added
GuildedListExtensions
with 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
AbstractGuildedClient
toGuilded.Abstract
namespace - Moved
BaseGuildedClient
toGuilded.Base.Client
namespace - Fixed docs (to make more sense/a bit more consistent with .NET, especially
<returns>
) - Removed
BaseModel
and all types no longer have it
- Added
Banner
andCreatedAt
toMember
type (notUser
, which already had them) - Added
AddReactionAsync(..., Emote emote)
andRemoveReactionAsync(..., Emote emote)
- Added
Mentions
toTopicEvent
- Added
Webhook.CreateUrl(webhookId, token)
- Added
ServerId
toMember
andMemberSummary
(this gets set in the behind the scenes of Guilded.NET, so bugs may occur) - Added
RemoveAsync
,AddBanAsync
,GetSocialLinkAsync
, etc. toMember
andMemberSummary
- Moved
GuildedWebhookClient
andWebhookSkeleton
toGuilded.Webhook
package - Fixed client hanging on reconnect
Important:
- Renamed
AddRoleAsync
andRemoveRoleAsync
toAddMemberRoleAsync
andRemoveMemberRoleAsync
respectively
Other changes:
- Added
Url
andIsExecutable
properties toWebhook
model - Added
WebhookSkeleton
,BaseGuildedService
andGuildedWebhookClient
(extendsBaseGuildedService
) - Fixed
ParentClient
inCommandEvent
always being null - Fixed
InvokeCommandAsync
inCommandParent
not being used at all (now it is used for command invokation, useful for permission stuff) - Moved REST stuff to
BaseGuildedService
- Made
BaseGuildedClient
extendBaseGuildedService
- Added
Mentions
property toTopic
class - Added
ParentClient
toMessageEvent
(forCommandEvent
) - Added different
CommandBase
class that extends olderCommandBase
(CommandParent
), now withInstanceInfo
,Name
,Description
,Examples
andAliases
properties - Renamed
CommandBase
toCommandParent
(CommandBase
still exists)
- Added forum CRUD and events
- Renamed
ReactionAdded
/ReactionRemoved
toMessageReactionAdded
/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
IDisposable
from the client (that means you now have to doawait using var client = ...;
instead)
Other stuff:
- Added rate-limiting handling (rejects)
- Added automatic resuming
- Added
ResponseReceived
observable - Added
ToString
toGuildedSocketMessage
- Added Calendar event RSVPs
- Added
IChannelBased
andIGlobalContent
interfaces - Added
client.GetServerAsync(HashId)
, because I forgot to do that for some reason - Renamed
IServerEvent
toIServerBased
- Changed
LastMessageId
's access frompublic
toprotected
- Changed
WebsocketMessage
's access fromprotected
topublic
- Removed
IServerEvent
from all events - Removed
IDisposable
from the client
- Added support for static methods to be commands too
- Added
CommandConfiguration
- Added new
AddCommands
arguments, which either requireCommandConfiguration
or its constructor's arguments - Added
Emote
model - Added
ReactionAdded
andReactionRemoved
event - Fixed having the ability to declare abstract types and abstract methods as commands
- Fixed not being able to use multiple
Example
attributes - Removed
Prefix
,Separators
andSplitOptions
inCommandModule
- Removed required constructors in
CommandModule
- Added calendar event support
- Renamed
KickMemberAsync
andmember.KickAsync
toRemoveMemberAsync
- Renamed
BanMemberAsync
andmember.BanAsync
toAddMemberBanAsync
- Renamed
UnbanMemberAsync
andmember.UnbanAsync
toRemoveMemberBanAsync
- Fixed mentions always being
null
in messages
- Added
DescriptionAttribute
,ExampleAttribute
attributes for commands - Added
UsageAreaAttribute
attribute for commands, but it isn't used anywhere yet - Added more
EmbedField
,EmbedAuthor
andEmbedFooter
constructors - Added
Mentions
property toListItemNote
- Added support for nullable command arguments
- Renamed
ForumThread
andCreateForumThreadAsync
toTopic
andCreateTopicAsync
- Fixed bugs related to commands
- Fixed embeds not being sent if author does not contain an icon and URL
- Removed
CommandAttribute.Description
andCommandAttribute.Examples
properties
Minor bug fix
- Fixed commands not being able to have
uint
,ulong
orushort
types as their arguments - Fixed arguments of
char
type being parsed asdecimal
type instead - Made
BaseGuildedClient
,AbstractGuildedClient
andGuildedBotClient
implementIAsyncDisposable
- It is recommended to use
await using var client = ...;
, butusing var client = ...;
is still suppported
- It is recommended to use
- Added
CommandLookup
property inCommandBase
- Added
Description
andExamples
getters inICommandInfo<T>
- Added
Mentions
property toMessage
,ListItemSummary
andDoc
types - Added
IModelHasId<T>
- Added
CommandBase.InvokeCommandAsync
virtual methods for overriding - Added
char
andTimeSpan
types to the command argument type list - Fixed event property's documentation
- Renamed
BaseObject
toBaseModel
andClientObject
toContentModel
- Renamed
RootCommandContext
toRootCommandEvent
for consistency - Renamed
FailedCommandEvent.Type
toFailedCommandEvent.FailType
(sinceMessageEvent.Type
is now inherited) - Renamed
CommandBase.InvokeAnyCommandAsync
toCommandBase.InvokeCommandByNameAsync
- Made
CommandEvent
extendMessageEvent
- NOTE:
FailedCommandEvent
extendsCommandEvent
, so it appplies toFailedCommandEvent
as well
- NOTE:
- Removed
CommandEvent.MessageEvent
- Added the ability to execute webhooks using URLs (not only using tokens and webhook IDs independently)
- Added
IsOwner
property toMember
- Added command system
- Added
IsSilent
toMessage
type - Added
IsPrivate
toMessageDeletedEvent.MessageDeleted
andMessageDeletedEvent
types - Added
IsPrivate
,IsSilent
ReplyMessageIds
andEmbeds
properties toMessageEvent
type
- 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
HashId
andstring
- Fixed requiring
embeds:
in message creation for embeds - Fixed
includePrivate
error inGetMessageAsync
- Renamed
ListItem<T>
toListItemBase<T>
and addedListItem
andListItemSummary
- Removed extra unused properties and arguments in embeds
- Added
IsCompleted
property inListItem
- Added
isSilent
parameter while creating messages - Added
Message.EmbedLimit
andMessage.ReplyLimit
- Added creating messages with embeds support
- Added
Message.Embeds
- Added
TitledContent
, which is now a parent type ofDoc
andForumThread
types - Added
IServerEvent
to the events that are supposed to have it - Changed method parameter names (
messageId
->message
;emoteId
->emote
) - Changed
UserSummary.ToString
return value to the mention of the user - Reformatted and reworked a lot of documentation
- Renamed
Message.ContentLimit
toMessage.TextLimit
- Fix
message
argument inUpdateListItemAsync
not being required (consistency with API) - Fix
type
argument inUserSummary
not being optional (consistency with API) - Fix
iconUrl
andurl
arguments being switched inEmbedAuthor
- Commented out remove reaction method that can fool developers
- Fix
Prepared
being called constantly
- Fix
Prepared
actually not being observable
- Added
Me
andIsPrepared
properties to AbstractGuildedClient - Added
IsSystemMessage
toMessage
andMessageEvent
- Added
IsReply
toMessageEvent
- Added
Reconnected
to AbstractGuildedClient - Changed
Prepared
,Connected
,Disconnected
to observables for consistency - Changed
Prepared
to now be invoked afterWelcome
- Changed
Disconnected
,Prepared
andConnected
returned argumentsDisconnected
—Websocket.Client.DisconnectionInfo
Connected
—BaseGuildedClient
Prepared
—Me
- Added
limit
,before
andafter
parameters 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
MessageCreatedEvent
andMessageUpdatedEvent
intoMessageEvent
:WebhookEvent
andMemberBanEvent
are also mergedMessageCreatedEvent
added nothing new andMessageUpdatedEvent
only added non-nullUpdatedAt
- Minor fixes