Skip to content

Commit db9110a

Browse files
committed
Fix edge cases on large meta data or null users
1 parent aae5d7d commit db9110a

File tree

1 file changed

+29
-6
lines changed

1 file changed

+29
-6
lines changed

src/libraries/Logger.php

+29-6
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,12 @@ protected static function dispatchDiscordWebhook($event_id) {
8787
$embed->setTimestamp($event->getEventDateTime());
8888

8989
$user = $event->getUser();
90-
$author = new DiscordEmbedAuthor(
91-
$user->getName(), $user->getURI(), $user->getAvatarURI(null)
92-
);
93-
$embed->setAuthor($author);
90+
if (!is_null($user)) {
91+
$author = new DiscordEmbedAuthor(
92+
$user->getName(), $user->getURI(), $user->getAvatarURI(null)
93+
);
94+
$embed->setAuthor($author);
95+
}
9496

9597
$data = json_decode($event->getMetadata(), true);
9698
if (is_scalar($data)) {
@@ -101,10 +103,31 @@ protected static function dispatchDiscordWebhook($event_id) {
101103
} else {
102104

103105
foreach ($data as $key => $value) {
106+
107+
$f_key = substr($key, 0, DiscordEmbedField::MAX_NAME - 3);
108+
if (strlen($key) > DiscordEmbedField::MAX_NAME - 3)
109+
$f_key .= '...';
110+
104111
if (is_scalar($value)) {
105-
$field = new DiscordEmbedField($key, $value, true);
106-
$embed->addField($field);
112+
113+
if (is_string($value)) {
114+
$f_value = substr($value, 0, DiscordEmbedField::MAX_VALUE - 3);
115+
if (strlen($value) > DiscordEmbedField::MAX_VALUE - 3)
116+
$f_value .= '...';
117+
} else {
118+
$f_value = $value;
119+
}
120+
121+
$field = new DiscordEmbedField($f_key, $f_value, true);
122+
123+
} else {
124+
125+
$field = new DiscordEmbedField($f_key, gettype($value), true);
126+
107127
}
128+
$embed->addField($field);
129+
130+
if ($embed->fieldCount() >= DiscordEmbed::MAX_FIELDS) break;
108131
}
109132

110133
}

0 commit comments

Comments
 (0)