; ============================================================ ; XMPP Radio Bot Configuration ; ============================================================ [XMPP] ; The Jabber ID (JID) the bot will use to login. jid = radiobot@example.com ; The password for the bot's account. password = i_love_doors_123 ; The XMPP resource. This identifies this specific connection. ; You can usually leave this as default. resource = RadioBot [Radio] ; Local directory where music files are stored. ; The bot will scan this recursively for audio files. music_directory = ./music ; Playback mode. Options: 'random' or 'sequential'. ; 'random' shuffles tracks, 'sequential' plays alphabetically/by folder. playback_mode = random ; Comma-separated list of audio formats to scan for. audio_formats = flac,opus,ogg,wav,mp3,m4a ; Default internal volume (0-100). default_volume = 80 [Stream] ; Enable the built-in HTTP streaming server (Icecast-like). ; If true, users can listen via browser/VLC at http://host:port/mount http_enabled = false ; The IP to bind the stream server to. 0.0.0.0 listens on all interfaces. stream_host = 0.0.0.0 ; Port for the HTTP stream. stream_port = 8000 ; Output format for the HTTP stream. ; Options: mp3, ogg, aac, opus stream_format = mp3 ; Bitrate in kbps for the HTTP stream (e.g., 128, 192, 320). bitrate = 128 ; The URL path for the stream (e.g., /radio makes http://IP:8000/radio). mount_point = /radio [Jingle] ; Enable Jingle/WebRTC for making/receiving VoIP calls directly via XMPP. ; Requires 'aiortc' library. enabled = true ; STUN/TURN server is required for negotiating connections through NAT/Firewalls. ; You can use Google's public STUN or your own COTURN server. stun_server = stun:stun.l.google.com:19302 [MUC] ; Multi-User Chat (Group) settings. ; Leave empty to disable joining rooms. ; The JID of the public radio room (where the bot announces songs). radio_room = radio@conference.example.com radio_room_nick = DJ_Bot ; The JID of the management room (for admins). management_room = staff@conference.example.com management_room_nick = BotControl [Access] ; Permission control mode. ; 'admins': Only JIDs in admin_jids can use control commands. ; 'everyone': Anyone can control playback (stop, next, play). control_mode = admins ; Comma-separated list of JIDs that have basic access (if not in 'everyone' mode). allowed_jids = user1@example.com, user2@example.com ; Comma-separated list of Super Admins (can use !scan, !dl, !stop). admin_jids = admin@example.com, owner@example.com [YtDlp] ; Enable YouTube/SoundCloud downloading and searching features. ; Requires 'yt-dlp' and 'ffmpeg' installed on the system. enabled = true ; Preferred audio format download setting (passed to yt-dlp). format = bestaudio ; Maximum number of results to show for !search. max_search_results = 5 ; Maximum filesize to download in MB. Prevents downloading 10-hour mixes. max_filesize = 100 ; Subdirectory inside 'music_directory' where downloads are saved. download_subdir = downloads [Stations] ; Internet Radio Stations for the !station command. ; Format: Name = URL example_radio = https://radio.example.org/stream.mp3 [OMEMO] ; Enable End-to-End Encryption (OMEMO). ; WARNING: Requires python-omemo and associated cryptographic libraries. ; If you have trouble installing those, set this to false. enabled = true ; File path to store OMEMO keys and trust data. store_path = radio_omemo_store.json