get('message')->get('from')->get('id')]; } function getMessageSenderDisplayName($update) { return $update->get('message')->get('from')->get('first_name'); } function canChatWith($update) { return in_array($update->get('message')->get('from')->get('id'), array_keys(PARTICIPANT_IDS)); } function debug($whatever) { echo '
';
    print_r($whatever);
    echo '
'; } function getInbox($inbox) { STATIC $inboxes; if (!isset($inboxes[$inbox])) { $inboxes[$inbox] = imap_open( '{imap.gmail.com:993/debug/imap/ssl/novalidate-cert}' . $inbox, EMAIL, PASSWORD ); } return $inboxes[$inbox]; } function getMessagesFromInbox($inbox, array $rules, $unseenOnly = true) { return array_filter( array_map( function($rule, $service) use ($inbox, $unseenOnly) { $emails = imap_search($inbox, ['SEEN ', 'UNSEEN '][$unseenOnly] . $rule['imapQuery'], SE_UID); if(!$emails) { return []; } $body = imap_fetchbody($inbox, $emails[0], '1', FT_UID); preg_match($rule['regex'], $rule['messageTransform']($body), $matches); return [ 'service' => $service, 'id' => substr(md5($body), 0, 6), 'uid' => $emails[0], 'telegramMessage' => $rule['telegramMessage'], 'due' => new DateTimeImmutable($rule['dateTransform']($matches['due'])), 'amount' => $matches['amount'] ]; }, $rules, array_keys($rules) ), function($e) { return !!$e; } ); }