From 4411e6f5498beec81c95eb9810c37cd7ab56a0db Mon Sep 17 00:00:00 2001 From: Zoffix Znet Date: Sat, 15 Oct 2016 14:45:23 -0400 Subject: Fix numeric events being unsubscrabable due to incorrect identifiers Fixes #31 --- examples/08-numeric-bot.p6 | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 examples/08-numeric-bot.p6 (limited to 'examples/08-numeric-bot.p6') diff --git a/examples/08-numeric-bot.p6 b/examples/08-numeric-bot.p6 new file mode 100644 index 0000000..c8edac9 --- /dev/null +++ b/examples/08-numeric-bot.p6 @@ -0,0 +1,32 @@ +use lib ; +use IRC::Client; + +.run with IRC::Client.new: + :nick + :host(%*ENV // 'irc.freenode.net') + :channels<#zofbot> + :2debug + :plugins(class :: does IRC::Client::Plugin { + my class NameLookup { has $.channel; has @.users; has $.e; } + has %.lookups of NameLookup; + + method irc-to-me ($e where /^ 'users in ' $=\S+/) { + my $channel = ~$; + return 'Look up of this channel is already in progress' + if %!lookups{$channel}; + + %!lookups{$channel} = NameLookup.new: :$channel :$e; + $.irc.send-cmd: 'NAMES', $channel; + Nil; + } + method irc-n353 ($e where so %!lookups{ $e.args[2] }) { + %!lookups{ $e.args[2] }.users.append: $e.args[3].words; + Nil; + } + method irc-n366 ($e where so %!lookups{ $e.args[1] }) { + my $lookup = %!lookups{ $e.args[1] }:delete; + $lookup.e.reply: "Users in $lookup.channel(): $lookup.users()[]"; + Nil; + } + + }.new) -- cgit v1.1