Files
Scheduler/app/Services/BotService.php
Oskar-Mikael 6a72b7150b
All checks were successful
Deploy App / deploy (push) Successful in 11s
Show error
2025-08-31 22:41:48 +02:00

50 lines
1.4 KiB
PHP

<?php
namespace App\Services;
use App\Models\Bot;
use App\Bots\BotContract;
use App\Jobs\RunBot;
use Cron\CronExpression;
use Illuminate\Support\Facades\Log;
class BotService
{
public function run(): void
{
$bots = Bot::where('enabled', 1)->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->id, $log->id);
$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.");
}
}
}
}