Some plans are being made
This commit is contained in:
parent
fad1fbb4d5
commit
dfcbce03d8
25
event_structure.wsd
Normal file
25
event_structure.wsd
Normal file
@ -0,0 +1,25 @@
|
||||
/'
|
||||
Copyright (C) 2024 CSharp.Discord.API
|
||||
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
'/
|
||||
|
||||
@startuml Event structure
|
||||
|
||||
abstract class Event{
|
||||
' The main event class describing every
|
||||
' event happening within the state machine
|
||||
|
||||
+ Readonly Dictionary<string, object> Fields
|
||||
}
|
||||
|
||||
abstract class CreateEvent extends Event{
|
||||
}
|
||||
|
||||
abstract class ModifyEvent extends Event{
|
||||
}
|
||||
|
||||
abstract class DeleteEvent extends Event{
|
||||
}
|
||||
|
||||
@enduml
|
||||
158
object_structure.wsd
Normal file
158
object_structure.wsd
Normal file
@ -0,0 +1,158 @@
|
||||
/'
|
||||
Copyright (C) 2024 CSharp.Discord.API
|
||||
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
'/
|
||||
|
||||
@startuml Object structure
|
||||
|
||||
struct ID <<readonly>>{
|
||||
+ uint64 id
|
||||
}
|
||||
|
||||
class LifeSpan{
|
||||
+ bool Alive
|
||||
+ {event} Expired
|
||||
+ {static} Infinite
|
||||
~ Kill()
|
||||
}
|
||||
|
||||
abstract class DiscordObject{
|
||||
+ ID Id
|
||||
+ ReadonlyDictionary<string, string> UnmanagedFields
|
||||
+ LifeSpan LifeSpan
|
||||
~ void Update(ModifyEvent e)
|
||||
+ {static} DiscordObject CreateNew(CreateEvent e)
|
||||
}
|
||||
|
||||
class DiscordList <<generic>> implements "IReadonlyDictionary<ID; DiscordObject>"{
|
||||
- Dictionary<ID, DiscordObject> Items
|
||||
+ void UpdateMany(IEnumerable<Event> events)
|
||||
}
|
||||
|
||||
class Application extends DiscordObject {
|
||||
+ string Name
|
||||
' There are a lot of extra fields not accounted for here
|
||||
}
|
||||
|
||||
abstract class Channel extends DiscordObject{
|
||||
' Type will be expressed by the dynamic type of the object
|
||||
' This is a broad parent class for all channels
|
||||
}
|
||||
|
||||
abstract class GuildChannel extends Channel{
|
||||
' Channels inside guilds
|
||||
+ string Name
|
||||
+ Guild Guild
|
||||
+ Channel? Parent
|
||||
}
|
||||
|
||||
class DirectChannel extends Channel{
|
||||
' Direct channels between two users
|
||||
}
|
||||
|
||||
class GroupDMChannel extends DirectChannel{
|
||||
|
||||
}
|
||||
|
||||
class GuildCategoryChannel extends GuildChannel{
|
||||
|
||||
}
|
||||
|
||||
class GuildTextChannel extends GuildChannel{
|
||||
|
||||
}
|
||||
|
||||
class GuildAnnouncementChannel extends GuildTextChannel{
|
||||
|
||||
}
|
||||
|
||||
class GuildForumChannel extends GuildTextChannel{
|
||||
|
||||
}
|
||||
|
||||
class GuildThreadChannel extends GuildTextChannel{
|
||||
|
||||
}
|
||||
|
||||
class GuildAnnouncementThreadChannel extends GuildThreadChannel{
|
||||
|
||||
}
|
||||
|
||||
class GuildPublicThreadChannel extends GuildThreadChannel{
|
||||
|
||||
}
|
||||
|
||||
class GuildPrivateThreadChannel extends GuildThreadChannel{
|
||||
|
||||
}
|
||||
|
||||
class GuildVoiceChannel extends GuildChannel{
|
||||
+ int Bitrate
|
||||
}
|
||||
|
||||
class GuildStageChannel extends GuildVoiceChannel{
|
||||
|
||||
}
|
||||
|
||||
class Emoji extends DiscordObject{
|
||||
+ string Name
|
||||
+ ID[]? AllowedRoles
|
||||
}
|
||||
|
||||
class Sticker extends DiscordObject{
|
||||
+ string Name
|
||||
+ string? Description
|
||||
+ int Type
|
||||
+ int FormatType
|
||||
+ Guild? Guild
|
||||
}
|
||||
|
||||
class User extends DiscordObject{
|
||||
+ string Username
|
||||
+ string? Discriminator
|
||||
+ string? GlobalName
|
||||
}
|
||||
|
||||
class GuildMember extends DiscordObject{
|
||||
+ User? User
|
||||
+ string? Nickname
|
||||
+ List<Role> Roles
|
||||
+ DateTime JoinedAt
|
||||
+ bool Mute
|
||||
+ bool Deaf
|
||||
}
|
||||
|
||||
class Role extends DiscordObject {
|
||||
+ string Name
|
||||
+ uint Color
|
||||
+ bool Hoist
|
||||
+ int Position
|
||||
+ bool Mentionable
|
||||
}
|
||||
|
||||
class Guild extends DiscordObject{
|
||||
+ string Name
|
||||
+ string? Description
|
||||
+ ID OwnerId
|
||||
+ Channel? AfkChannel
|
||||
+ Channel? SystemChannel
|
||||
+ Channel? RulesChannelId
|
||||
+ int AfkTimeout
|
||||
+ DiscordList<Role> Roles
|
||||
+ DiscordList<Emoji> Emojis
|
||||
+ DiscordList<GuildMember> Members
|
||||
+ DiscordList<GuildChannel> Channels
|
||||
}
|
||||
|
||||
ID *-- DiscordObject
|
||||
User *-- GuildMember
|
||||
GuildMember "0..*" <-- Guild
|
||||
Role "0..*" <-- Guild
|
||||
Emoji "0..*" <-- Guild
|
||||
Sticker "0..*" <-- Guild
|
||||
GuildChannel "0..*" <-- Guild
|
||||
LifeSpan *-- DiscordObject
|
||||
DiscordObject "0..*" <-- DiscordList
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user