get(); foreach ($bots as $bot) { $cron = new CronExpression($bot->schedule); if ($cron->isDue()) { $log = $bot->logs()->create([ 'status' => 'pending', 'started_at' => now(), ]); try { $instance = app($bot->class, ['config' => $bot->config]); if ($instance instanceof BotContract) { dispatch(RunBot::class, $bot, $log); $log->update([ 'started_at' => now(), 'status' => 'running' ]); } } catch (\Throwable $e) { Log::error("Bot [{$bot->name}] failed: " . $e->getMessage()); $log->update([ 'finished_at' => now(), 'status' => 'failed', 'error' => $e->getMessage(), ]); } Log::info("Bot [{$bot->name}] executed successfully."); } } } }