aboutsummaryrefslogtreecommitdiff
path: root/examples/07-multi-server-message-forwarder.p6
diff options
context:
space:
mode:
Diffstat (limited to 'examples/07-multi-server-message-forwarder.p6')
-rw-r--r--examples/07-multi-server-message-forwarder.p637
1 files changed, 37 insertions, 0 deletions
diff --git a/examples/07-multi-server-message-forwarder.p6 b/examples/07-multi-server-message-forwarder.p6
new file mode 100644
index 0000000..06d07ec
--- /dev/null
+++ b/examples/07-multi-server-message-forwarder.p6
@@ -0,0 +1,37 @@
+use lib <lib>;
+
+use IRC::Client;
+
+class Messenger does IRC::Client::Plugin {
+ method irc-privmsg-channel ($e) {
+ for $.irc.servers.values -> $server {
+ for $server.channels -> $channel {
+ next if $server eq $e.server and $channel eq $e.channel;
+
+ $.irc.send: :$server, :where($channel), :text(
+ "$e.nick() over at $e.server.host()/$e.channel() says $e.text()"
+ );
+ }
+ }
+
+ $.irc.send: :where<Zoffix>
+ :text('I spread the messages!')
+ :server<local>;
+ }
+}
+
+.run with IRC::Client.new:
+ :debug
+ :plugins[Messenger.new]
+ :nick<MahBot>
+ :channels<#zofbot>
+ :servers{
+ freenode => %(
+ :host<irc.freenode.net>,
+ ),
+ local => %(
+ :nick<P6Bot>,
+ :channels<#zofbot #perl6>,
+ :host<localhost>,
+ )
+ }