guild_id); if (!$guild) return; static::sync($guild, $role); } public static function onUpstreamUpdate(Role $role) { $guild = DiscordGuild::firstWhere('guild_id', $role->guild_id); if (!$guild) return; static::sync($guild, $role); } public static function onUpstreamDelete($role) { if (!$role) return; $model = static::firstWhere('role_id', $role->id); if (!$model) return; $model->delete(); } public static function sync(DiscordGuild $guild, Role $role) { $model = static::firstOrNew([ 'discord_guild_id' => $guild->id, 'role_id' => $role->id, ]); $model->name = $role->name; $model->color = $role->color; $model->position = $role->position; $model->permissions = $role->permissions->bitwise; $model->save(); } public function guild() { return $this->belongsTo(DiscordGuild::class); } protected $fillable = [ 'discord_guild_id', 'role_id', ]; }