Autosave: 20260215-012950
This commit is contained in:
parent
fbb0a6dc6c
commit
cf5ab187f0
BIN
assets/pasted-20260215-010356-27394307.jpg
Normal file
BIN
assets/pasted-20260215-010356-27394307.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 554 KiB |
756
bot.php
756
bot.php
@ -2,6 +2,8 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
putenv('PATH=' . getenv('PATH') . ':/usr/bin:/usr/local/bin');
|
||||
|
||||
require_once __DIR__ . '/vendor/autoload.php';
|
||||
require_once __DIR__ . '/db/config.php';
|
||||
|
||||
@ -51,13 +53,130 @@ $voiceClient = null;
|
||||
$joiningGuilds = [];
|
||||
$ffmpegPath = trim((string)shell_exec("command -v ffmpeg"));
|
||||
|
||||
/**
|
||||
* Safely join a voice channel by ensuring any existing connection is closed first.
|
||||
*/
|
||||
function safeJoin(Discord $discord, $channel, $interaction = null, $onSuccess = null) {
|
||||
global $joiningGuilds;
|
||||
$guildId = $channel->guild_id;
|
||||
|
||||
// Check if we are already in the correct channel
|
||||
$vc = $discord->getVoiceClient($guildId);
|
||||
if ($vc) {
|
||||
if ((string)$vc->channel->id === (string)$channel->id) {
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if ($isReady) {
|
||||
logToDb("Already in channel {$channel->name} and ready.");
|
||||
unset($joiningGuilds[$guildId]);
|
||||
if ($onSuccess) $onSuccess($vc);
|
||||
return;
|
||||
} else {
|
||||
logToDb("Already in channel {$channel->name} but not ready yet. Waiting...");
|
||||
// Don't start a new join, just wait or if stuck, clear and try again
|
||||
if (!isset($joiningGuilds[$guildId])) {
|
||||
$joiningGuilds[$guildId] = true;
|
||||
}
|
||||
$vc->once('ready', function() use ($onSuccess, $vc, $guildId) {
|
||||
global $joiningGuilds;
|
||||
unset($joiningGuilds[$guildId]);
|
||||
if ($onSuccess) $onSuccess($vc);
|
||||
});
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
logToDb("In different channel ({$vc->channel->name}), closing old connection first.");
|
||||
$vc->close();
|
||||
// Fall through to the timer logic below if needed, or just let it proceed
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($joiningGuilds[$guildId]) && $joiningGuilds[$guildId] === true) {
|
||||
logToDb("Join already in progress for guild $guildId");
|
||||
if ($interaction) {
|
||||
try {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("⏳ A join request is already in progress..."));
|
||||
} catch (\Throwable $e) {}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
$joiningGuilds[$guildId] = true;
|
||||
|
||||
// Safety timeout: clear joining state after 45 seconds
|
||||
$discord->getLoop()->addTimer(45.0, function() use ($guildId) {
|
||||
global $joiningGuilds;
|
||||
if (isset($joiningGuilds[$guildId]) && $joiningGuilds[$guildId] === true) {
|
||||
logToDb("Safety timeout: Clearing stuck join state for guild $guildId");
|
||||
unset($joiningGuilds[$guildId]);
|
||||
}
|
||||
});
|
||||
|
||||
$doJoin = function() use ($discord, $channel, $interaction, $onSuccess, $guildId) {
|
||||
global $joiningGuilds;
|
||||
|
||||
logToDb("Executing joinVoiceChannel for guild $guildId, channel " . $channel->name);
|
||||
$discord->joinVoiceChannel($channel, false, false)->then(function (VoiceClient $vc) use ($onSuccess, $guildId, $discord) {
|
||||
global $joiningGuilds;
|
||||
$joiningGuilds[$guildId] = 'connected'; // Mark as connected but maybe not ready
|
||||
logToDb("Successfully joined " . $vc->channel->name);
|
||||
|
||||
$vc->on('error', function ($e) use ($guildId) {
|
||||
logToDb("VoiceClient Error in guild $guildId: " . $e->getMessage(), 'error');
|
||||
});
|
||||
|
||||
$vc->on('close', function () use ($guildId) {
|
||||
global $joiningGuilds;
|
||||
unset($joiningGuilds[$guildId]);
|
||||
logToDb("VoiceClient Closed in guild $guildId");
|
||||
});
|
||||
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if ($isReady) {
|
||||
unset($joiningGuilds[$guildId]);
|
||||
if ($onSuccess) $onSuccess($vc);
|
||||
} else {
|
||||
$vc->once('ready', function() use ($onSuccess, $vc, $guildId) {
|
||||
global $joiningGuilds;
|
||||
unset($joiningGuilds[$guildId]);
|
||||
if ($onSuccess) $onSuccess($vc);
|
||||
});
|
||||
}
|
||||
}, function ($e) use ($interaction, $guildId, $discord) {
|
||||
global $joiningGuilds;
|
||||
unset($joiningGuilds[$guildId]);
|
||||
logToDb("Error joining VC in guild $guildId: " . $e->getMessage(), 'error');
|
||||
|
||||
if ($interaction) {
|
||||
try {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Error joining voice channel: " . $e->getMessage()));
|
||||
} catch (\Throwable $err) {}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// If we just closed a VC, wait a bit for Discord to catch up
|
||||
if ($vc) {
|
||||
$discord->getLoop()->addTimer(1.5, $doJoin);
|
||||
} else {
|
||||
$doJoin();
|
||||
}
|
||||
}
|
||||
|
||||
function logToDb($message, $level = 'info') {
|
||||
// Basic safety check for DB connection
|
||||
static $db_working = true;
|
||||
if (!$db_working && $level !== 'error') return;
|
||||
|
||||
// Echo to console anyway
|
||||
echo "[" . date('Y-m-d H:i:s') . "] [$level] $message\n";
|
||||
|
||||
try {
|
||||
$db = db();
|
||||
$stmt = $db->prepare("INSERT INTO bot_logs (message, log_level) VALUES (?, ?)");
|
||||
$stmt->execute([$message, $level]);
|
||||
} catch (Exception $e) {
|
||||
echo "Log failed: " . $e->getMessage() . "\n";
|
||||
} catch (\Throwable $e) {
|
||||
$db_working = false;
|
||||
// Don't echo again to avoid loops if echo itself fails (unlikely)
|
||||
}
|
||||
}
|
||||
|
||||
@ -71,8 +190,25 @@ $discord->on('ready', function (Discord $discord) {
|
||||
// Listen for voice state updates to debug disconnecting issues
|
||||
$discord->on(Event::VOICE_STATE_UPDATE, function ($state, Discord $discord) {
|
||||
if ($state->user_id == $discord->id) {
|
||||
echo "Bot voice state updated: Channel=" . ($state->channel_id ?? 'None') . " Session=" . ($state->session_id ?? 'None') . "\n";
|
||||
logToDb("Bot voice state updated: Channel=" . ($state->channel_id ?? 'None'));
|
||||
$channelName = 'None';
|
||||
if ($state->channel_id) {
|
||||
$channel = $discord->getChannel($state->channel_id);
|
||||
$channelName = $channel ? $channel->name : $state->channel_id;
|
||||
}
|
||||
logToDb("Bot voice state updated: Channel=" . $channelName);
|
||||
|
||||
// If the bot was disconnected or moved
|
||||
if ($state->channel_id === null) {
|
||||
logToDb("Bot was disconnected from voice channel. Cleaning up...");
|
||||
global $joiningGuilds;
|
||||
unset($joiningGuilds[$state->guild_id]);
|
||||
|
||||
// Ensure VoiceClient is closed if it still exists
|
||||
$vc = $discord->getVoiceClient($state->guild_id);
|
||||
if ($vc) {
|
||||
try { $vc->close(); } catch (\Throwable $e) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -95,20 +231,36 @@ $discord->on('ready', function (Discord $discord) {
|
||||
$stmt->execute([$now . '%']);
|
||||
$alarms = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
$alarmCount = 0;
|
||||
foreach ($alarms as $alarm) {
|
||||
echo "Alarm triggered for user {$alarm['user_id']} at {$alarm['alarm_time']}\n";
|
||||
logToDb("Alarm triggered for user {$alarm['user_id']}");
|
||||
playAlarm($discord, $alarm);
|
||||
$alarmCount++;
|
||||
$discord->getLoop()->addTimer($alarmCount * 2.0, function() use ($discord, $alarm) {
|
||||
echo "Alarm triggered for user {$alarm['user_id']} at {$alarm['alarm_time']}\n";
|
||||
logToDb("Alarm triggered for user {$alarm['user_id']}");
|
||||
playAlarm($discord, $alarm);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Register Commands
|
||||
// Register Commands (Uncomment if you need to update commands)
|
||||
registerCommands($discord);
|
||||
echo "Commands registration updated.\n";
|
||||
});
|
||||
|
||||
function getOptionValue($options, $name) {
|
||||
if (!$options) return null;
|
||||
foreach ($options as $option) {
|
||||
if ($option->name === $name) {
|
||||
return $option->value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function registerCommands(Discord $discord) {
|
||||
$commands = [
|
||||
CommandBuilder::new()->setName('join')->setDescription('Join your current voice channel'),
|
||||
CommandBuilder::new()->setName('rejoin')->setDescription('Force rejoin the voice channel'),
|
||||
CommandBuilder::new()->setName('out')->setDescription('Leave the voice channel'),
|
||||
CommandBuilder::new()->setName('status')->setDescription('Check bot status'),
|
||||
CommandBuilder::new()->setName('play')->setDescription('Play music from URL')
|
||||
@ -120,6 +272,7 @@ function registerCommands(Discord $discord) {
|
||||
->addOption((new Option($discord))->setName('link')->setDescription('Audio URL for the alarm')->setType(Option::STRING)->setRequired(true)),
|
||||
CommandBuilder::new()->setName('help')->setDescription('Show help information'),
|
||||
CommandBuilder::new()->setName('ping')->setDescription('Check if bot is responsive'),
|
||||
CommandBuilder::new()->setName('where')->setDescription('Show which voice channel the bot is in'),
|
||||
];
|
||||
|
||||
foreach ($commands as $command) {
|
||||
@ -134,8 +287,21 @@ function streamAudio(VoiceClient $vc, string $url, $interaction = null) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("🎶 Loading audio info from link..."));
|
||||
}
|
||||
|
||||
$userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36";
|
||||
$safeUrl = escapeshellarg($url);
|
||||
$process = new Process("yt-dlp --no-warnings --no-check-certificates --print \"%(title)s\" --print \"%(url)s\" -f \"ba/b\" --no-playlist --js-runtimes node $safeUrl");
|
||||
|
||||
// Handle Spotify differently by searching on YouTube
|
||||
if (strpos($url, 'spotify.com') !== false) {
|
||||
logToDb("Spotify link detected, searching on YouTube...");
|
||||
if ($interaction) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("🎶 Spotify link detected, searching for audio on YouTube..."));
|
||||
}
|
||||
$cmd = "yt-dlp --no-warnings --no-check-certificates --print \"%(title)s\" --print \"%(url)s\" -f \"bestaudio[ext=m4a]/bestaudio/best\" --no-playlist --user-agent \"$userAgent\" \"ytsearch1:" . $url . "\"";
|
||||
} else {
|
||||
$cmd = "yt-dlp --no-warnings --no-check-certificates --print \"%(title)s\" --print \"%(url)s\" -f \"bestaudio[ext=m4a]/bestaudio/best\" --no-playlist --user-agent \"$userAgent\" $safeUrl";
|
||||
}
|
||||
|
||||
$process = new Process($cmd);
|
||||
|
||||
try {
|
||||
$process->start($discord->getLoop());
|
||||
@ -204,7 +370,7 @@ function streamAudio(VoiceClient $vc, string $url, $interaction = null) {
|
||||
$playAttempted = false;
|
||||
$isClosed = false;
|
||||
$retryCount = 0;
|
||||
$maxRetries = 20;
|
||||
$maxRetries = 25;
|
||||
$playFunc = function ($isFallback = false) use (&$playFunc, &$playAttempted, &$isClosed, &$retryCount, $maxRetries, $vc, $streamUrl, $title, $interaction) {
|
||||
if ($isClosed) return;
|
||||
|
||||
@ -214,7 +380,6 @@ function streamAudio(VoiceClient $vc, string $url, $interaction = null) {
|
||||
if (!$isReady) {
|
||||
if ($retryCount < $maxRetries) {
|
||||
$retryCount++;
|
||||
echo "Voice client not ready yet for $title, waiting 2s (attempt $retryCount/$maxRetries)...\n";
|
||||
$vc->discord->getLoop()->addTimer(2.0, function() use (&$playFunc) {
|
||||
$playFunc();
|
||||
});
|
||||
@ -240,7 +405,7 @@ function streamAudio(VoiceClient $vc, string $url, $interaction = null) {
|
||||
if ($retryCount < $maxRetries && (strpos($e->getMessage(), 'ready') !== false || strpos($e->getMessage(), 'connected') !== false || strpos($e->getMessage(), 'Voice Client') !== false)) {
|
||||
$retryCount++;
|
||||
$playAttempted = false;
|
||||
echo "Retrying $title (attempt $retryCount/$maxRetries) in 3 seconds due to error: " . $e->getMessage() . "\n";
|
||||
echo "Retrying $title (attempt $retryCount/$maxRetries) in 3 seconds...\n";
|
||||
$vc->discord->getLoop()->addTimer(3.0, function() use (&$playFunc) {
|
||||
$playFunc();
|
||||
});
|
||||
@ -267,24 +432,19 @@ function streamAudio(VoiceClient $vc, string $url, $interaction = null) {
|
||||
}
|
||||
});
|
||||
|
||||
$safetyTimer = $vc->discord->getLoop()->addTimer(45.0, function () use ($vc, $interaction, $title, $fallbackTimer, &$isClosed) {
|
||||
$safetyTimer = $vc->discord->getLoop()->addTimer(60.0, function () use ($vc, $interaction, $title, $fallbackTimer, &$isClosed) {
|
||||
if ($isClosed) return;
|
||||
try {
|
||||
$vc->discord->getLoop()->cancelTimer($fallbackTimer);
|
||||
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if (!$isReady) {
|
||||
echo "Timed out waiting for voice client to be ready for $title after 45s\n";
|
||||
logToDb("Voice client timeout for $title after 45s", 'warning');
|
||||
|
||||
echo "Timed out waiting for voice client to be ready for $title after 60s\n";
|
||||
if ($interaction) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("⚠️ Voice client timed out waiting to be ready. Please try using `/out` then `/join` again."));
|
||||
try { $vc->close(); } catch (\Exception $e) {}
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("⚠️ Voice client timed out. Use `/out` and try again."));
|
||||
}
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
echo "Error in safety timer: " . $e->getMessage() . "\n";
|
||||
}
|
||||
} catch (\Exception $e) {}
|
||||
});
|
||||
|
||||
$vc->once('ready', function() use ($vc, &$playFunc, $fallbackTimer, $safetyTimer, &$isClosed) {
|
||||
@ -298,21 +458,19 @@ function streamAudio(VoiceClient $vc, string $url, $interaction = null) {
|
||||
$isClosed = true;
|
||||
$vc->discord->getLoop()->cancelTimer($fallbackTimer);
|
||||
$vc->discord->getLoop()->cancelTimer($safetyTimer);
|
||||
echo "Voice client closed for $title while waiting for ready.\n";
|
||||
if ($interaction) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("⚠️ Voice connection closed before it was ready."));
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("⚠️ Voice connection closed."));
|
||||
}
|
||||
});
|
||||
|
||||
$vc->once('error', function ($e) use ($title) {
|
||||
echo "Voice client encountered error while waiting for ready for $title: " . $e->getMessage() . "\n";
|
||||
logToDb("Voice client error for $title: " . $e->getMessage(), 'error');
|
||||
});
|
||||
}
|
||||
} else {
|
||||
echo "Failed to fetch stream URL for $url. Code: $code\nError Output: $errorOutput\n";
|
||||
$errorMessage = "❌ Failed to fetch audio. Link may be invalid or blocked.";
|
||||
if (strpos($errorOutput, 'blocked') !== false || strpos($errorOutput, '403') !== false) {
|
||||
$errorMessage = "❌ This platform is blocking the bot's IP. Try a YouTube link instead.";
|
||||
}
|
||||
if ($interaction) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Failed to fetch audio. Make sure the link is valid. (Code $code)"));
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent($errorMessage));
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -322,51 +480,28 @@ function playSahur(Discord $discord, $vcId) {
|
||||
$channel = $discord->getChannel($vcId);
|
||||
if (!$channel) return;
|
||||
|
||||
$vc = $discord->getVoiceClient($channel->guild_id);
|
||||
if ($vc && (string)$vc->channel->id === (string)$channel->id) {
|
||||
echo "Sahur: Already in channel, playing directly.\n";
|
||||
safeJoin($discord, $channel, null, function($vc) {
|
||||
$db = db();
|
||||
$source = $db->query("SELECT setting_value FROM bot_settings WHERE setting_key = 'sahur_source'")->fetchColumn() ?: 'sahur.mp3';
|
||||
|
||||
if (filter_var($source, FILTER_VALIDATE_URL)) {
|
||||
streamAudio($vc, $source);
|
||||
} else if (file_exists($source)) {
|
||||
$vc->playFile($source);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if ($vc) {
|
||||
try { $vc->close(); } catch (\Throwable $e) {}
|
||||
}
|
||||
|
||||
$delay = $vc ? 3.0 : 0;
|
||||
$discord->getLoop()->addTimer($delay, function() use ($discord, $channel) {
|
||||
if ($discord->getVoiceClient($channel->guild_id)) return;
|
||||
$discord->joinVoiceChannel($channel, false, false)->then(function (VoiceClient $vc) {
|
||||
$db = db();
|
||||
$source = $db->query("SELECT setting_value FROM bot_settings WHERE setting_key = 'sahur_source'")->fetchColumn() ?: 'sahur.mp3';
|
||||
|
||||
$playAction = function() use ($vc, $source) {
|
||||
if (filter_var($source, FILTER_VALIDATE_URL)) {
|
||||
streamAudio($vc, $source);
|
||||
} else if (file_exists($source)) {
|
||||
$vc->playFile($source);
|
||||
}
|
||||
};
|
||||
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if ($isReady) {
|
||||
$playAction();
|
||||
} else {
|
||||
$vc->once('ready', $playAction);
|
||||
$discord = $vc->discord;
|
||||
$discord->getLoop()->addTimer(10.0, function() use ($vc, $playAction) {
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if (!$isReady) $playAction();
|
||||
});
|
||||
$playAction = function() use ($vc, $source) {
|
||||
if (filter_var($source, FILTER_VALIDATE_URL)) {
|
||||
streamAudio($vc, $source);
|
||||
} else if (file_exists($source)) {
|
||||
$vc->playFile($source);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if ($isReady) {
|
||||
$playAction();
|
||||
} else {
|
||||
$vc->once('ready', $playAction);
|
||||
$vc->discord->getLoop()->addTimer(10.0, function() use ($vc, $playAction) {
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if (!$isReady) $playAction();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -374,308 +509,231 @@ function playAlarm(Discord $discord, $alarm) {
|
||||
$channel = $discord->getChannel($alarm['channel_id']);
|
||||
if (!$channel) return;
|
||||
|
||||
$vc = $discord->getVoiceClient($channel->guild_id);
|
||||
if ($vc && (string)$vc->channel->id === (string)$channel->id) {
|
||||
echo "Alarm: Already in channel, playing directly.\n";
|
||||
streamAudio($vc, $alarm['audio_url']);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($vc) {
|
||||
try { $vc->close(); } catch (\Throwable $e) {}
|
||||
}
|
||||
|
||||
$delay = $vc ? 3.0 : 0;
|
||||
$discord->getLoop()->addTimer($delay, function() use ($discord, $channel, $alarm) {
|
||||
if ($discord->getVoiceClient($channel->guild_id)) {
|
||||
$vc = $discord->getVoiceClient($channel->guild_id);
|
||||
if ((string)$vc->channel->id === (string)$channel->id) streamAudio($vc, $alarm['audio_url']);
|
||||
return;
|
||||
}
|
||||
$discord->joinVoiceChannel($channel, false, false)->then(function (VoiceClient $vc) use ($alarm) {
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if ($isReady) {
|
||||
safeJoin($discord, $channel, null, function($vc) use ($alarm) {
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if ($isReady) {
|
||||
streamAudio($vc, $alarm['audio_url']);
|
||||
} else {
|
||||
$vc->once('ready', function() use ($vc, $alarm) {
|
||||
streamAudio($vc, $alarm['audio_url']);
|
||||
} else {
|
||||
$vc->once('ready', function() use ($vc, $alarm) {
|
||||
streamAudio($vc, $alarm['audio_url']);
|
||||
});
|
||||
$discord = $vc->discord;
|
||||
$discord->getLoop()->addTimer(10.0, function() use ($vc, $alarm) {
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if (!$isReady) streamAudio($vc, $alarm['audio_url']);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
$vc->discord->getLoop()->addTimer(10.0, function() use ($vc, $alarm) {
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if (!$isReady) streamAudio($vc, $alarm['audio_url']);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$discord->on(Event::INTERACTION_CREATE, function (Interaction $interaction, Discord $discord) use (&$voiceClient) {
|
||||
$discord->on(Event::INTERACTION_CREATE, function (Interaction $interaction, Discord $discord) use ($ffmpegPath) {
|
||||
if ($interaction->type !== 2) return;
|
||||
|
||||
// 1. Acknowledge IMMEDIATELY to win the 3-second race with Discord
|
||||
$interaction->acknowledge();
|
||||
|
||||
$command = $interaction->data->name;
|
||||
logToDb("Received interaction: $command from " . $interaction->member->user->username);
|
||||
logToDb("Received interaction: $command from " . ($interaction->member->user->username ?? "Unknown"));
|
||||
|
||||
switch ($command) {
|
||||
case 'ping':
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Pong! 🏓"));
|
||||
break;
|
||||
try {
|
||||
switch ($command) {
|
||||
case 'ping':
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("Pong! 🏓"));
|
||||
break;
|
||||
|
||||
case 'help':
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent(
|
||||
"**AsepSahur Bot Commands:**\n" .
|
||||
"`/join` - Join your voice channel\n" .
|
||||
"`/play [url]` - Play music from URL\n" .
|
||||
"`/stop` - Stop current playback\n" .
|
||||
"`/settime [HH:MM]` - Set your alarm time\n" .
|
||||
"`/setalarm [url]` - Set your alarm audio\n" .
|
||||
"`/status` - Check bot status\n" .
|
||||
"`/ping` - Test bot responsiveness\n" .
|
||||
"`/out` - Make bot leave voice channel"
|
||||
));
|
||||
break;
|
||||
case 'help':
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent(
|
||||
"**AsepSahur Bot Commands:**\n" .
|
||||
"`/join` - Join your voice channel\n" .
|
||||
"`/play [url]` - Play music from URL\n" .
|
||||
"`/stop` - Stop current playback\n" .
|
||||
"`/settime [HH:MM]` - Set your alarm time\n" .
|
||||
"`/setalarm [url]` - Set your alarm audio\n" .
|
||||
"`/status` - Check bot status\n" .
|
||||
"`/ping` - Test bot responsiveness\n" .
|
||||
"`/out` - Make bot leave voice channel\n" .
|
||||
"`/reset` - Hard reset voice state"
|
||||
));
|
||||
break;
|
||||
|
||||
case 'status':
|
||||
$vc = $discord->getVoiceClient($interaction->guild_id);
|
||||
$isReady = $vc ? (method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false)) : false;
|
||||
$status = "Bot is online. " . ($vc ? "Connected to " . $vc->channel->name . ($isReady ? " (Ready)" : " (Connecting...)") : "Not in voice channel.");
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent($status));
|
||||
break;
|
||||
|
||||
case 'join':
|
||||
$userChannel = $interaction->member->getVoiceChannel();
|
||||
if (!$userChannel) {
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("You must be in a voice channel!"));
|
||||
return;
|
||||
}
|
||||
$interaction->acknowledge();
|
||||
|
||||
try {
|
||||
$vc = $discord->getVoiceClient($interaction->guild_id);
|
||||
$isReady = $vc ? (method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false)) : false;
|
||||
|
||||
if ($vc && $isReady && (string)$vc->channel->id === (string)$userChannel->id) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("Already in " . $vc->channel->name));
|
||||
return;
|
||||
}
|
||||
|
||||
global $joiningGuilds;
|
||||
if (isset($joiningGuilds[$interaction->guild_id])) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ A join request is already in progress. Please wait."));
|
||||
return;
|
||||
}
|
||||
$joiningGuilds[$interaction->guild_id] = true;
|
||||
|
||||
$hadVc = $vc !== null;
|
||||
if ($vc) {
|
||||
echo "Closing existing VC for guild " . $interaction->guild_id . " before joining new channel.\n";
|
||||
try {
|
||||
$vc->close();
|
||||
} catch (\Throwable $e) {}
|
||||
}
|
||||
|
||||
$delay = $hadVc ? 7.0 : 0;
|
||||
echo "Joining channel: " . $userChannel->name . " (Join command, delay: $delay)\n";
|
||||
$discord->getLoop()->addTimer($delay, function() use ($discord, $userChannel, $interaction, &$joiningGuilds) {
|
||||
$vc = $discord->getVoiceClient($interaction->guild_id);
|
||||
if ($vc && (string)$vc->channel->id === (string)$userChannel->id) {
|
||||
unset($joiningGuilds[$interaction->guild_id]);
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("Joined " . $vc->channel->name));
|
||||
return;
|
||||
}
|
||||
|
||||
$responded = false;
|
||||
$joinTimeout = $discord->getLoop()->addTimer(25.0, function() use ($interaction, $discord, &$responded, &$joiningGuilds) {
|
||||
unset($joiningGuilds[$interaction->guild_id]);
|
||||
if (!$responded) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Joining voice channel timed out (25s)."));
|
||||
$responded = true;
|
||||
}
|
||||
});
|
||||
|
||||
$discord->joinVoiceChannel($userChannel, false, false)->then(function (VoiceClient $vc) use ($interaction, $discord, $joinTimeout, &$responded, &$joiningGuilds, $userChannel) {
|
||||
unset($joiningGuilds[$interaction->guild_id]);
|
||||
if ($responded) return;
|
||||
$discord->getLoop()->cancelTimer($joinTimeout);
|
||||
$responded = true;
|
||||
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("Joined " . $vc->channel->name));
|
||||
$vc->on('close', function() use ($userChannel) {
|
||||
echo "Voice client closed for channel " . $userChannel->name . "\n";
|
||||
});
|
||||
}, function ($e) use ($interaction, $discord, $joinTimeout, &$responded, &$joiningGuilds) {
|
||||
unset($joiningGuilds[$interaction->guild_id]);
|
||||
if ($responded) return;
|
||||
$discord->getLoop()->cancelTimer($joinTimeout);
|
||||
$responded = true;
|
||||
echo "Error joining VC: " . $e->getMessage() . "\n";
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Error joining voice channel: " . $e->getMessage()));
|
||||
});
|
||||
});
|
||||
} catch (\Throwable $e) {
|
||||
global $joiningGuilds;
|
||||
unset($joiningGuilds[$interaction->guild_id]);
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Error: " . $e->getMessage()));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'play':
|
||||
$url = $interaction->data->options['url']->value;
|
||||
$userChannel = $interaction->member->getVoiceChannel();
|
||||
if (!$userChannel) {
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Join a VC first!"));
|
||||
return;
|
||||
}
|
||||
|
||||
$interaction->acknowledge();
|
||||
|
||||
try {
|
||||
case 'status':
|
||||
$vc = $discord->getVoiceClient($interaction->guild_id);
|
||||
$isReady = $vc ? (method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false)) : false;
|
||||
|
||||
if ($vc && $isReady && (string)$vc->channel->id === (string)$userChannel->id) {
|
||||
echo "Already in correct channel and ready. Streaming...\n";
|
||||
streamAudio($vc, $url, $interaction);
|
||||
$db = db();
|
||||
$sahurTime = $db->query("SELECT setting_value FROM bot_settings WHERE setting_key = 'sahur_time'")->fetchColumn() ?: '03:00';
|
||||
|
||||
$status = "🤖 **Bot Status:** Online\n";
|
||||
$status .= "🔊 **Voice:** " . ($vc ? "Connected to **" . $vc->channel->name . "**" . ($isReady ? " ✅" : " ⏳") : "Disconnected ❌") . "\n";
|
||||
$status .= "⏰ **Sahur Time:** " . $sahurTime . "\n";
|
||||
$status .= "🛠 **FFmpeg:** " . ($ffmpegPath ? "✅" : "❌") . "\n";
|
||||
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent($status));
|
||||
break;
|
||||
|
||||
case 'where':
|
||||
$guild = $discord->guilds->get('id', $interaction->guild_id);
|
||||
$voiceState = $guild ? $guild->voice_states->get('user_id', $discord->id) : null;
|
||||
$vc = $discord->getVoiceClient($interaction->guild_id);
|
||||
|
||||
$msg = "";
|
||||
if ($voiceState && $voiceState->channel_id) {
|
||||
$channel = $discord->getChannel($voiceState->channel_id);
|
||||
$msg .= "📍 **Discord thinks I am in:** " . ($channel ? $channel->name : $voiceState->channel_id) . "\n";
|
||||
} else {
|
||||
global $joiningGuilds;
|
||||
if (isset($joiningGuilds[$interaction->guild_id])) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ A join request is already in progress. Please wait."));
|
||||
return;
|
||||
}
|
||||
$joiningGuilds[$interaction->guild_id] = true;
|
||||
|
||||
$hadVc = $vc !== null;
|
||||
if ($vc) {
|
||||
echo "Voice client in bad state (ready=" . ($isReady ? 'yes' : 'no') . ") or wrong channel, closing and rejoining...\n";
|
||||
try {
|
||||
$vc->close();
|
||||
} catch (\Throwable $e) {
|
||||
echo "Error closing VC: " . $e->getMessage() . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
$delay = $hadVc ? 7.0 : 0; // Increased delay to 7s for cleaner state
|
||||
echo "Joining channel: " . $userChannel->name . " (Play command, delay: $delay)\n";
|
||||
$discord->getLoop()->addTimer($delay, function() use ($discord, $userChannel, $interaction, $url, &$joiningGuilds) {
|
||||
// Double check if we already joined via another command during the delay
|
||||
$vc = $discord->getVoiceClient($interaction->guild_id);
|
||||
if ($vc && (string)$vc->channel->id === (string)$userChannel->id) {
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
if ($isReady) {
|
||||
unset($joiningGuilds[$interaction->guild_id]);
|
||||
echo "Already in channel after delay and ready, streaming...\n";
|
||||
streamAudio($vc, $url, $interaction);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// If we have a stale VC that didn't close, try one last time
|
||||
if ($vc && (string)$vc->channel->id !== (string)$userChannel->id) {
|
||||
try { $vc->close(); } catch (\Throwable $e) {}
|
||||
}
|
||||
|
||||
$responded = false;
|
||||
$joinTimeout = $discord->getLoop()->addTimer(25.0, function() use ($interaction, $discord, &$responded, &$joiningGuilds) {
|
||||
unset($joiningGuilds[$interaction->guild_id]);
|
||||
if (!$responded) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Joining voice channel timed out (25s). Try again."));
|
||||
$responded = true;
|
||||
}
|
||||
});
|
||||
|
||||
$discord->joinVoiceChannel($userChannel, false, false)->then(function (VoiceClient $vc) use ($interaction, $discord, $url, $joinTimeout, &$responded, &$joiningGuilds) {
|
||||
unset($joiningGuilds[$interaction->guild_id]);
|
||||
if ($responded) return;
|
||||
$discord->getLoop()->cancelTimer($joinTimeout);
|
||||
$responded = true;
|
||||
|
||||
echo "Joined voice channel, waiting 2s for state to settle...\n";
|
||||
$discord->getLoop()->addTimer(2.0, function() use ($vc, $url, $interaction) {
|
||||
streamAudio($vc, $url, $interaction);
|
||||
});
|
||||
}, function ($e) use ($interaction, $discord, $joinTimeout, &$responded, &$joiningGuilds) {
|
||||
unset($joiningGuilds[$interaction->guild_id]);
|
||||
if ($responded) return;
|
||||
$discord->getLoop()->cancelTimer($joinTimeout);
|
||||
$responded = true;
|
||||
echo "Error joining VC: " . $e->getMessage() . "\n";
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Error joining voice channel: " . $e->getMessage()));
|
||||
});
|
||||
});
|
||||
$msg .= "📍 **Discord thinks I am:** Not in a channel\n";
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
|
||||
if ($vc) {
|
||||
$isReady = method_exists($vc, 'isReady') ? $vc->isReady() : ($vc->ready ?? false);
|
||||
$msg .= "🔊 **VoiceClient state:** Connected to **" . $vc->channel->name . "** (" . ($isReady ? "Ready ✅" : "Connecting ⏳") . ")";
|
||||
} else {
|
||||
$msg .= "🔊 **VoiceClient state:** No active connection ❌";
|
||||
}
|
||||
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent($msg));
|
||||
break;
|
||||
|
||||
case 'reset':
|
||||
global $joiningGuilds;
|
||||
$joiningGuilds = [];
|
||||
$vc = $discord->getVoiceClient($interaction->guild_id);
|
||||
if ($vc) {
|
||||
try { $vc->close(); } catch (\Throwable $e) {}
|
||||
}
|
||||
$discord->getLoop()->addTimer(0.5, function() use ($discord, $interaction) {
|
||||
$discord->selectVoiceChannel(null);
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("🔄 **Hard Reset complete.** Voice states cleared. Try `/join` again."));
|
||||
});
|
||||
break;
|
||||
|
||||
case 'rejoin':
|
||||
case 'join':
|
||||
$userChannel = $interaction->member->getVoiceChannel();
|
||||
if (!$userChannel) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ You must be in a voice channel!"));
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear state for this guild if it's a rejoin
|
||||
if ($command === 'rejoin') {
|
||||
global $joiningGuilds;
|
||||
unset($joiningGuilds[$interaction->guild_id]);
|
||||
}
|
||||
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("⏳ Joining " . $userChannel->name . "..."));
|
||||
|
||||
safeJoin($discord, $userChannel, $interaction, function($vc) use ($interaction) {
|
||||
try {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("✅ Joined " . $vc->channel->name));
|
||||
} catch (\Throwable $e) {}
|
||||
});
|
||||
break;
|
||||
|
||||
case 'play':
|
||||
$opts = $interaction->data->options;
|
||||
$url = getOptionValue($opts, 'url');
|
||||
if (!$url) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ URL is missing!"));
|
||||
return;
|
||||
}
|
||||
$userChannel = $interaction->member->getVoiceChannel();
|
||||
if (!$userChannel) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Join a VC first!"));
|
||||
return;
|
||||
}
|
||||
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("⏳ Joining and preparing audio..."));
|
||||
|
||||
safeJoin($discord, $userChannel, $interaction, function($vc) use ($url, $interaction) {
|
||||
$vc->discord->getLoop()->addTimer(1.0, function() use ($vc, $url, $interaction) {
|
||||
streamAudio($vc, $url, $interaction);
|
||||
});
|
||||
});
|
||||
break;
|
||||
|
||||
case 'stop':
|
||||
$vc = $discord->getVoiceClient($interaction->guild_id);
|
||||
if ($vc) {
|
||||
$vc->stop();
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("Stopped playback."));
|
||||
} else {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("Nothing is playing."));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'out':
|
||||
global $joiningGuilds;
|
||||
unset($joiningGuilds[$interaction->guild_id]);
|
||||
echo "Fatal error in play command: " . $e->getMessage() . "\n";
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Fatal error: " . $e->getMessage()));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'stop':
|
||||
$vc = $discord->getVoiceClient($interaction->guild_id);
|
||||
if ($vc) {
|
||||
$vc->stop();
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Stopped playback."));
|
||||
} else {
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Nothing is playing."));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'out':
|
||||
$vc = $discord->getVoiceClient($interaction->guild_id);
|
||||
if ($vc) {
|
||||
try {
|
||||
$vc->close();
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Left voice channel and cleaned up connection."));
|
||||
} catch (\Throwable $e) {
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Left voice channel."));
|
||||
|
||||
$vc = $discord->getVoiceClient($interaction->guild_id);
|
||||
if ($vc) {
|
||||
try {
|
||||
$vc->close();
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("✅ Left voice channel."));
|
||||
} catch (\Throwable $e) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("✅ Left with error: " . $e->getMessage()));
|
||||
}
|
||||
} else {
|
||||
$discord->selectVoiceChannel(null);
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("💨 Requested to leave voice channel."));
|
||||
}
|
||||
} else {
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("I'm not in a voice channel."));
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'settime':
|
||||
$time = $interaction->data->options['time']->value;
|
||||
if (!preg_match('/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/', $time)) {
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Invalid format. Use HH:MM (e.g. 03:00)"));
|
||||
return;
|
||||
}
|
||||
$userId = (string)$interaction->member->id;
|
||||
$guildId = (string)$interaction->guild_id;
|
||||
$channelId = (string)($interaction->member->getVoiceChannel()->id ?? '');
|
||||
|
||||
if (empty($channelId)) {
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Please join a voice channel first so I know where to wake you up!"));
|
||||
return;
|
||||
}
|
||||
case 'settime':
|
||||
$opts = $interaction->data->options;
|
||||
$time = getOptionValue($opts, 'time');
|
||||
if (!$time || !preg_match('/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/', $time)) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Invalid format. Use HH:MM (e.g. 03:00)"));
|
||||
return;
|
||||
}
|
||||
$userId = (string)$interaction->member->id;
|
||||
$guildId = (string)$interaction->guild_id;
|
||||
$channel = $interaction->member->getVoiceChannel();
|
||||
$channelId = (string)($channel->id ?? '');
|
||||
|
||||
if (empty($channelId)) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Join a voice channel first!"));
|
||||
return;
|
||||
}
|
||||
|
||||
$db = db();
|
||||
$stmt = $db->prepare("INSERT INTO bot_alarms (user_id, guild_id, channel_id, alarm_time, audio_url)
|
||||
VALUES (?, ?, ?, ?, 'sahur.mp3')
|
||||
ON DUPLICATE KEY UPDATE alarm_time = ?, guild_id = ?, channel_id = ?");
|
||||
$stmt->execute([$userId, $guildId, $channelId, $time, $time, $guildId, $channelId]);
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Alarm time set to $time. I will join " . $interaction->member->getVoiceChannel()->name . " at that time."));
|
||||
break;
|
||||
$db = db();
|
||||
$stmt = $db->prepare("INSERT INTO bot_alarms (user_id, guild_id, channel_id, alarm_time, audio_url)
|
||||
VALUES (?, ?, ?, ?, 'sahur.mp3')
|
||||
ON DUPLICATE KEY UPDATE alarm_time = ?, guild_id = ?, channel_id = ?");
|
||||
$stmt->execute([$userId, $guildId, $channelId, $time, $time, $guildId, $channelId]);
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("✅ Alarm set to $time in " . $channel->name));
|
||||
break;
|
||||
|
||||
case 'setalarm':
|
||||
$link = $interaction->data->options['link']->value;
|
||||
$userId = (string)$interaction->member->id;
|
||||
$guildId = (string)$interaction->guild_id;
|
||||
$channelId = (string)($interaction->member->getVoiceChannel()->id ?? '');
|
||||
case 'setalarm':
|
||||
$opts = $interaction->data->options;
|
||||
$link = getOptionValue($opts, 'link');
|
||||
if (!$link) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Link is missing!"));
|
||||
return;
|
||||
}
|
||||
$userId = (string)$interaction->member->id;
|
||||
$guildId = (string)$interaction->guild_id;
|
||||
$channel = $interaction->member->getVoiceChannel();
|
||||
$channelId = (string)($channel->id ?? '');
|
||||
|
||||
if (empty($channelId)) {
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Please join a voice channel first!"));
|
||||
return;
|
||||
}
|
||||
if (empty($channelId)) {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ Join a voice channel first!"));
|
||||
return;
|
||||
}
|
||||
|
||||
$db = db();
|
||||
$stmt = $db->prepare("INSERT INTO bot_alarms (user_id, guild_id, channel_id, alarm_time, audio_url)
|
||||
VALUES (?, ?, ?, '03:00', ?)
|
||||
ON DUPLICATE KEY UPDATE audio_url = ?, guild_id = ?, channel_id = ?");
|
||||
$stmt->execute([$userId, $guildId, $channelId, $link, $link, $guildId, $channelId]);
|
||||
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Alarm audio set."));
|
||||
break;
|
||||
$db = db();
|
||||
$stmt = $db->prepare("INSERT INTO bot_alarms (user_id, guild_id, channel_id, alarm_time, audio_url)
|
||||
VALUES (?, ?, ?, '03:00', ?)
|
||||
ON DUPLICATE KEY UPDATE audio_url = ?, guild_id = ?, channel_id = ?");
|
||||
$stmt->execute([$userId, $guildId, $channelId, $link, $link, $guildId, $channelId]);
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("✅ Alarm audio updated."));
|
||||
break;
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
logToDb("Command Error ($command): " . $e->getMessage(), 'error');
|
||||
try {
|
||||
$interaction->updateOriginalResponse(MessageBuilder::new()->setContent("❌ An unexpected error occurred: " . $e->getMessage()));
|
||||
} catch (\Throwable $e2) {}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
502
bot_output.log
502
bot_output.log
@ -1,231 +1,273 @@
|
||||
[2026-02-15T00:26:25.026728+00:00] DiscordPHP.DEBUG: Initializing DiscordPHP v10.46.0 (DiscordPHP-Http: v10.8.0 & Gateway: v10) on PHP 8.2.29
|
||||
[2026-02-15T00:26:25.536811+00:00] DiscordPHP.DEBUG: BUCKET getapplications/@me queued REQ GET applications/@me
|
||||
[2026-02-15T00:26:25.536989+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:25.776384+00:00] DiscordPHP.DEBUG: BUCKET getgateway/bot queued REQ GET gateway/bot
|
||||
[2026-02-15T00:26:25.776521+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":1,"empty":true}
|
||||
[2026-02-15T00:26:28.509411+00:00] DiscordPHP.DEBUG: REQ GET applications/@me successful
|
||||
[2026-02-15T00:26:28.509536+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":1,"empty":true}
|
||||
[2026-02-15T00:26:28.753689+00:00] DiscordPHP.DEBUG: REQ GET gateway/bot successful
|
||||
[2026-02-15T00:26:28.753849+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:28.756324+00:00] DiscordPHP.INFO: gateway retrieved and set {"gateway":"wss://gateway.discord.gg/?v=10&encoding=json&compress=zlib-stream","session":{"total":1000,"remaining":951,"reset_after":61318182,"max_concurrency":1}}
|
||||
[2026-02-15T00:26:28.756439+00:00] DiscordPHP.DEBUG: session data received {"session":{"total":1000,"remaining":951,"reset_after":61318182,"max_concurrency":1}}
|
||||
[2026-02-15T00:26:28.756728+00:00] DiscordPHP.INFO: starting connection to websocket {"gateway":"wss://gateway.discord.gg/?v=10&encoding=json&compress=zlib-stream"}
|
||||
[2026-02-15T00:26:31.264852+00:00] DiscordPHP.INFO: websocket connection has been created
|
||||
[2026-02-15T00:26:31.273514+00:00] DiscordPHP.INFO: received hello
|
||||
[2026-02-15T00:26:31.273642+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":null}
|
||||
[2026-02-15T00:26:31.273795+00:00] DiscordPHP.INFO: heartbeat timer initialized {"interval":41250.0}
|
||||
[2026-02-15T00:26:31.273881+00:00] DiscordPHP.INFO: identifying {"payload":{"op":2,"d":{"token":"*****","properties":{"os":"Linux","browser":"DiscordBot (https://github.com/discord-php/DiscordPHP-HTTP, v10.8.0)","device":"DiscordBot (https://github.com/discord-php/DiscordPHP-HTTP, v10.8.0)","referrer":"https://github.com/discord-php/DiscordPHP","referring_domain":"https://github.com/discord-php/DiscordPHP"},"compress":true,"intents":53608189}}}
|
||||
[2026-02-15T00:26:31.504029+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":230.22198677062988}
|
||||
[2026-02-15T00:26:31.504342+00:00] DiscordPHP.DEBUG: ready packet received
|
||||
[2026-02-15T00:26:31.504392+00:00] DiscordPHP.DEBUG: resume_gateway_url received {"url":"wss://gateway-us-east1-d.discord.gg"}
|
||||
[2026-02-15T00:26:31.504426+00:00] DiscordPHP.DEBUG: discord trace received {"trace":["[\"gateway-prd-arm-us-east1-d-nskz\",{\"micros\":125634,\"calls\":[\"id_created\",{\"micros\":651,\"calls\":[]},\"session_lookup_time\",{\"micros\":240,\"calls\":[]},\"session_lookup_finished\",{\"micros\":11,\"calls\":[]},\"discord-sessions-prd-2-6\",{\"micros\":124460,\"calls\":[\"start_session\",{\"micros\":108591,\"calls\":[\"discord-api-rpc-66c79f4bd4-lwjf2\",{\"micros\":46696,\"calls\":[\"get_user\",{\"micros\":6587},\"get_guilds\",{\"micros\":5897},\"send_scheduled_deletion_message\",{\"micros\":13},\"guild_join_requests\",{\"micros\":2},\"authorized_ip_coro\",{\"micros\":8},\"pending_payments\",{\"micros\":1196},\"apex_experiments\",{\"micros\":50683},\"sessions_experiments\",{\"micros\":5},\"user_activities\",{\"micros\":3},\"played_application_ids\",{\"micros\":2},\"linked_users\",{\"micros\":2},\"ad_personalization_toggles_disabled\",{\"micros\":2},\"regional_feature_config\",{\"micros\":2}]}]},\"starting_guild_connect\",{\"micros\":33,\"calls\":[]},\"presence_started\",{\"micros\":5346,\"calls\":[]},\"guilds_started\",{\"micros\":69,\"calls\":[]},\"lobbies_started\",{\"micros\":2,\"calls\":[]},\"guilds_connect\",{\"micros\":1,\"calls\":[]},\"presence_connect\",{\"micros\":10391,\"calls\":[]},\"connect_finished\",{\"micros\":10404,\"calls\":[]},\"build_ready\",{\"micros\":13,\"calls\":[]},\"clean_ready\",{\"micros\":0,\"calls\":[]},\"optimize_ready\",{\"micros\":1,\"calls\":[]},\"split_ready\",{\"micros\":0,\"calls\":[]}]}]}]"]}
|
||||
[2026-02-15T00:26:31.507222+00:00] DiscordPHP.DEBUG: client created and session id stored {"session_id":"b7d96fb916cfae600b6d76157941da16","user":{"id":"1471909193886859294","username":"AsepSahur","discriminator":"6954","global_name":null,"avatar":"https://cdn.discordapp.com/avatars/1471909193886859294/8a88b0710fa41f7eef469c3dedc30e27.webp?size=1024","bot":true,"system":null,"mfa_enabled":false,"banner":null,"accent_color":null,"locale":null,"verified":true,"email":null,"flags":0,"premium_type":null,"public_flags":null,"avatar_decoration_data":null,"collectibles":null,"primary_guild":null}}
|
||||
[2026-02-15T00:26:31.511969+00:00] DiscordPHP.INFO: stored guilds {"count":0,"unavailable":1}
|
||||
[2026-02-15T00:26:31.752666+00:00] DiscordPHP.DEBUG: guild available {"guild":"1428530728706117632","unavailable":1}
|
||||
[2026-02-15T00:26:31.752807+00:00] DiscordPHP.INFO: all guilds are now available {"count":1}
|
||||
[2026-02-15T00:26:31.752862+00:00] DiscordPHP.INFO: loadAllMembers option is disabled, not setting chunking up
|
||||
[2026-02-15T00:26:31.754394+00:00] DiscordPHP.INFO: voice class initialized
|
||||
[2026-02-15T00:26:31.754483+00:00] DiscordPHP.INFO: client is ready
|
||||
[2026-02-15T00:26:31.754521+00:00] DiscordPHP.INFO: The 'ready' event is deprecated and will be removed in a future version of DiscordPHP. Please use 'init' instead.
|
||||
[2026-02-15T01:21:24.179066+00:00] DiscordPHP.DEBUG: Initializing DiscordPHP v10.46.0 (DiscordPHP-Http: v10.8.0 & Gateway: v10) on PHP 8.2.29
|
||||
[2026-02-15T01:21:24.416639+00:00] DiscordPHP.DEBUG: BUCKET getapplications/@me queued REQ GET applications/@me
|
||||
[2026-02-15T01:21:24.416803+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:24.421972+00:00] DiscordPHP.DEBUG: BUCKET getgateway/bot queued REQ GET gateway/bot
|
||||
[2026-02-15T01:21:24.422081+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":1,"empty":true}
|
||||
[2026-02-15T01:21:25.545013+00:00] DiscordPHP.DEBUG: REQ GET gateway/bot successful
|
||||
[2026-02-15T01:21:25.545142+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":1,"empty":true}
|
||||
[2026-02-15T01:21:25.545833+00:00] DiscordPHP.INFO: gateway retrieved and set {"gateway":"wss://gateway.discord.gg/?v=10&encoding=json&compress=zlib-stream","session":{"total":1000,"remaining":943,"reset_after":58021228,"max_concurrency":1}}
|
||||
[2026-02-15T01:21:25.545933+00:00] DiscordPHP.DEBUG: session data received {"session":{"total":1000,"remaining":943,"reset_after":58021228,"max_concurrency":1}}
|
||||
[2026-02-15T01:21:25.546025+00:00] DiscordPHP.INFO: starting connection to websocket {"gateway":"wss://gateway.discord.gg/?v=10&encoding=json&compress=zlib-stream"}
|
||||
[2026-02-15T01:21:25.914364+00:00] DiscordPHP.DEBUG: REQ GET applications/@me successful
|
||||
[2026-02-15T01:21:25.914501+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:26.155535+00:00] DiscordPHP.INFO: websocket connection has been created
|
||||
[2026-02-15T01:21:26.156718+00:00] DiscordPHP.INFO: received hello
|
||||
[2026-02-15T01:21:26.156820+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":null}
|
||||
[2026-02-15T01:21:26.156975+00:00] DiscordPHP.INFO: heartbeat timer initialized {"interval":41250.0}
|
||||
[2026-02-15T01:21:26.157049+00:00] DiscordPHP.INFO: identifying {"payload":{"op":2,"d":{"token":"*****","properties":{"os":"Linux","browser":"DiscordBot (https://github.com/discord-php/DiscordPHP-HTTP, v10.8.0)","device":"DiscordBot (https://github.com/discord-php/DiscordPHP-HTTP, v10.8.0)","referrer":"https://github.com/discord-php/DiscordPHP","referring_domain":"https://github.com/discord-php/DiscordPHP"},"compress":true,"intents":53608189}}}
|
||||
[2026-02-15T01:21:26.196047+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":39.06393051147461}
|
||||
[2026-02-15T01:21:26.401984+00:00] DiscordPHP.DEBUG: ready packet received
|
||||
[2026-02-15T01:21:26.402133+00:00] DiscordPHP.DEBUG: resume_gateway_url received {"url":"wss://gateway-us-east1-d.discord.gg"}
|
||||
[2026-02-15T01:21:26.402180+00:00] DiscordPHP.DEBUG: discord trace received {"trace":["[\"gateway-prd-arm-us-east1-d-wz3x\",{\"micros\":179694,\"calls\":[\"id_created\",{\"micros\":575,\"calls\":[]},\"session_lookup_time\",{\"micros\":2741,\"calls\":[]},\"session_lookup_finished\",{\"micros\":13,\"calls\":[]},\"discord-sessions-prd-2-39\",{\"micros\":176050,\"calls\":[\"start_session\",{\"micros\":138073,\"calls\":[\"discord-api-rpc-66c79f4bd4-84d54\",{\"micros\":41070,\"calls\":[\"get_user\",{\"micros\":19595},\"get_guilds\",{\"micros\":6268},\"send_scheduled_deletion_message\",{\"micros\":13},\"guild_join_requests\",{\"micros\":3},\"authorized_ip_coro\",{\"micros\":9},\"pending_payments\",{\"micros\":1330},\"apex_experiments\",{\"micros\":60186},\"sessions_experiments\",{\"micros\":4},\"user_activities\",{\"micros\":2},\"played_application_ids\",{\"micros\":2},\"linked_users\",{\"micros\":2},\"ad_personalization_toggles_disabled\",{\"micros\":2},\"regional_feature_config\",{\"micros\":1}]}]},\"starting_guild_connect\",{\"micros\":78,\"calls\":[]},\"presence_started\",{\"micros\":14072,\"calls\":[]},\"guilds_started\",{\"micros\":50,\"calls\":[]},\"lobbies_started\",{\"micros\":1,\"calls\":[]},\"guilds_connect\",{\"micros\":1,\"calls\":[]},\"presence_connect\",{\"micros\":23740,\"calls\":[]},\"connect_finished\",{\"micros\":23760,\"calls\":[]},\"build_ready\",{\"micros\":13,\"calls\":[]},\"clean_ready\",{\"micros\":0,\"calls\":[]},\"optimize_ready\",{\"micros\":1,\"calls\":[]},\"split_ready\",{\"micros\":0,\"calls\":[]}]}]}]"]}
|
||||
[2026-02-15T01:21:26.405825+00:00] DiscordPHP.DEBUG: client created and session id stored {"session_id":"fa9d1c394b938f0f95a8233d9e6e27db","user":{"id":"1471909193886859294","username":"AsepSahur","discriminator":"6954","global_name":null,"avatar":"https://cdn.discordapp.com/avatars/1471909193886859294/8a88b0710fa41f7eef469c3dedc30e27.webp?size=1024","bot":true,"system":null,"mfa_enabled":false,"banner":null,"accent_color":null,"locale":null,"verified":true,"email":null,"flags":0,"premium_type":null,"public_flags":null,"avatar_decoration_data":null,"collectibles":null,"primary_guild":null}}
|
||||
[2026-02-15T01:21:26.411487+00:00] DiscordPHP.INFO: stored guilds {"count":0,"unavailable":1}
|
||||
[2026-02-15T01:21:26.657465+00:00] DiscordPHP.DEBUG: guild available {"guild":"1428530728706117632","unavailable":1}
|
||||
[2026-02-15T01:21:26.657649+00:00] DiscordPHP.INFO: all guilds are now available {"count":1}
|
||||
[2026-02-15T01:21:26.657701+00:00] DiscordPHP.INFO: loadAllMembers option is disabled, not setting chunking up
|
||||
[2026-02-15T01:21:26.659699+00:00] DiscordPHP.INFO: voice class initialized
|
||||
[2026-02-15T01:21:26.659852+00:00] DiscordPHP.INFO: client is ready
|
||||
[2026-02-15T01:21:26.659942+00:00] DiscordPHP.INFO: The 'ready' event is deprecated and will be removed in a future version of DiscordPHP. Please use 'init' instead.
|
||||
Bot is ready as AsepSahur#6954
|
||||
[2026-02-15T00:26:31.769977+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T00:26:31.770093+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:31.770762+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T00:26:31.770926+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T00:26:31.771139+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T00:26:31.771253+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T00:26:31.771424+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T00:26:31.771564+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T00:26:31.771657+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T00:26:31.771771+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T00:26:32.640173+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T00:26:32.640347+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:32.640452+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:32.775724+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T00:26:32.775858+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:32.775962+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:32.885739+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T00:26:32.885870+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:32.885966+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:33.013718+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T00:26:33.013855+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:33.014012+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:33.251221+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T00:26:33.251337+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:33.251414+00:00] DiscordPHP.INFO: BUCKET postapplications/:application_id/commands expecting rate limit, timer interval 19501 ms
|
||||
Bot voice state updated: Channel=None Session=32b92a1765281c33083bc516222c87da
|
||||
[2026-02-15T00:26:52.754708+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:53.460847+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T00:26:53.461014+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:53.461221+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:53.565085+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T00:26:53.565279+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:53.565395+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:53.671534+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T00:26:53.671667+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:53.671761+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:26:53.779108+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T00:26:53.779284+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:27:12.526978+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":3}
|
||||
[2026-02-15T00:27:12.582944+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":55.60588836669922}
|
||||
[2026-02-15T00:27:28.200809+00:00] DiscordPHP.DEBUG: BUCKET postinteractions/:interaction_id/:interaction_token/callback queued REQ POST interactions/1472388810703634613/aW50ZXJhY3Rpb246MTQ3MjM4ODgxMDcwMzYzNDYxMzozdndXS2x3R1lZNmVENkE2WVZ5OGpyeUNVdEpQbW9EWUxreVNlN013Z1lGVUhhSE05dWFxd1hMbWtOZUxBNHhLY3FsangyeFBRMmxWWGExY1VJQXFOakYwenhKVzFxWGcwQVYxTmc3UWV6Tmh5Nml5QXJCaG93a2d1VGk3U3BTSw/callback
|
||||
[2026-02-15T00:27:28.200970+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
Joining channel: Staff voice (Join command, delay: 0)
|
||||
Bot voice state updated: Channel=1457687430189682781 Session=b7d96fb916cfae600b6d76157941da16
|
||||
[2026-02-15T00:27:28.336182+00:00] DiscordPHP.INFO: received session id for voice session {"guild":"1428530728706117632","session_id":"b7d96fb916cfae600b6d76157941da16"}
|
||||
[2026-02-15T00:27:28.460582+00:00] DiscordPHP.INFO: received token and endpoint for voice session {"guild":"1428530728706117632","token":"*****","endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T00:27:28.468217+00:00] DiscordPHP.DEBUG: Creating new voice websocket {"endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T00:27:28.741969+00:00] DiscordPHP.DEBUG: REQ POST interactions/1472388810703634613/aW50ZXJhY3Rpb246MTQ3MjM4ODgxMDcwMzYzNDYxMzozdndXS2x3R1lZNmVENkE2WVZ5OGpyeUNVdEpQbW9EWUxreVNlN013Z1lGVUhhSE05dWFxd1hMbWtOZUxBNHhLY3FsangyeFBRMmxWWGExY1VJQXFOakYwenhKVzFxWGcwQVYxTmc3UWV6Tmh5Nml5QXJCaG93a2d1VGk3U3BTSw/callback successful
|
||||
[2026-02-15T00:27:28.742131+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:27:29.060447+00:00] DiscordPHP.DEBUG: connected to voice websocket
|
||||
[2026-02-15T00:27:29.063655+00:00] DiscordPHP.DEBUG: sending identify {"packet":{"op":0,"d":{"server_id":"1428530728706117632","user_id":"1471909193886859294","token":"*****","max_dave_protocol_version":0,"session_id":"b7d96fb916cfae600b6d76157941da16"}}}
|
||||
[2026-02-15T00:27:29.065286+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:27:29.183929+00:00] DiscordPHP.DEBUG: received voice ready packet {"data":{"streams":[{"type":"video","ssrc":4205,"rtx_ssrc":4206,"rid":"","quality":0,"active":false}],"ssrc":4204,"port":19314,"modes":["aead_aes256_gcm_rtpsize","aead_xchacha20_poly1305_rtpsize"],"ip":"104.29.147.190","experiments":["fixed_keyframe_interval"]}}
|
||||
[2026-02-15T00:27:29.193458+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":193.4359073638916}
|
||||
[2026-02-15T00:27:29.193668+00:00] DiscordPHP.DEBUG: received client connect packet {"data":{"Discord\\WebSockets\\Payload":{"op":11,"d":{"user_ids":["235088799074484224","830530156048285716","906246223504240641","923944350612848700","1414108278354608278"]}}}}
|
||||
[2026-02-15T00:27:29.195278+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"235088799074484224","ssrc":228,"speaking":1}}
|
||||
[2026-02-15T00:27:29.195556+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"830530156048285716","ssrc":243,"speaking":1}}
|
||||
[2026-02-15T00:27:29.196722+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"235088799074484224","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:29.196893+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"830530156048285716","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:29.196985+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"906246223504240641","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:29.197149+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"923944350612848700","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:29.197248+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"1414108278354608278","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:29.198158+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"235088799074484224","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:29.285629+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"830530156048285716","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:29.285959+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"906246223504240641","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:29.286081+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"923944350612848700","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:29.286175+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"1414108278354608278","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:29.408338+00:00] DiscordPHP.DEBUG: received our IP and port {"ip":"34.16.53.23","port":2944}
|
||||
[2026-02-15T00:27:29.525706+00:00] DiscordPHP.DEBUG: received description packet, vc ready {"data":{"video_codec":"H264","secure_frames_version":0,"secret_key":"*****","mode":"aead_aes256_gcm_rtpsize","media_session_id":"208aefde4d8f4e84527d8d3adce568cc","dave_protocol_version":0,"audio_codec":"opus"}}
|
||||
[2026-02-15T00:27:29.525947+00:00] DiscordPHP.INFO: voice manager is ready
|
||||
[2026-02-15T00:27:29.530929+00:00] DiscordPHP.DEBUG: BUCKET patchwebhooks/:application_id/:interaction_token/messages/@original queued REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjM4ODgxMDcwMzYzNDYxMzozdndXS2x3R1lZNmVENkE2WVZ5OGpyeUNVdEpQbW9EWUxreVNlN013Z1lGVUhhSE05dWFxd1hMbWtOZUxBNHhLY3FsangyeFBRMmxWWGExY1VJQXFOakYwenhKVzFxWGcwQVYxTmc3UWV6Tmh5Nml5QXJCaG93a2d1VGk3U3BTSw/messages/@original
|
||||
[2026-02-15T00:27:29.531117+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:27:29.532198+00:00] DiscordPHP.INFO: voice client is ready
|
||||
[2026-02-15T00:27:29.532507+00:00] DiscordPHP.INFO: set voice client bitrate {"bitrate":64000}
|
||||
[2026-02-15T00:27:29.533860+00:00] DiscordPHP.DEBUG: received any packet {"data":{"attributes":{"any":0},"created":true,"class":"Discord\\Voice\\Any"}}
|
||||
Bot voice state updated: Channel=None Session=b7d96fb916cfae600b6d76157941da16
|
||||
[2026-02-15T00:27:29.584704+00:00] DiscordPHP.INFO: received session id for voice session {"guild":"1428530728706117632","session_id":"b7d96fb916cfae600b6d76157941da16"}
|
||||
[2026-02-15T00:27:29.682457+00:00] DiscordPHP.WARNING: voice websocket closed {"op":4014,"reason":"Disconnected."}
|
||||
[2026-02-15T00:27:29.682628+00:00] DiscordPHP.WARNING: closing UDP client
|
||||
[2026-02-15T00:27:29.682902+00:00] DiscordPHP.WARNING: received critical opcode - not reconnecting {"op":4014,"reason":"Disconnected."}
|
||||
Voice client closed for channel Staff voice
|
||||
[2026-02-15T00:27:29.683082+00:00] DiscordPHP.WARNING: voice manager closed
|
||||
[2026-02-15T00:27:29.683365+00:00] DiscordPHP.WARNING: voice client closed
|
||||
[2026-02-15T00:27:30.861353+00:00] DiscordPHP.DEBUG: REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjM4ODgxMDcwMzYzNDYxMzozdndXS2x3R1lZNmVENkE2WVZ5OGpyeUNVdEpQbW9EWUxreVNlN013Z1lGVUhhSE05dWFxd1hMbWtOZUxBNHhLY3FsangyeFBRMmxWWGExY1VJQXFOakYwenhKVzFxWGcwQVYxTmc3UWV6Tmh5Nml5QXJCaG93a2d1VGk3U3BTSw/messages/@original successful
|
||||
[2026-02-15T00:27:30.861522+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:27:31.270157+00:00] DiscordPHP.DEBUG: resetting payload count {"count":6}
|
||||
[2026-02-15T00:27:36.367000+00:00] DiscordPHP.DEBUG: BUCKET postinteractions/:interaction_id/:interaction_token/callback queued REQ POST interactions/1472388845000720548/aW50ZXJhY3Rpb246MTQ3MjM4ODg0NTAwMDcyMDU0ODo3Z1pWV3BPQXN4b2NBZjZwaGFKRGNPcXRsQmFQbU93em5QdUcyamhITTNJb1V5amEza1l5QkxMNkZWanJBVWEyVU56VkdrMXhSMW9NMnlIYmQ4dGZWcnM0d0JVN3VGUFlIYUFEbEgwZG5ESzRpTmRDNDVNN1d6clFyMzk3eU5Nbg/callback
|
||||
[2026-02-15T00:27:36.367168+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
Joining channel: Staff voice (Join command, delay: 0)
|
||||
Bot voice state updated: Channel=1457687430189682781 Session=b7d96fb916cfae600b6d76157941da16
|
||||
[2026-02-15T00:27:36.423793+00:00] DiscordPHP.INFO: received session id for voice session {"guild":"1428530728706117632","session_id":"b7d96fb916cfae600b6d76157941da16"}
|
||||
[2026-02-15T00:27:36.423969+00:00] DiscordPHP.INFO: received session id for voice session {"guild":"1428530728706117632","session_id":"b7d96fb916cfae600b6d76157941da16"}
|
||||
[2026-02-15T00:27:36.532734+00:00] DiscordPHP.INFO: received token and endpoint for voice session {"guild":"1428530728706117632","token":"*****","endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T00:27:36.535514+00:00] DiscordPHP.DEBUG: Creating new voice websocket {"endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T00:27:36.536892+00:00] DiscordPHP.INFO: received token and endpoint for voice session {"guild":"1428530728706117632","token":"*****","endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T00:27:36.538998+00:00] DiscordPHP.DEBUG: Creating new voice websocket {"endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T00:27:36.906803+00:00] DiscordPHP.DEBUG: REQ POST interactions/1472388845000720548/aW50ZXJhY3Rpb246MTQ3MjM4ODg0NTAwMDcyMDU0ODo3Z1pWV3BPQXN4b2NBZjZwaGFKRGNPcXRsQmFQbU93em5QdUcyamhITTNJb1V5amEza1l5QkxMNkZWanJBVWEyVU56VkdrMXhSMW9NMnlIYmQ4dGZWcnM0d0JVN3VGUFlIYUFEbEgwZG5ESzRpTmRDNDVNN1d6clFyMzk3eU5Nbg/callback successful
|
||||
[2026-02-15T00:27:36.906965+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:27:37.133270+00:00] DiscordPHP.DEBUG: connected to voice websocket
|
||||
[2026-02-15T00:27:37.133643+00:00] DiscordPHP.DEBUG: sending identify {"packet":{"op":0,"d":{"server_id":"1428530728706117632","user_id":"1471909193886859294","token":"*****","max_dave_protocol_version":0,"session_id":"b7d96fb916cfae600b6d76157941da16"}}}
|
||||
[2026-02-15T00:27:37.134428+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:27:37.163057+00:00] DiscordPHP.DEBUG: connected to voice websocket
|
||||
[2026-02-15T00:27:37.163423+00:00] DiscordPHP.DEBUG: sending identify {"packet":{"op":0,"d":{"server_id":"1428530728706117632","user_id":"1471909193886859294","token":"*****","max_dave_protocol_version":0,"session_id":"b7d96fb916cfae600b6d76157941da16"}}}
|
||||
[2026-02-15T00:27:37.164044+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:27:37.258172+00:00] DiscordPHP.DEBUG: received voice ready packet {"data":{"streams":[{"type":"video","ssrc":4208,"rtx_ssrc":4209,"rid":"","quality":0,"active":false}],"ssrc":4207,"port":19314,"modes":["aead_aes256_gcm_rtpsize","aead_xchacha20_poly1305_rtpsize"],"ip":"104.29.147.190","experiments":["fixed_keyframe_interval"]}}
|
||||
[2026-02-15T00:27:37.258696+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":258.6820125579834}
|
||||
[2026-02-15T00:27:37.259037+00:00] DiscordPHP.DEBUG: received client connect packet {"data":{"Discord\\WebSockets\\Payload":{"op":11,"d":{"user_ids":["235088799074484224","830530156048285716","906246223504240641","923944350612848700","1414108278354608278"]}}}}
|
||||
[2026-02-15T00:27:37.259281+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"235088799074484224","ssrc":228,"speaking":1}}
|
||||
[2026-02-15T00:27:37.259655+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"830530156048285716","ssrc":243,"speaking":1}}
|
||||
[2026-02-15T00:27:37.259846+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"235088799074484224","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:37.259984+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"830530156048285716","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:37.260061+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"906246223504240641","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:37.260132+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"923944350612848700","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:37.260193+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"1414108278354608278","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:37.300968+00:00] DiscordPHP.DEBUG: received voice ready packet {"data":{"streams":[{"type":"video","ssrc":4211,"rtx_ssrc":4212,"rid":"","quality":0,"active":false}],"ssrc":4210,"port":19314,"modes":["aead_aes256_gcm_rtpsize","aead_xchacha20_poly1305_rtpsize"],"ip":"104.29.147.190","experiments":["fixed_keyframe_interval"]}}
|
||||
[2026-02-15T00:27:37.301462+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":301.44810676574707}
|
||||
[2026-02-15T00:27:37.301852+00:00] DiscordPHP.DEBUG: received client connect packet {"data":{"Discord\\WebSockets\\Payload":{"op":11,"d":{"user_ids":["235088799074484224","830530156048285716","906246223504240641","923944350612848700","1414108278354608278"]}}}}
|
||||
[2026-02-15T00:27:37.302176+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"235088799074484224","ssrc":228,"speaking":1}}
|
||||
[2026-02-15T00:27:37.302458+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"830530156048285716","ssrc":243,"speaking":1}}
|
||||
[2026-02-15T00:27:37.302618+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"235088799074484224","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:37.302698+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"830530156048285716","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:37.302779+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"906246223504240641","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:37.302871+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"923944350612848700","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:37.303253+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"1414108278354608278","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T00:27:37.303378+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"235088799074484224","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:37.353067+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"235088799074484224","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:37.353312+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"830530156048285716","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:37.353394+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"906246223504240641","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:37.353456+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"923944350612848700","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:37.353514+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"1414108278354608278","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:37.353575+00:00] DiscordPHP.WARNING: voice websocket closed {"op":4006,"reason":"Session is no longer valid."}
|
||||
[2026-02-15T00:27:37.353872+00:00] DiscordPHP.WARNING: closing UDP client
|
||||
[2026-02-15T00:27:37.354136+00:00] DiscordPHP.WARNING: received critical opcode - not reconnecting {"op":4006,"reason":"Session is no longer valid."}
|
||||
[2026-02-15T00:27:37.354262+00:00] DiscordPHP.DEBUG: sessions {"voice_sessions":{"1428530728706117632":null}}
|
||||
[2026-02-15T00:27:37.417071+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"830530156048285716","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:37.417299+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"906246223504240641","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:37.417380+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"923944350612848700","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:37.417440+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"1414108278354608278","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T00:27:37.471810+00:00] DiscordPHP.DEBUG: received our IP and port {"ip":"34.16.53.23","port":2945}
|
||||
[2026-02-15T00:27:42.819165+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:27:50.889114+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:27:50.914717+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:27:51.008974+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T00:27:51.040682+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":1040.6620502471924}
|
||||
[2026-02-15T00:27:53.778996+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":13}
|
||||
[2026-02-15T00:27:53.817862+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":38.62905502319336}
|
||||
[2026-02-15T00:27:56.569609+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:01.368923+00:00] DiscordPHP.DEBUG: BUCKET patchwebhooks/:application_id/:interaction_token/messages/@original queued REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjM4ODg0NTAwMDcyMDU0ODo3Z1pWV3BPQXN4b2NBZjZwaGFKRGNPcXRsQmFQbU93em5QdUcyamhITTNJb1V5amEza1l5QkxMNkZWanJBVWEyVU56VkdrMXhSMW9NMnlIYmQ4dGZWcnM0d0JVN3VGUFlIYUFEbEgwZG5ESzRpTmRDNDVNN1d6clFyMzk3eU5Nbg/messages/@original
|
||||
[2026-02-15T00:28:01.369198+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:28:01.430640+00:00] DiscordPHP.DEBUG: BUCKET postinteractions/:interaction_id/:interaction_token/callback queued REQ POST interactions/1472388950009188362/aW50ZXJhY3Rpb246MTQ3MjM4ODk1MDAwOTE4ODM2MjpXM2prZllRMjdCQjBFSVAxbW1nNkUzanZIQ1h3ZEdiU3ltZDh1WURnZTVNZ3lUcDNPSjdaN1hKTTl4QW5NMTNvNnhtT0lzZXZGWllMblhBZXJDMlh3YVZKT3BpREVLSjJzaFJDSjNRN0tuM0szZFJEUEhUY2JoOUxkcUd3NnB1cw/callback
|
||||
[2026-02-15T00:28:01.430814+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":1,"empty":true}
|
||||
[2026-02-15T00:28:01.744405+00:00] DiscordPHP.DEBUG: REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjM4ODg0NTAwMDcyMDU0ODo3Z1pWV3BPQXN4b2NBZjZwaGFKRGNPcXRsQmFQbU93em5QdUcyamhITTNJb1V5amEza1l5QkxMNkZWanJBVWEyVU56VkdrMXhSMW9NMnlIYmQ4dGZWcnM0d0JVN3VGUFlIYUFEbEgwZG5ESzRpTmRDNDVNN1d6clFyMzk3eU5Nbg/messages/@original successful
|
||||
[2026-02-15T00:28:01.744552+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":1,"empty":true}
|
||||
[2026-02-15T00:28:01.931121+00:00] DiscordPHP.DEBUG: REQ POST interactions/1472388950009188362/aW50ZXJhY3Rpb246MTQ3MjM4ODk1MDAwOTE4ODM2MjpXM2prZllRMjdCQjBFSVAxbW1nNkUzanZIQ1h3ZEdiU3ltZDh1WURnZTVNZ3lUcDNPSjdaN1hKTTl4QW5NMTNvNnhtT0lzZXZGWllMblhBZXJDMlh3YVZKT3BpREVLSjJzaFJDSjNRN0tuM0szZFJEUEhUY2JoOUxkcUd3NnB1cw/callback successful
|
||||
[2026-02-15T00:28:01.931278+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:28:04.641929+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:04.665312+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:04.759086+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T00:28:04.791840+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":791.8200492858887}
|
||||
[2026-02-15T00:28:10.325171+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:13.260220+00:00] DiscordPHP.DEBUG: BUCKET postinteractions/:interaction_id/:interaction_token/callback queued REQ POST interactions/1472388999791378573/aW50ZXJhY3Rpb246MTQ3MjM4ODk5OTc5MTM3ODU3MzpYdmVYdDk1QWhUSUxuSkdiVHFZWVFZT1dOeE5zdWhQSVBqaVZ6emJtOTlENklGcnNzaURmdnhiRlV0a01qUkM0aFJLSGJic21zbzNZd09xdktWeDVRem00Y1ljM1NQOHFnb3hhUTMxMGo5ODlZeXdWTnFaQXF3Y2c1OGkxQ25DWQ/callback
|
||||
[2026-02-15T00:28:13.260445+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
Voice client in bad state (ready=no) or wrong channel, closing and rejoining...
|
||||
Error closing VC: Voice Client is not connected.
|
||||
Joining channel: Staff voice (Play command, delay: 7)
|
||||
[2026-02-15T00:28:13.761212+00:00] DiscordPHP.DEBUG: REQ POST interactions/1472388999791378573/aW50ZXJhY3Rpb246MTQ3MjM4ODk5OTc5MTM3ODU3MzpYdmVYdDk1QWhUSUxuSkdiVHFZWVFZT1dOeE5zdWhQSVBqaVZ6emJtOTlENklGcnNzaURmdnhiRlV0a01qUkM0aFJLSGJic21zbzNZd09xdktWeDVRem00Y1ljM1NQOHFnb3hhUTMxMGo5ODlZeXdWTnFaQXF3Y2c1OGkxQ25DWQ/callback successful
|
||||
[2026-02-15T00:28:13.761349+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:28:18.395936+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:18.415770+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:18.509383+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T00:28:18.542777+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":542.7589416503906}
|
||||
Error joining VC: You cannot join more than one voice channel per guild/server.
|
||||
[2026-02-15T00:28:20.266371+00:00] DiscordPHP.DEBUG: BUCKET patchwebhooks/:application_id/:interaction_token/messages/@original queued REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjM4ODk5OTc5MTM3ODU3MzpYdmVYdDk1QWhUSUxuSkdiVHFZWVFZT1dOeE5zdWhQSVBqaVZ6emJtOTlENklGcnNzaURmdnhiRlV0a01qUkM0aFJLSGJic21zbzNZd09xdktWeDVRem00Y1ljM1NQOHFnb3hhUTMxMGo5ODlZeXdWTnFaQXF3Y2c1OGkxQ25DWQ/messages/@original
|
||||
[2026-02-15T00:28:20.266507+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:28:20.744427+00:00] DiscordPHP.DEBUG: REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjM4ODk5OTc5MTM3ODU3MzpYdmVYdDk1QWhUSUxuSkdiVHFZWVFZT1dOeE5zdWhQSVBqaVZ6emJtOTlENklGcnNzaURmdnhiRlV0a01qUkM0aFJLSGJic21zbzNZd09xdktWeDVRem00Y1ljM1NQOHFnb3hhUTMxMGo5ODlZeXdWTnFaQXF3Y2c1OGkxQ25DWQ/messages/@original successful
|
||||
[2026-02-15T00:28:20.744597+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T00:28:24.076110+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:31.276819+00:00] DiscordPHP.DEBUG: resetting payload count {"count":2}
|
||||
[2026-02-15T00:28:32.147563+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:32.166290+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:32.259649+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T00:28:32.293142+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":293.1220531463623}
|
||||
[2026-02-15T00:28:35.031902+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":22}
|
||||
[2026-02-15T00:28:35.088545+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":56.31303787231445}
|
||||
[2026-02-15T00:28:37.829079+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:45.905219+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:45.916768+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:46.009910+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T00:28:46.048413+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":1048.3899116516113}
|
||||
[2026-02-15T00:28:51.580409+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:59.662562+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:59.667247+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:28:59.760123+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T00:28:59.794857+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":794.8310375213623}
|
||||
[2026-02-15T00:29:05.335608+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:29:13.419662+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:29:13.419900+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T00:29:13.510283+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T00:29:13.547033+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":547.0149517059326}
|
||||
[2026-02-15T00:29:16.284832+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":22}
|
||||
[2026-02-15T00:29:16.338273+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":53.08389663696289}
|
||||
[2026-02-15 01:21:26] [info] Bot is online and ready: AsepSahur
|
||||
[2026-02-15T01:21:26.676686+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T01:21:26.676828+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:26.678091+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T01:21:26.678370+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T01:21:26.678593+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T01:21:26.678947+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T01:21:26.679127+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T01:21:26.679272+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T01:21:26.681477+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T01:21:26.681829+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T01:21:26.682039+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
[2026-02-15T01:21:26.901444+00:00] DiscordPHP.DEBUG: BUCKET postapplications/:application_id/commands queued REQ POST applications/1471909193886859294/commands
|
||||
Commands registration updated.
|
||||
[2026-02-15T01:21:28.152116+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T01:21:28.152304+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:28.152439+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:28.401785+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T01:21:28.401922+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:28.402024+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:28.656857+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T01:21:28.657005+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:28.657101+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:28.902056+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T01:21:28.902187+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:28.902284+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:29.153934+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T01:21:29.154048+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:29.154155+00:00] DiscordPHP.INFO: BUCKET postapplications/:application_id/commands expecting rate limit, timer interval 19012 ms
|
||||
[2026-02-15T01:21:48.180409+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:48.401025+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T01:21:48.401163+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:48.401271+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:48.547767+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T01:21:48.547886+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:48.548001+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:48.644015+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T01:21:48.644148+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:48.644244+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:48.792306+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T01:21:48.792454+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:48.792569+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:48.892540+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T01:21:48.892682+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:21:48.892774+00:00] DiscordPHP.INFO: BUCKET postapplications/:application_id/commands expecting rate limit, timer interval 19512 ms
|
||||
[2026-02-15 01:21:55] [info] Bot voice state updated: Channel=None
|
||||
[2026-02-15 01:21:55] [info] Bot was disconnected from voice channel. Cleaning up...
|
||||
[2026-02-15T01:22:07.418777+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":6}
|
||||
[2026-02-15T01:22:07.465045+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":46.00691795349121}
|
||||
[2026-02-15T01:22:08.405953+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:22:08.635648+00:00] DiscordPHP.DEBUG: REQ POST applications/1471909193886859294/commands successful
|
||||
[2026-02-15T01:22:08.635796+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:22:26.169189+00:00] DiscordPHP.DEBUG: resetting payload count {"count":3}
|
||||
[2026-02-15T01:22:48.689175+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":6}
|
||||
[2026-02-15T01:22:48.738158+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":48.729896545410156}
|
||||
[2026-02-15T01:23:26.196475+00:00] DiscordPHP.DEBUG: resetting payload count {"count":1}
|
||||
[2026-02-15T01:23:29.943601+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":6}
|
||||
[2026-02-15T01:23:29.982412+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":38.51890563964844}
|
||||
[2026-02-15T01:24:11.200025+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":9}
|
||||
[2026-02-15T01:24:11.251399+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":50.86684226989746}
|
||||
[2026-02-15T01:24:26.208817+00:00] DiscordPHP.DEBUG: resetting payload count {"count":2}
|
||||
[2026-02-15T01:24:52.468642+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":9}
|
||||
[2026-02-15T01:24:52.515780+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":46.85688018798828}
|
||||
[2026-02-15T01:25:26.240431+00:00] DiscordPHP.DEBUG: resetting payload count {"count":1}
|
||||
[2026-02-15T01:25:33.726799+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":9}
|
||||
[2026-02-15T01:25:33.773440+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":46.36383056640625}
|
||||
[2026-02-15T01:26:14.989784+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":12}
|
||||
[2026-02-15T01:26:15.069764+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":79.68711853027344}
|
||||
[2026-02-15T01:26:26.245350+00:00] DiscordPHP.DEBUG: resetting payload count {"count":2}
|
||||
[2026-02-15T01:26:56.269276+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":12}
|
||||
[2026-02-15T01:26:56.312419+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":42.819976806640625}
|
||||
[2026-02-15T01:27:15.195702+00:00] DiscordPHP.DEBUG: BUCKET postinteractions/:interaction_id/:interaction_token/callback queued REQ POST interactions/1472403849338814544/aW50ZXJhY3Rpb246MTQ3MjQwMzg0OTMzODgxNDU0NDpaNUl1TzJ3b0pkZ2VlZFlncHVZcmJZSmkzQk5mSVBEMU94SG1DSXdYbFp6MWRTYVNvNFRHV0gwdGRDR3lUNWJmbEk5WkJvcmZzTWFQcUt4T3ZieDV3VnF0d3pybGk5UTk3Ym5sdlpyMno1Qmd1MFZvQml1OUtzZ1dhVjNqbVpTTw/callback
|
||||
[2026-02-15T01:27:15.195887+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15 01:27:15] [info] Received interaction: join from rio.xmc
|
||||
[2026-02-15T01:27:15.204401+00:00] DiscordPHP.DEBUG: BUCKET patchwebhooks/:application_id/:interaction_token/messages/@original queued REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjQwMzg0OTMzODgxNDU0NDpaNUl1TzJ3b0pkZ2VlZFlncHVZcmJZSmkzQk5mSVBEMU94SG1DSXdYbFp6MWRTYVNvNFRHV0gwdGRDR3lUNWJmbEk5WkJvcmZzTWFQcUt4T3ZieDV3VnF0d3pybGk5UTk3Ym5sdlpyMno1Qmd1MFZvQml1OUtzZ1dhVjNqbVpTTw/messages/@original
|
||||
[2026-02-15T01:27:15.204563+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":1,"empty":true}
|
||||
[2026-02-15 01:27:15] [info] Executing joinVoiceChannel for guild 1428530728706117632, channel Staff voice
|
||||
[2026-02-15 01:27:15] [info] Bot voice state updated: Channel=Staff voice
|
||||
[2026-02-15T01:27:15.277299+00:00] DiscordPHP.INFO: received session id for voice session {"guild":"1428530728706117632","session_id":"fa9d1c394b938f0f95a8233d9e6e27db"}
|
||||
[2026-02-15T01:27:15.626325+00:00] DiscordPHP.DEBUG: REQ POST interactions/1472403849338814544/aW50ZXJhY3Rpb246MTQ3MjQwMzg0OTMzODgxNDU0NDpaNUl1TzJ3b0pkZ2VlZFlncHVZcmJZSmkzQk5mSVBEMU94SG1DSXdYbFp6MWRTYVNvNFRHV0gwdGRDR3lUNWJmbEk5WkJvcmZzTWFQcUt4T3ZieDV3VnF0d3pybGk5UTk3Ym5sdlpyMno1Qmd1MFZvQml1OUtzZ1dhVjNqbVpTTw/callback successful
|
||||
[2026-02-15T01:27:15.626485+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":1,"empty":true}
|
||||
[2026-02-15T01:27:15.657400+00:00] DiscordPHP.INFO: received token and endpoint for voice session {"guild":"1428530728706117632","token":"*****","endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T01:27:15.663762+00:00] DiscordPHP.DEBUG: Creating new voice websocket {"endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T01:27:16.050173+00:00] DiscordPHP.DEBUG: REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjQwMzg0OTMzODgxNDU0NDpaNUl1TzJ3b0pkZ2VlZFlncHVZcmJZSmkzQk5mSVBEMU94SG1DSXdYbFp6MWRTYVNvNFRHV0gwdGRDR3lUNWJmbEk5WkJvcmZzTWFQcUt4T3ZieDV3VnF0d3pybGk5UTk3Ym5sdlpyMno1Qmd1MFZvQml1OUtzZ1dhVjNqbVpTTw/messages/@original successful
|
||||
[2026-02-15T01:27:16.050321+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:27:16.241494+00:00] DiscordPHP.DEBUG: connected to voice websocket
|
||||
[2026-02-15T01:27:16.244873+00:00] DiscordPHP.DEBUG: sending identify {"packet":{"op":0,"d":{"server_id":"1428530728706117632","user_id":"1471909193886859294","token":"*****","max_dave_protocol_version":0,"session_id":"fa9d1c394b938f0f95a8233d9e6e27db"}}}
|
||||
[2026-02-15T01:27:16.246426+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:27:16.364752+00:00] DiscordPHP.DEBUG: received voice ready packet {"data":{"streams":[{"type":"video","ssrc":4376,"rtx_ssrc":4377,"rid":"","quality":0,"active":false}],"ssrc":4375,"port":19314,"modes":["aead_aes256_gcm_rtpsize","aead_xchacha20_poly1305_rtpsize"],"ip":"104.29.147.190","experiments":["fixed_keyframe_interval"]}}
|
||||
[2026-02-15T01:27:16.374499+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":374.4819164276123}
|
||||
[2026-02-15T01:27:16.374898+00:00] DiscordPHP.DEBUG: received client connect packet {"data":{"Discord\\WebSockets\\Payload":{"op":11,"d":{"user_ids":["235088799074484224","830530156048285716","906246223504240641","923944350612848700","1414108278354608278"]}}}}
|
||||
[2026-02-15T01:27:16.377260+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"235088799074484224","ssrc":228,"speaking":1}}
|
||||
[2026-02-15T01:27:16.377594+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"830530156048285716","ssrc":243,"speaking":1}}
|
||||
[2026-02-15T01:27:16.378672+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"235088799074484224","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:16.378879+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"830530156048285716","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:16.378991+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"906246223504240641","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:16.379076+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"923944350612848700","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:16.379339+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"1414108278354608278","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:16.380386+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"235088799074484224","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:16.380566+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"830530156048285716","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:16.380696+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"906246223504240641","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:16.380786+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"923944350612848700","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:16.380956+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"1414108278354608278","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:16.590597+00:00] DiscordPHP.DEBUG: received our IP and port {"ip":"34.16.53.23","port":2944}
|
||||
[2026-02-15T01:27:16.707813+00:00] DiscordPHP.DEBUG: received description packet, vc ready {"data":{"video_codec":"H264","secure_frames_version":0,"secret_key":"*****","mode":"aead_aes256_gcm_rtpsize","media_session_id":"208aefde4d8f4e84527d8d3adce568cc","dave_protocol_version":0,"audio_codec":"opus"}}
|
||||
[2026-02-15T01:27:16.707969+00:00] DiscordPHP.INFO: voice manager is ready
|
||||
[2026-02-15 01:27:16] [info] Successfully joined Staff voice
|
||||
[2026-02-15T01:27:16.709626+00:00] DiscordPHP.DEBUG: BUCKET patchwebhooks/:application_id/:interaction_token/messages/@original queued REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjQwMzg0OTMzODgxNDU0NDpaNUl1TzJ3b0pkZ2VlZFlncHVZcmJZSmkzQk5mSVBEMU94SG1DSXdYbFp6MWRTYVNvNFRHV0gwdGRDR3lUNWJmbEk5WkJvcmZzTWFQcUt4T3ZieDV3VnF0d3pybGk5UTk3Ym5sdlpyMno1Qmd1MFZvQml1OUtzZ1dhVjNqbVpTTw/messages/@original
|
||||
[2026-02-15T01:27:16.709720+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:27:16.710234+00:00] DiscordPHP.INFO: voice client is ready
|
||||
[2026-02-15T01:27:16.710380+00:00] DiscordPHP.INFO: set voice client bitrate {"bitrate":64000}
|
||||
[2026-02-15T01:27:16.711374+00:00] DiscordPHP.DEBUG: received any packet {"data":{"attributes":{"any":0},"created":true,"class":"Discord\\Voice\\Any"}}
|
||||
[2026-02-15 01:27:16] [info] Bot voice state updated: Channel=None
|
||||
[2026-02-15 01:27:16] [info] Bot was disconnected from voice channel. Cleaning up...
|
||||
[2026-02-15T01:27:16.765116+00:00] DiscordPHP.WARNING: voice websocket closed {"op":1000,"reason":""}
|
||||
[2026-02-15T01:27:16.765247+00:00] DiscordPHP.WARNING: closing UDP client
|
||||
[2026-02-15T01:27:16.765482+00:00] DiscordPHP.WARNING: received critical opcode - not reconnecting {"op":1000,"reason":""}
|
||||
[2026-02-15 01:27:16] [info] VoiceClient Closed in guild 1428530728706117632
|
||||
[2026-02-15T01:27:16.767510+00:00] DiscordPHP.WARNING: voice manager closed
|
||||
[2026-02-15T01:27:16.767871+00:00] DiscordPHP.WARNING: voice client closed
|
||||
[2026-02-15T01:27:17.092443+00:00] DiscordPHP.DEBUG: REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjQwMzg0OTMzODgxNDU0NDpaNUl1TzJ3b0pkZ2VlZFlncHVZcmJZSmkzQk5mSVBEMU94SG1DSXdYbFp6MWRTYVNvNFRHV0gwdGRDR3lUNWJmbEk5WkJvcmZzTWFQcUt4T3ZieDV3VnF0d3pybGk5UTk3Ym5sdlpyMno1Qmd1MFZvQml1OUtzZ1dhVjNqbVpTTw/messages/@original successful
|
||||
[2026-02-15T01:27:17.092571+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:27:19.833704+00:00] DiscordPHP.DEBUG: BUCKET postinteractions/:interaction_id/:interaction_token/callback queued REQ POST interactions/1472403875192639538/aW50ZXJhY3Rpb246MTQ3MjQwMzg3NTE5MjYzOTUzODoyRUFXMVVwWUdRT0NzQzNNaG1UUUhZVGFtMjV5dFFndUVNNmtGR3RRSWhLSlhiclFtSFZrV1Z1eVRKd0lBWVJqTURzRVpQcFU4dm5FWGtWVHRYQ0Z2cGtnTDdqYzJIaWlrWGhzMkl0Umt6WTdjMk9rNGg3eDZPM2FYZERzZ3VZZg/callback
|
||||
[2026-02-15T01:27:19.833863+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":0,"empty":true}
|
||||
[2026-02-15 01:27:19] [info] Received interaction: play from rio.xmc
|
||||
[2026-02-15T01:27:19.838351+00:00] DiscordPHP.DEBUG: BUCKET patchwebhooks/:application_id/:interaction_token/messages/@original queued REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjQwMzg3NTE5MjYzOTUzODoyRUFXMVVwWUdRT0NzQzNNaG1UUUhZVGFtMjV5dFFndUVNNmtGR3RRSWhLSlhiclFtSFZrV1Z1eVRKd0lBWVJqTURzRVpQcFU4dm5FWGtWVHRYQ0Z2cGtnTDdqYzJIaWlrWGhzMkl0Umt6WTdjMk9rNGg3eDZPM2FYZERzZ3VZZg/messages/@original
|
||||
[2026-02-15T01:27:19.838473+00:00] DiscordPHP.DEBUG: http not checking interaction queue {"waiting":1,"empty":true}
|
||||
[2026-02-15 01:27:19] [info] Executing joinVoiceChannel for guild 1428530728706117632, channel Staff voice
|
||||
[2026-02-15 01:27:19] [info] Bot voice state updated: Channel=Staff voice
|
||||
[2026-02-15T01:27:19.938261+00:00] DiscordPHP.INFO: received session id for voice session {"guild":"1428530728706117632","session_id":"fa9d1c394b938f0f95a8233d9e6e27db"}
|
||||
[2026-02-15T01:27:19.938407+00:00] DiscordPHP.INFO: received session id for voice session {"guild":"1428530728706117632","session_id":"fa9d1c394b938f0f95a8233d9e6e27db"}
|
||||
[2026-02-15T01:27:20.036581+00:00] DiscordPHP.INFO: received token and endpoint for voice session {"guild":"1428530728706117632","token":"*****","endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T01:27:20.038687+00:00] DiscordPHP.DEBUG: Creating new voice websocket {"endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T01:27:20.039751+00:00] DiscordPHP.INFO: received token and endpoint for voice session {"guild":"1428530728706117632","token":"*****","endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T01:27:20.041646+00:00] DiscordPHP.DEBUG: Creating new voice websocket {"endpoint":"c-fra20-5f509e9b.discord.media:2083"}
|
||||
[2026-02-15T01:27:20.551487+00:00] DiscordPHP.DEBUG: REQ POST interactions/1472403875192639538/aW50ZXJhY3Rpb246MTQ3MjQwMzg3NTE5MjYzOTUzODoyRUFXMVVwWUdRT0NzQzNNaG1UUUhZVGFtMjV5dFFndUVNNmtGR3RRSWhLSlhiclFtSFZrV1Z1eVRKd0lBWVJqTURzRVpQcFU4dm5FWGtWVHRYQ0Z2cGtnTDdqYzJIaWlrWGhzMkl0Umt6WTdjMk9rNGg3eDZPM2FYZERzZ3VZZg/callback successful
|
||||
[2026-02-15T01:27:20.551737+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":1,"empty":true}
|
||||
[2026-02-15T01:27:20.634962+00:00] DiscordPHP.DEBUG: connected to voice websocket
|
||||
[2026-02-15T01:27:20.635456+00:00] DiscordPHP.DEBUG: sending identify {"packet":{"op":0,"d":{"server_id":"1428530728706117632","user_id":"1471909193886859294","token":"*****","max_dave_protocol_version":0,"session_id":"fa9d1c394b938f0f95a8233d9e6e27db"}}}
|
||||
[2026-02-15T01:27:20.636377+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:27:20.637344+00:00] DiscordPHP.DEBUG: connected to voice websocket
|
||||
[2026-02-15T01:27:20.637749+00:00] DiscordPHP.DEBUG: sending identify {"packet":{"op":0,"d":{"server_id":"1428530728706117632","user_id":"1471909193886859294","token":"*****","max_dave_protocol_version":0,"session_id":"fa9d1c394b938f0f95a8233d9e6e27db"}}}
|
||||
[2026-02-15T01:27:20.638242+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:27:20.663535+00:00] DiscordPHP.DEBUG: REQ PATCH webhooks/1471909193886859294/aW50ZXJhY3Rpb246MTQ3MjQwMzg3NTE5MjYzOTUzODoyRUFXMVVwWUdRT0NzQzNNaG1UUUhZVGFtMjV5dFFndUVNNmtGR3RRSWhLSlhiclFtSFZrV1Z1eVRKd0lBWVJqTURzRVpQcFU4dm5FWGtWVHRYQ0Z2cGtnTDdqYzJIaWlrWGhzMkl0Umt6WTdjMk9rNGg3eDZPM2FYZERzZ3VZZg/messages/@original successful
|
||||
[2026-02-15T01:27:20.663704+00:00] DiscordPHP.DEBUG: http not checking queue {"waiting":0,"empty":true}
|
||||
[2026-02-15T01:27:20.753433+00:00] DiscordPHP.DEBUG: received voice ready packet {"data":{"streams":[{"type":"video","ssrc":4379,"rtx_ssrc":4380,"rid":"","quality":0,"active":false}],"ssrc":4378,"port":19314,"modes":["aead_aes256_gcm_rtpsize","aead_xchacha20_poly1305_rtpsize"],"ip":"104.29.147.190","experiments":["fixed_keyframe_interval"]}}
|
||||
[2026-02-15T01:27:20.753941+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":753.9238929748535}
|
||||
[2026-02-15T01:27:20.754275+00:00] DiscordPHP.DEBUG: received client connect packet {"data":{"Discord\\WebSockets\\Payload":{"op":11,"d":{"user_ids":["235088799074484224","830530156048285716","906246223504240641","923944350612848700","1414108278354608278"]}}}}
|
||||
[2026-02-15T01:27:20.754561+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"235088799074484224","ssrc":228,"speaking":1}}
|
||||
[2026-02-15T01:27:20.755120+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"830530156048285716","ssrc":243,"speaking":1}}
|
||||
[2026-02-15T01:27:20.755247+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"235088799074484224","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:20.755323+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"830530156048285716","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:20.755391+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"906246223504240641","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:20.755459+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"923944350612848700","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:20.755523+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"1414108278354608278","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:20.755781+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"235088799074484224","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:20.755867+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"830530156048285716","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:20.756534+00:00] DiscordPHP.DEBUG: received voice ready packet {"data":{"streams":[{"type":"video","ssrc":4382,"rtx_ssrc":4383,"rid":"","quality":0,"active":false}],"ssrc":4381,"port":19314,"modes":["aead_aes256_gcm_rtpsize","aead_xchacha20_poly1305_rtpsize"],"ip":"104.29.147.190","experiments":["fixed_keyframe_interval"]}}
|
||||
[2026-02-15T01:27:20.757371+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":757.3609352111816}
|
||||
[2026-02-15T01:27:20.757491+00:00] DiscordPHP.DEBUG: received client connect packet {"data":{"Discord\\WebSockets\\Payload":{"op":11,"d":{"user_ids":["235088799074484224","830530156048285716","906246223504240641","923944350612848700","1414108278354608278"]}}}}
|
||||
[2026-02-15T01:27:20.757657+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"235088799074484224","ssrc":228,"speaking":1}}
|
||||
[2026-02-15T01:27:20.757839+00:00] DiscordPHP.DEBUG: received speaking packet {"data":{"user_id":"830530156048285716","ssrc":243,"speaking":1}}
|
||||
[2026-02-15T01:27:20.757964+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"235088799074484224","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:20.758048+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"830530156048285716","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:20.758118+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"906246223504240641","flags":null},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:20.758359+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"923944350612848700","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:20.758439+00:00] DiscordPHP.DEBUG: received flags packet {"data":{"attributes":{"user_id":"1414108278354608278","flags":2},"created":true,"class":"Discord\\Voice\\Flags"}}
|
||||
[2026-02-15T01:27:20.854022+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"906246223504240641","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:20.854253+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"923944350612848700","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:20.854336+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"1414108278354608278","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:20.854420+00:00] DiscordPHP.WARNING: voice websocket closed {"op":4006,"reason":"Session is no longer valid."}
|
||||
[2026-02-15T01:27:20.854459+00:00] DiscordPHP.WARNING: closing UDP client
|
||||
[2026-02-15T01:27:20.854907+00:00] DiscordPHP.WARNING: received critical opcode - not reconnecting {"op":4006,"reason":"Session is no longer valid."}
|
||||
[2026-02-15T01:27:20.855002+00:00] DiscordPHP.DEBUG: sessions {"voice_sessions":{"1428530728706117632":null}}
|
||||
[2026-02-15T01:27:20.859310+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"235088799074484224","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:20.859505+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"830530156048285716","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:20.859626+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"906246223504240641","platform":null},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:20.859859+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"923944350612848700","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:20.860036+00:00] DiscordPHP.DEBUG: received platform packet {"data":{"attributes":{"user_id":"1414108278354608278","platform":1},"created":true,"class":"Discord\\Voice\\Platform"}}
|
||||
[2026-02-15T01:27:20.974000+00:00] DiscordPHP.DEBUG: received our IP and port {"ip":"34.16.53.23","port":2945}
|
||||
[2026-02-15T01:27:26.250142+00:00] DiscordPHP.DEBUG: resetting payload count {"count":6}
|
||||
[2026-02-15T01:27:30.000035+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:27:34.389449+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:27:34.389675+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:27:34.504197+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T01:27:34.507407+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":507.3850154876709}
|
||||
[2026-02-15T01:27:37.520005+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":24}
|
||||
[2026-02-15T01:27:37.559450+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":39.063215255737305}
|
||||
[2026-02-15T01:27:43.755627+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:27:48.140373+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:27:48.140587+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:27:48.254396+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T01:27:48.257041+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":257.0199966430664}
|
||||
[2026-02-15T01:27:57.512536+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15 01:28:00] [info] Safety timeout: Clearing stuck join state for guild 1428530728706117632
|
||||
[2026-02-15T01:28:01.894513+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:01.894732+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:02.004663+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T01:28:02.031734+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":1031.7111015319824}
|
||||
[2026-02-15T01:28:11.269155+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:15.648645+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:15.648867+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:15.754950+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T01:28:15.764674+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":764.6501064300537}
|
||||
[2026-02-15T01:28:18.770279+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":24}
|
||||
[2026-02-15T01:28:18.892438+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":121.88196182250977}
|
||||
[2026-02-15T01:28:25.025388+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:26.251793+00:00] DiscordPHP.DEBUG: resetting payload count {"count":2}
|
||||
[2026-02-15T01:28:29.402500+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:29.402708+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:29.505180+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T01:28:29.519811+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":519.7858810424805}
|
||||
[2026-02-15T01:28:38.776733+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:43.156497+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:43.156662+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:43.255509+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T01:28:43.276555+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":276.5359878540039}
|
||||
[2026-02-15T01:28:52.529920+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:56.911395+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:56.911599+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:28:57.005701+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T01:28:57.027547+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":1027.5259017944336}
|
||||
[2026-02-15T01:29:00.023397+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":24}
|
||||
[2026-02-15T01:29:00.289588+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":265.9111022949219}
|
||||
[2026-02-15T01:29:06.280089+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:29:10.666163+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:29:10.666437+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:29:10.755907+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T01:29:10.785987+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":785.9680652618408}
|
||||
[2026-02-15T01:29:20.039552+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:29:24.420426+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:29:24.420603+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:29:24.506234+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T01:29:24.536583+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":536.5610122680664}
|
||||
[2026-02-15T01:29:26.253682+00:00] DiscordPHP.DEBUG: resetting payload count {"count":1}
|
||||
[2026-02-15T01:29:33.796537+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:29:38.175306+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:29:38.175513+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
[2026-02-15T01:29:38.256510+00:00] DiscordPHP.DEBUG: sent UDP heartbeat
|
||||
[2026-02-15T01:29:38.291502+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":291.47791862487793}
|
||||
[2026-02-15T01:29:41.276525+00:00] DiscordPHP.DEBUG: sending heartbeat {"seq":27}
|
||||
[2026-02-15T01:29:41.328106+00:00] DiscordPHP.DEBUG: received heartbeat ack {"response_time":51.280975341796875}
|
||||
[2026-02-15T01:29:47.549486+00:00] DiscordPHP.DEBUG: sending heartbeat
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user