====== Matrix bot task: Celtic game warning ======
I want to know if the pub is gonna be busy or if certain friends might not be available, so I need to know when Celtic games are on.
The first hit when I searched 'celtic games' was this [[https://www.skysports.com/celtic-fixtures|Sky Sports: Celtic Fixtures]] page.  Luckily they provide an iCal feed of the games.  I used the [[https://sabre.io/vobject/icalendar/|Sabre VObject PHP class]] to parse their [[webcal://www.skysports.com/calendars/football/fixtures/teams/celtic?live=false|calendar file]].
Install VObject using composer:
cd projectdir
composer require sabre/vobject ~4.1
VEVENT as $event) {
   $date = substr($event->DTSTART,0,8);
   if($today == $date) {
      $time = substr($event->DTSTART,8,12);
      $str .= "Warning:  Celtic game today at ";
      $str .= date("g:ia", strtotime($time));
      $str .= " (";
      $str .= $event->SUMMARY;
      $str .= ")";
      $str .= "\n";
   }
}
if(!empty($str)) {
   require("matrix.class.php");
   $mat = new matrix();
   $room = "#glasgow";
   $mat->post($str, $room);
}
That runs once a day, in the morning and warns me in the main #glasgow channel.  It uses my [[Matrix PHP class]] to post.