Blame
Date:
Tue Dec 21 08:11:28 2021 UTC
Message:
Added README to install dependencies
001
2021-12-17
jrmu
#!/usr/bin/perl
002
2021-12-17
jrmu
use strict;
003
2021-12-17
jrmu
use warnings;
004
2021-12-17
jrmu
005
2021-12-17
jrmu
package ChatBot;
006
2021-12-17
jrmu
use base qw(Bot::BasicBot);
007
2021-12-17
jrmu
use Lingua::EN::Tagger;
008
2021-12-17
jrmu
009
2021-12-17
jrmu
my $logs;
010
2021-12-17
jrmu
011
2021-12-17
jrmu
sub chanjoin {
012
2021-12-17
jrmu
my $self = shift;
013
2021-12-17
jrmu
my $arguments = shift;
014
2021-12-17
jrmu
my $nick = $arguments->{who};
015
2021-12-17
jrmu
if ($nick eq $self->pocoirc->nick_name()) {
016
2021-12-17
jrmu
return;
017
2021-12-17
jrmu
}
018
2021-12-17
jrmu
my @greetings = ("Hey there, $nick!",
019
2021-12-17
jrmu
"$nick, welcome!",
020
2021-12-17
jrmu
"sup $nick!",
021
2021-12-17
jrmu
"$nick, it's good to see you.",
022
2021-12-17
jrmu
"How can I help you, $nick?",
023
2021-12-17
jrmu
"Hey $nick, do you hang out here too?",
024
2021-12-17
jrmu
"Hiya $nick.");
025
2021-12-17
jrmu
026
2021-12-17
jrmu
$self->say(
027
2021-12-17
jrmu
channel => $arguments->{channel},
028
2021-12-17
jrmu
body => $greetings[int(rand(scalar(@greetings)))],
029
2021-12-17
jrmu
);
030
2021-12-17
jrmu
}
031
2021-12-17
jrmu
032
2021-12-17
jrmu
sub chanpart {
033
2021-12-17
jrmu
my $self = shift;
034
2021-12-17
jrmu
my $arguments = shift;
035
2021-12-17
jrmu
my $nick = $arguments->{who};
036
2021-12-17
jrmu
my @farewells = ("I'm sad to see $nick go",
037
2021-12-17
jrmu
"Oh, $nick left, I was just about to send a message.",
038
2021-12-17
jrmu
"I always seem to return just as $nick leaves.",
039
2021-12-17
jrmu
"I hope $nick will rejoin later.",
040
2021-12-17
jrmu
"I'm going to take a break too, brb.",
041
2021-12-17
jrmu
"See you later $nick. Oops, I was too late.");
042
2021-12-17
jrmu
043
2021-12-17
jrmu
$self->say(
044
2021-12-17
jrmu
channel => $arguments->{channel},
045
2021-12-17
jrmu
body => $farewells[int(rand(scalar(@farewells)))],
046
2021-12-17
jrmu
);
047
2021-12-17
jrmu
}
048
2021-12-17
jrmu
049
2021-12-17
jrmu
sub emoted {
050
2021-12-17
jrmu
my $self = shift;
051
2021-12-17
jrmu
my $arguments = shift;
052
2021-12-17
jrmu
053
2021-12-17
jrmu
$self->emote(
054
2021-12-17
jrmu
channel => $arguments->{channel},
055
2021-12-17
jrmu
body => "$arguments->{body} too",
056
2021-12-17
jrmu
);
057
2021-12-17
jrmu
}
058
2021-12-17
jrmu
059
2021-12-17
jrmu
sub noticed {
060
2021-12-17
jrmu
my $self = shift;
061
2021-12-17
jrmu
my $arguments = shift;
062
2021-12-17
jrmu
063
2021-12-17
jrmu
my $nick = $arguments->{who};
064
2021-12-17
jrmu
065
2021-12-17
jrmu
my @notices = (
066
2021-12-17
jrmu
"$nick, please resend this in a normal message",
067
2021-12-17
jrmu
"I'm having a hard time reading your notice.",
068
2021-12-17
jrmu
"Good point, $nick.",
069
2021-12-17
jrmu
"Can you message on the public channel instead?",
070
2021-12-17
jrmu
);
071
2021-12-17
jrmu
072
2021-12-17
jrmu
$self->notice(
073
2021-12-17
jrmu
who => $nick,
074
2021-12-17
jrmu
channel => $arguments->{channel},
075
2021-12-17
jrmu
body => $notices[int(rand(scalar(@notices)))],
076
2021-12-17
jrmu
);
077
2021-12-17
jrmu
}
078
2021-12-17
jrmu
079
2021-12-17
jrmu
sub topic {
080
2021-12-17
jrmu
my $self = shift;
081
2021-12-17
jrmu
my $arguments = shift;
082
2021-12-17
jrmu
my @replies = ("Nice",
083
2021-12-17
jrmu
"Hm, I liked the old topic better.",
084
2021-12-17
jrmu
"Please don't change the topic.",
085
2021-12-17
jrmu
"Good thinking.",
086
2021-12-17
jrmu
"That makes more sense.");
087
2021-12-17
jrmu
088
2021-12-17
jrmu
$self->say(
089
2021-12-17
jrmu
channel => $arguments->{channel},
090
2021-12-17
jrmu
body => $replies[int(rand(scalar(@replies)))],
091
2021-12-17
jrmu
);
092
2021-12-17
jrmu
}
093
2021-12-17
jrmu
094
2021-12-17
jrmu
sub said {
095
2021-12-17
jrmu
my $self = shift;
096
2021-12-17
jrmu
my $arguments = shift;
097
2021-12-17
jrmu
098
2021-12-17
jrmu
$logs .= "$arguments->{body}\n";
099
2021-12-17
jrmu
my $p = new Lingua::EN::Tagger;
100
2021-12-17
jrmu
my %word_freqs = $p->get_words($logs);
101
2021-12-17
jrmu
my $keyword;
102
2021-12-17
jrmu
my $total = 0;
103
2021-12-17
jrmu
foreach my $freq (keys %word_freqs) {
104
2021-12-17
jrmu
$total += $word_freqs{$freq};
105
2021-12-17
jrmu
$keyword = $freq if rand($total) < $word_freqs{$freq};
106
2021-12-17
jrmu
}
107
2021-12-17
jrmu
my @replies = ("I think you have a valid point about $keyword.",
108
2021-12-17
jrmu
"Hm, what do others think about $keyword?",
109
2021-12-17
jrmu
ucfirst $keyword." is not something I'm familiar with",
110
2021-12-17
jrmu
"Are you sure about $keyword?",
111
2021-12-17
jrmu
"Tell me more about $keyword.",
112
2021-12-17
jrmu
"What about $keyword?",
113
2021-12-17
jrmu
"Let's talk about something else besides $keyword.");
114
2021-12-17
jrmu
return $replies[int(rand(scalar(@replies)))];
115
2021-12-17
jrmu
}
116
2021-12-17
jrmu
package main;
117
2021-12-17
jrmu
118
2021-12-17
jrmu
my $bot = ChatBot->new(
119
2021-12-17
jrmu
server => 'irc.example.com',
120
2021-12-17
jrmu
port => '6667',
121
2021-12-17
jrmu
channels => ['#perl102'],
122
2021-12-17
jrmu
nick => 'nickname',
123
2021-12-17
jrmu
name => 'username',
124
2021-12-17
jrmu
);
125
2021-12-17
jrmu
$bot->run();
IRCNow