diff options
author | Zoffix Znet <zoffixznet@users.noreply.github.com> | 2016-07-26 08:50:02 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-26 08:50:02 -0400 |
commit | e0478c07e2096d85e20764c08c83a3d16c002e94 (patch) | |
tree | 592510005886adaadb49848d289c5c712279ecee /lib/IRC/Client/Message.pm6 | |
parent | e997c1b0b5ad796425abfc9f81b91947357172ce (diff) | |
parent | cc19189ff6b74bea5211d521a59dbff0c71a0749 (diff) |
Merge Rewrite 2.0 version into master
Old version should not be used anymore and 2.0 is ready to go, sans some bugs
Diffstat (limited to 'lib/IRC/Client/Message.pm6')
-rw-r--r-- | lib/IRC/Client/Message.pm6 | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/lib/IRC/Client/Message.pm6 b/lib/IRC/Client/Message.pm6 new file mode 100644 index 0000000..9559fd1 --- /dev/null +++ b/lib/IRC/Client/Message.pm6 @@ -0,0 +1,70 @@ +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 { ":$!usermask $!command $!args[]" } +} + +constant M = IRC::Client::Message; + +role Join does M { has $.channel; } +role Mode does M { has @.modes; } +role Mode::Channel does Mode { has $.channel; } +role Mode::Me does Mode { } +role Nick does M { has $.new-nick; } +role Numeric does M { } +role Part does M { has $.channel; } +role Quit does M { } +role Unknown does M { + method Str { "❚⚠❚ :$.usermask $.command $.args[]" } +} + +role Ping does M { + method reply { $.irc.send-cmd: 'PONG', $.args, :$.server; } +} + +role Privmsg does M { + has $.text is rw; + has Bool $.replied is rw = False; + method Str { $.text } +} +role Privmsg::Channel does Privmsg { + has $.channel; + method reply ($text, :$where) { + $.irc.send-cmd: 'PRIVMSG', $where // $.channel, $text, + :$.server, :prefix("$.nick, "); + } +} +role Privmsg::Me does Privmsg { + method reply ($text, :$where) { + $.irc.send-cmd: 'PRIVMSG', $where // $.nick, $text, :$.server; + } +} + +role Notice does M { + has $.text is rw; + has Bool $.replied is rw = False; + method Str { $.text } +} +role Notice::Channel does Notice { + has $.channel; + method reply ($text, :$where) { + $.irc.send-cmd: 'NOTICE', $where // $.channel, $text, + :$.server, :prefix("$.nick, "); + $.replied = True; + } +} +role Notice::Me does Notice { + method reply ($text, :$where) { + $.irc.send-cmd: 'NOTICE', $where // $.nick, $text, :$.server; + $.replied = True; + } +} |