aboutsummaryrefslogtreecommitdiff
path: root/lib/IRC/Client/Message.pm6
diff options
context:
space:
mode:
authorZoffix Znet <cpan@zoffix.com>2016-06-04 19:18:31 -0400
committerZoffix Znet <cpan@zoffix.com>2016-06-04 19:18:31 -0400
commit5a2196b2c8f2ac2eacb3ddaf40b3e75b9c38bb62 (patch)
tree0241ad573b1db26be38dbd6396041643c04113a8 /lib/IRC/Client/Message.pm6
parent791d7981cff0cd3a85fdd504f410a7c9833272dc (diff)
Stuff
Diffstat (limited to 'lib/IRC/Client/Message.pm6')
-rw-r--r--lib/IRC/Client/Message.pm642
1 files changed, 33 insertions, 9 deletions
diff --git a/lib/IRC/Client/Message.pm6 b/lib/IRC/Client/Message.pm6
index 69e7c82..4abb718 100644
--- a/lib/IRC/Client/Message.pm6
+++ b/lib/IRC/Client/Message.pm6
@@ -1,9 +1,33 @@
-unit role IRC::Client::Message;
-
-has $.irc is required;
-has Str:D $.nick is required;
-has Str:D $.username is required;
-has Str:D $.host is required;
-has Str:D $.usermask is required;
-has Str:D $.command is required;
-has Str:D $.server is required;
+unit package IRC::Client::Message;
+
+role IRC::Client::Message {
+ has $.irc is required;
+ has Str:D $.nick is required;
+ has Str:D $.username is required;
+ has Str:D $.host is required;
+ has Str:D $.usermask is required;
+ has Str:D $.command is required;
+ has Str:D $.server is required;
+ has @.args is required;
+
+ method Str { "$.command @.args[]" }
+}
+
+constant M = IRC::Client::Message;
+
+role Join does M { has $.channel; }
+role Notice does M { has $.text; }
+role Notice::Channel does Notice { has $.channel; }
+role Notice::Me does Notice { }
+role Mode does M { has @.modes; }
+role Mode::Channel does Mode { has $.channel; }
+role Mode::Me does Mode { }
+role Numeric does M { }
+role Privmsg does M { has $.text; }
+role Privmsg::Channel does Privmsg { has $.channel; }
+role Privmsg::Me does Privmsg { }
+role Unknown does M { method Str { "❚⚠❚ $.command @.args[]" } }
+
+role Ping does M {
+ method reply { $.irc.send-cmd: 'PONG', @.args; }
+}