diff --git a/src/Discord/Parts/Guild/Guild.php b/src/Discord/Parts/Guild/Guild.php index 68bf0a981..2dc244804 100644 --- a/src/Discord/Parts/Guild/Guild.php +++ b/src/Discord/Parts/Guild/Guild.php @@ -142,6 +142,7 @@ * * @property AutoModerationRuleRepository $auto_moderation_rules * @property BanRepository $bans + * @property EntitlementRepository $entitlements * @property GuildCommandRepository $commands * @property CommandPermissionsRepository $command_permissions * @property IntegrationRepository $integrations diff --git a/src/Discord/WebSockets/Events/EntitlementCreate.php b/src/Discord/WebSockets/Events/EntitlementCreate.php index 8d163d001..4658e1bb4 100644 --- a/src/Discord/WebSockets/Events/EntitlementCreate.php +++ b/src/Discord/WebSockets/Events/EntitlementCreate.php @@ -28,19 +28,19 @@ class EntitlementCreate extends Event public function handle($data) { /** @var Entitlement */ - $part = $this->factory->part(Entitlement::class, (array) $data, true); + $entitlementPart = $this->factory->part(Entitlement::class, (array) $data, true); if (isset($data->guild_id)) { /** @var Guild|null */ $guild = yield $this->discord->guilds->cacheGet($data->guild_id); if ($guild instanceof Guild) { - $guild->entitlements->set($part); - return $part; + $guild->entitlements->set($data->id, $entitlementPart); + return $entitlementPart; } - } else { - $this->discord->entitlements->set($data->id, $part); } - return $part; + $this->discord->entitlements->set($data->id, $entitlementPart); + + return $entitlementPart; } } diff --git a/src/Discord/WebSockets/Events/EntitlementUpdate.php b/src/Discord/WebSockets/Events/EntitlementUpdate.php index 0c3c0f559..857fde068 100644 --- a/src/Discord/WebSockets/Events/EntitlementUpdate.php +++ b/src/Discord/WebSockets/Events/EntitlementUpdate.php @@ -16,7 +16,7 @@ use Discord\WebSockets\Event; /** - * @link https://discord.com/developers/docs/topics/gateway-events#guild-soundboard-sound-update + * @link https://discord.com/developers/docs/topics/gateway-events#guild-entitlementboard-entitlement-update * * @since 10.0.0 */ @@ -27,31 +27,42 @@ class EntitlementUpdate extends Event */ public function handle($data) { - $newPart = $oldPart = null; - - /** @var Guild|null */ - $guild = yield $this->discord->guilds->cacheGet($data->guild_id); - if (! $guild instanceof Guild) { - /** @var Sound */ - $newPart = $this->factory->part(Sound::class, (array) $data, true); - return [$newPart, $oldPart]; - } + $newEntitlementPart = $oldEntitlementPart = null; - /** @var ?Sound */ - $oldPart = yield $guild->sounds->cacheGet($data->sound_id); - if ($oldPart instanceof Entitlement) { - $newPart = clone $oldPart; - $newPart->fill((array) $data); + if (isset($data->guild_id)) { + /** @var Guild|null */ + $guild = yield $this->discord->guilds->cacheGet($data->guild_id); + if ($guild instanceof Guild) { + /** @var ?Entitlement */ + $oldEntitlementPart = yield $guild->entitlements->cacheGet($data->id); + if ($oldEntitlementPart instanceof Entitlement) { + $newEntitlementPart = clone $oldEntitlementPart; + $newEntitlementPart->fill((array) $data); + } + $guild->entitlements->set($data->id, $newEntitlementPart ?? $this->factory->part(Entitlement::class, (array) $data, true)); + } } else { - /** @var Sound */ - $newPart = $this->factory->part(Sound::class, (array) $data, true); + /** @var ?Entitlement */ + $oldEntitlementPart = yield $this->discord->entitlements->cacheGet($data->id); + if ($oldEntitlementPart instanceof Entitlement) { + $newEntitlementPart = clone $oldEntitlementPart; + $newEntitlementPart->fill((array) $data); + } } - /** @var EntitlementRepository */ - if ($repository = $guild->entitlements) { - $repository->set($newPart->sound_id, $newPart); - } + /** @var Entitlement */ + $newEntitlementPart = $newEntitlementPart ?? $this->factory->part(Entitlement::class, (array) $data, true); + + $this->discord->entitlements->set($data->id, $newEntitlementPart); - return [$newPart, $oldPart]; + return [$newEntitlementPart, $oldEntitlementPart]; } } + + + + + + + +