Passed
Pull Request — master (#12)
by
unknown
08:46
created

test.php (2 issues)

1
<?php
2
3
declare(strict_types=1);
4
5
require_once './vendor/autoload.php';
6
7
use Jerodev\PhpIrcClient\IrcClient;
8
use Jerodev\PhpIrcClient\IrcChannel;
9
use Jerodev\PhpIrcClient\Options\ClientOptions;
10
11
// Set the IRC network to connect to and the port if you're not connecting to
12
// Freenode.
13
$server = 'chat.freenode.net';
14
$port = '6667';
15
16
// Give your bot a memorable name.
17
$nickname = 'PHP_IRC_Bot';
18
19
// If you add any channels (like ['#php-is-neat']), the bot will automatically
20
// join them when you run `php test.php`.
21
$autojoinChannels = [];
22
23
$options = new ClientOptions(nickname: $nickname, channels: $autojoinChannels);
24
$client = new IrcClient(\sprintf('%s:%s', $server, $port), $options);
25
26
$signal_handler = function (int $signo, mixed $siginfo) use ($client, $server): void {
0 ignored issues
show
The parameter $siginfo is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

26
$signal_handler = function (int $signo, /** @scrutinizer ignore-unused */ mixed $siginfo) use ($client, $server): void {

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
27
    if (SIGHUP === $signo) {
28
        echo 'Caught signal to re-read config', PHP_EOL;
29
        return;
30
    }
31
32
    if (SIGTSTP === $signo) {
33
        echo 'Caught sleep signal', PHP_EOL;
34
35
        // Restore original handler.
36
        pcntl_signal(SIGTSTP, SIG_DFL);
37
        posix_kill(posix_getpid(), SIGTSTP);
38
        return;
39
    }
40
41
    if (SIGCONT === $signo) {
42
        echo 'Caught continue signal', PHP_EOL;
43
        return;
44
    }
45
46
    if (SIGINT !== $signo && SIGTERM !== $signo) {
47
        echo 'Caught unknown signal (', $signo, ')', PHP_EOL;
48
        return;
49
    }
50
51
    // Handle shutdown tasks.
52
    echo 'Disconnecting from ', $server, PHP_EOL;
53
    foreach ($client->getChannels() as $name => $channel) {
54
        $client->part($name);
55
    }
56
    $client->disconnect();
57
    exit();
0 ignored issues
show
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
58
};
59
60
pcntl_signal(SIGHUP, $signal_handler); // kill -HUP <pid>
61
pcntl_signal(SIGINT, $signal_handler); // CTRL-C
62
pcntl_signal(SIGTERM, $signal_handler); // kill <pid>
63
pcntl_signal(SIGTSTP, $signal_handler); // CTRL-Z
64
pcntl_signal(SIGCONT, $signal_handler); // fg after a CTRL-Z
65
66
$client->on('registered', function () use ($server, $port) {
67
    echo \sprintf('Connected to %s, port %s', $server, $port), PHP_EOL;
68
});
69
70
$client->on(
71
    'message',
72
    function (
73
        string $from,
74
        IrcChannel $channel,
75
        string $message
76
    ) use ($client, $nickname): void {
77
        echo \sprintf(
78
            ' . %10s - %10s: %s',
79
            $channel->getName(),
80
            $from,
81
            $message
82
        ), PHP_EOL;
83
84
        if ($nickname === $from) {
85
            // Ignore messages from the bot.
86
            return;
87
        }
88
89
        if (false === str_contains($message, $nickname)) {
90
            // Ignore messages that aren't to the bot.
91
            return;
92
        }
93
94
        echo \sprintf(
95
            ' . %10s - %10s: %s',
96
            $channel->getName(),
97
            $nickname,
98
            'I am not a bot!',
99
        ), PHP_EOL;
100
        $client->say($channel->getName(), 'I am not a bot!');
101
    }
102
);
103
104
$client->connect();
105