@@ -4,9 +4,45 @@ namespace Slackbot.Net.Endpoints.Models.Events;
44// https://api.slack.com/events/emoji_changed
55public class EmojiChangedEvent : SlackEvent
66{
7+ public const string SubTypeAdd = "add" ;
8+ public const string SubTypeRemove = "remove" ;
9+ public const string SubTypeRename = "rename" ;
10+
11+ public string SubType { get ; init ; } = string . Empty ; // subtype: add, remove, rename
712 public string ? Name { get ; set ; } // subtype: add
813 public string [ ] Names { get ; set ; } = [ ] ; //subtype: remove
914 public string OldName { get ; set ; } // subtype: rename
1015 public string NewName { get ; set ; } // subtype: rename
1116 public Uri ? Value { get ; set ; } // subtypes: add, rename
17+
18+ public EmojiChange CreateSubType ( ) => SubType switch
19+ {
20+ SubTypeAdd => new EmojiAdded { Name = Name ! , Value = Value ! } ,
21+ SubTypeRemove => new EmojiRemoved { Names = Names } ,
22+ SubTypeRename => new EmojiRenamed { OldName = OldName , NewName = NewName , Value = Value } ,
23+ _ => new UnknownEmojiChange ( )
24+ } ;
25+ }
26+
27+ public class EmojiChange ( ) ;
28+
29+ public class EmojiAdded : EmojiChange
30+ {
31+ public required string Name { get ; init ; }
32+ public Uri Value { get ; init ; }
33+ }
34+
35+ public class EmojiRemoved : EmojiChange
36+ {
37+ public string [ ] Names { get ; set ; } = [ ] ;
1238}
39+
40+ public class EmojiRenamed : EmojiChange
41+ {
42+ public string OldName { get ; set ; } // subtype: rename
43+ public string NewName { get ; set ; } // subtype: rename
44+ public Uri ? Value { get ; set ; } // subtypes: add, rename
45+ }
46+
47+ public class UnknownEmojiChange ( ) : EmojiChange ;
48+
0 commit comments