- 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
- Removed/commented out
FormId
(might come back in the future, but not now)
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