Recent changes to this wiki:
lecturify
diff --git a/index.mdwn b/index.mdwn
index eeffb5d..5940aed 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -68,7 +68,7 @@ package main;
my $bot = UppercaseBot->new(
server => 'irc.libera.chat',
port => '6667',
- channels => ['#lbot'],
+ channels => ['#lecturify'],
nick => 'lbot',
name => 'bot owner: gry',
);
@@ -91,6 +91,6 @@ and this is more to say
----
````
-any issues with this bot, query #lbot channel at libera IRC network
+any issues with this bot, query #lecturify channel at libera IRC network
Thanks
`
diff --git a/index.mdwn b/index.mdwn index af52219..eeffb5d 100644 --- a/index.mdwn +++ b/index.mdwn @@ -74,7 +74,7 @@ my $bot = UppercaseBot->new( ); $bot->run(); -``` +```` # how to define a course
diff --git a/index.mdwn b/index.mdwn index e1b0835..af52219 100644 --- a/index.mdwn +++ b/index.mdwn @@ -4,6 +4,7 @@ All wikis are supposed to have a [[SandBox]], so this one does too. # source code of the chat bot +```` # Author: gry@lecturify.net # Licence: public domain
code
diff --git a/index.mdwn b/index.mdwn
new file mode 100644
index 0000000..e1b0835
--- /dev/null
+++ b/index.mdwn
@@ -0,0 +1,95 @@
+This is my wiki. There's nothing here yet.
+
+All wikis are supposed to have a [[SandBox]], so this one does too.
+
+# source code of the chat bot
+
+
+# Author: gry@lecturify.net
+# Licence: public domain
+# Year: 2020-2021
+# Date: Jan 28th 2021 (v1)
+
+use strict;
+use warnings;
+
+# Subclass Bot::BasicBot to provide event-handling methods.
+package UppercaseBot;
+use base qw(Bot::BasicBot);
+use Future::Queue;
+use Future::AsyncAwait;
+use feature qw(signatures);
+
+async sub send_with_ack ($self, $ack_queue, $to_send, $topic, $chan) {
+ foreach my $part (@{$to_send}) {
+ foreach my $msg (split '\n', $part){
+ $self->say(channel => $chan, body => $msg);
+ }
+# $self->say(channel => $chan, body => "Topic $topic completed. To start > await $self->{ack_queue}->shift;
+ }
+}
+
+
+sub said {
+ my $self = shift;
+ my $msg = shift; # Contains the message that the bot heard.
+
+ my @args = split ' ', $msg->{body};
+ my $argslength = scalar @args;
+ if($argslength eq 2){
+ my $cmd = $args[0];
+ my $topic = $args[1];
+ my @chunks = ();
+ if ($cmd eq 'start' and $topic){
+ $self->{ack_queue} = Future::Queue->new;
+ my $filename = "l/$topic.md";
+ open(my $fh, '<:encoding(UTF-8)', $filename) or $self->say(channel > my $break = 1; my $chunk = '';
+ while (my $row = <$fh>) {
+ chomp $row; if($break){$chunk = $row;$break=0;}
+ elsif($row eq '----'){push (@chunks, $chunk); $break = 1;}
+ else{$chunk="$chunk\n$row";}
+ print "$row\n";
+ }
+
+
+ #@chunks = ("test 1\ntest 2", "3\n4\n5");
+ $self->{future} = $self->send_with_ack($self->{ack_queue}, \@chunks> $self->{future}->on_ready(sub { delete $self->{future} });
+ }
+ }
+
+ if($msg->{body} eq "next") {
+ $self->{ack_queue}->push(1); # ack_queue undefined here -- can't push t> }
+# $self->{future}->on_ready(sub { delete $self->{future} });
+
+# Create an object of your Bot::BasicBot subclass and call its run method.
+package main;
+
+my $bot = UppercaseBot->new(
+ server => 'irc.libera.chat',
+ port => '6667',
+ channels => ['#lbot'],
+ nick => 'lbot',
+ name => 'bot owner: gry',
+);
+$bot->run();
+
+```
+
+# how to define a course
+
+put it in `l/coursename.md`
+
+content goes like this
+
+```
+some text for Lbot to say
+some more text to say more
+----
+this separator causes the bot to pause
+and this is more to say
+----
+````
+
+any issues with this bot, query #lbot channel at libera IRC network
+
+Thanks
initial commit
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eecda60 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.ikiwiki