# Common questions

## 🔐 Getting `You don't have the necessary permissions` when interacting with a speaker

This message appears when permission checks fail. The logic is not escrowed and can be found in: `editable_server/functions.lua`

Pay attention to these two functions:

* `hasAdminPermissions`
* `hasSpeakerPermissions`

Make sure these functions are set up properly.

Also, since this resource uses ox\_lib's ACL system, ensure the ox\_lib is properly set up in your `server.cfg`

You're likely missing these lines in your `server.cfg`:

```
add_ace resource.ox_lib command.add_ace allow
add_ace resource.ox_lib command.remove_ace allow
add_ace resource.ox_lib command.add_principal allow
add_ace resource.ox_lib command.remove_principal allow
```

For full setup instructions, check the ox\_lib documentation <https://overextended.dev/ox\\_lib#config>

Don't skip the config part - it's important!

## 💡Speaker images not appearing when using ox\_inventory

This usually happens because `ox_inventory` doesn't recognize our CDN as a valid image host.

To fix this, add `media.rahe.dev` to the `validHosts` list in `ox_inventory/modules/utils/server.lua`.

Example:

```lua
local validHosts = {
    ['i.imgur.com'] = true,
    ['media.rahe.dev'] = true,
}
```

## 🛒 How do I add speakers to shops with ox\_inventory?

If you don't want to use the built-in speaker shop, you can manually add speaker items to your existing shop in `ox_inventory/data/shops.lua`

```lua
{ name = 'speaker', price = 500, metadata = {typeId = 1, label = 'Speaker Retro', description = 'Low volume, range and quality.', imageurl = 'https://media.rahe.dev/img/boombox.png'} },
{ name = 'speaker', price = 1000, metadata = {typeId = 2, label = 'Speaker Vibe', description = 'Good volume, range and quality.', imageurl = 'https://media.rahe.dev/img/speaker1.png'} },
{ name = 'speaker', price = 1500, metadata = {typeId = 3, label = 'Speaker Beat', description = 'Great volume, range, quality and bass.', imageurl = 'https://media.rahe.dev/img/speaker2.png'} },
{ name = 'speaker', price = 5000, metadata = {typeId = 4, label = 'Speaker Blast', description = 'Epic volume, range, quality, bass and filters.', imageurl = 'https://media.rahe.dev/img/speaker3.png'} },
```

## 🎧 Is there a "streamer mode"?

Yes! We call this *Safety Preference*.

You can use this feature using the `/safetypreference` command.

It offers three options:

* Play everything
* Play only DMCA safe music
* Play nothing

Perfect for content creators who want to avoid any potential issues.

## ⚠️ Errors when fetching data from the YouTube API

This is usually caused by a missing or expired YouTube API key.

Less commonly, it might happen if someone tries to play a private playlist or video.

{% content-ref url="../boosting/common-questions" %}
[common-questions](https://docs.rahe.dev/our-scripts/boosting/common-questions)
{% endcontent-ref %}
