]> git.localhorst.tv Git - alttp.git/blob - app/Console/Commands/DiscordBotCommand.php
be rude to DMs
[alttp.git] / app / Console / Commands / DiscordBotCommand.php
1 <?php
2
3 namespace App\Console\Commands;
4
5 use Discord\Discord;
6 use Discord\Parts\Channel\Message;
7 use Discord\WebSockets\Event;
8 use Illuminate\Console\Command;
9 use Monolog\Handler\StreamHandler;
10 use Monolog\Logger;
11 use React\EventLoop\Loop;
12
13 class DiscordBotCommand extends Command
14 {
15         /**
16          * The name and signature of the console command.
17          *
18          * @var string
19          */
20         protected $signature = 'discord:bot';
21
22         /**
23          * The console command description.
24          *
25          * @var string
26          */
27         protected $description = 'Runs the discord bot';
28
29         /**
30          * Execute the console command.
31          *
32          * @return int
33          */
34         public function handle()
35         {
36                 $logger = new Logger('DiscordBot');
37                 $logger->pushHandler(new StreamHandler('php://stdout', Logger::INFO));
38                 $discord = new Discord([
39                         'logger' => $logger,
40                         'token' => config('discord.token'),
41                 ]);
42                 $discord->on('ready', function (Discord $discord) {
43                         $discord->on(Event::MESSAGE_CREATE, function (Message $message, Discord $discord) {
44                                 if (!empty($message->guild_id)) return;
45                                 if (!empty($message->webhook_id)) return;
46                                 if (!empty($message->application_id)) return;
47                                 if (is_null($message->author)) return;
48                                 if ($message->author->bot) return;
49                                 $discord->getLoop()->addTimer(0.6, function() use ($message) {
50                                         $message->react('😄');
51                                 });
52                                 if (!is_null($message->channel)) {
53                                         $discord->getLoop()->addTimer(2.0, function() use ($message) {
54                                                 $message->channel->sendMessage('bugger off');
55                                         });
56                                 } else {
57                                         $message->delayedReply('bugger off', 2000);
58                                 }
59                         });
60                 });
61                 $discord->getLoop()->addSignal(SIGINT, function() use ($discord) {
62                         $discord->close();
63                 });
64                 $discord->run();
65                 return 0;
66         }
67 }