diff --git a/composer.json b/composer.json index 6393617..0b0a413 100644 --- a/composer.json +++ b/composer.json @@ -21,6 +21,6 @@ }, "scripts": { "phpcs": "phpcs --standard=./phpcs.xml", - "phpmd": "phpmd pigeon.php text phpmd.xml" + "phpmd": "phpmd src/ text phpmd.xml" } } diff --git a/phpcs.xml b/phpcs.xml index 18612f5..f460698 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -11,8 +11,8 @@ - -pigeon.php + +src/ diff --git a/phpmd.xml b/phpmd.xml index e8f38db..53a2ee7 100644 --- a/phpmd.xml +++ b/phpmd.xml @@ -11,9 +11,7 @@ - - - + diff --git a/src/pigeon.php b/src/pigeon.php new file mode 100644 index 0000000..364e083 --- /dev/null +++ b/src/pigeon.php @@ -0,0 +1,53 @@ + $config->get('youtube.api_key'))); +// get channel +$yt_res = $youtube->getChannelById($config->get('youtube.channel_id')); +// get channel info +$config->set('youtube.channel_name', $yt_res->snippet->title); +$config->set('youtube.uploads_id', $yt_res->contentDetails->relatedPlaylists->uploads); + +// create our event loop +$loop = React\EventLoop\Factory::create(); + +// instantiate Discord API object +$discord = new Discord([ + 'token' => $config->get('discord.api_key'), + 'intents' => Intents::getDefaultIntents() | Intents::GUILDS, + 'loop' => $loop, +]); + +// periodic youtube uploads check +$loop->addPeriodicTimer($config->get('pigeon.check_interval') * 60, function () use ($config, $discord, $youtube) { + // get latest video from uploads playlist + $uploads = $youtube->getPlaylistItemsByPlaylistId($config->get('youtube.uploads_id')); + $latest_video_id = $uploads[0]->contentDetails->videoId; + $latest_url = "https://youtu.be/$latest_video_id"; + + $message_text = str_replace('{link}', $latest_url, $config->get('discord.message_template')); + + $discord->guilds->first()->channels->find(function ($channel) use ($config) { + return $channel->name === $config->get('discord.announcement_channel'); + })->sendMessage($message_text)->done(function ($message) use ($discord) { + echo 'Message sent!', PHP_EOL; + }); +}); + +// run tasks when Discord is ready +$discord->on('ready', function (Discord $discord) use ($conf, $latest_url) { + echo "Bot is ready!", PHP_EOL; +}); + +$discord->run();