Releases: Special-K-s-Flightsim-Bots/DCSServerBot
Release list
DCSServerBot Release 3.0.4.26
Enhancements
- HoundTTS: Support for 0.2.2 added.
- Monitoring: can auto-restart servers on public IP change now (see below).
Changes
- run.py changed message to warn about Python < 3.11 as that is really unsupported now
- RestAPI: more values for
/servers - RestAPI: added
/eventsendpoint to get mission events - RestAPI: added playtime to
/modulestats - RestAPI: new endpoint
/traps/imgadded - Cloud: better connection handling
- Cloud: session caching for logger added
- MissionStats: no taxiway check for AI
- Restore: can now handle if the Saved Games path changes on restores (due to restores on different PCs)
- UserStats: added takeoffs to flight performance chart
- SkyEye: now supports remote configurations (
remote: true) - Added schema validation for
presets.yamlfiles - Removed proxy from IP check
Bugfixes
- Scheduler: method "shutdown" should set the maintenance flag (hotfixed)
- Scheduler: new warn structure with sounds did not work yet
- Scheduler: clear_on_maintenance deactivated maintenance mode in every case, even if no reboot happened
- MizEdit: latitude/longitude mixup in start_time "morning", "noon", ... (hotfixed)
- Schema validation: rolled back change in _scalar_or_map() (hotfixed)
/server shutdowncould hang for 3 mins on already dead servers.- Pending players weren't displayed correctly in the player list
- Cloud: fetch error on stale members
- Cloud: proper close of logger to avoid exceptions on shutdown
- Mission: wrong order in historization of player entries.
- RestAPI:
/serversdid return inactive players - BackupService: TypeError if the PostgreSQL installation could not be found.
- BackupService: backup with a changed missions_dir did not work if that directory was not called "Missions"
- Restore: choices were wrongly added, instances and nodes tables should have been cleared
- Tacview: channel upload did not work
- Manual affinity was not applied correctly on bot restarts (process reconnects).
- Preset sample had wrong cloud preset notation
- Extensions need to be hook in a server rename to update the port tables
- Trackfile: Parameter change in send_message() caused attribute error
/dcs installdid not value the return code on failed installations.
Automated Restarts on IP-Changes
A a convenience change for people that do not have static IPs, the bot can now autostart your servers automatically, if it detects an external IP change. It will be tested every 10 mins.
Configuration happens in config/services/monitoring.yaml and you already see how to disable it:
# config/services/monitoring.yaml
DEFAULT:
ignore_ip_changes: false # If you don't have a fixed IP, the bot will automatically restart your servers on a change of your public IP. If you don't want that, set this to true.
messages:
ip_change: Server is being restarted due to an IP change!Anybody else that has a static IP be reminded that you should put that in your nodes.yaml to avoid unnecessary IP lookups:
# config/nodes.yaml
MyNode:
public_ip: 111.222.333.444 # replace with your static IPDCSServerBot Release 3.0.4.25
I have now finally dropped Python 3.10 support. I did not see anybody using it for a while now and it will be EOL later this year anyway.
Also, I have made the cloud statistics available for everyone now! If you have questions about cloud statistics, feel free to ask in public-chat or general-help of my Discord server.
Enhancements
- Scheduler: added support for late loading of scripts (on startup)
- Scheduler: more flexible warn structure (allow sounds per message)
Changes
⚠️ Dropped Python 3.10 support- 💯 Cloud: enable cloud statistics for (nearly) everyone!
- 💯 Mission upload: allows for smooth updates now (no server stop) and extensions handling in all cases
- Bot: Better error handling on fatal discord errors during startup.
- Realweather: allow "0" only as offset for time and date
- Punishment: Better detection for accidental player disconnects due to network outages.
- Punishment: add server name to kick and move to spectators messages
- Userstats: empty period on highscore was unsupported
/server config, optimized message updates.- HoundTTS: support more config parameters and auto-create basic config files.
- Lardoon: added "master_only" flag to have only one Lardoon running in a whole cluster (you need TV files on a cloud drive for that!)
- Cloud: allow global unlinking / syncing with global unlinks
- Chat logs are now named
logs/instance-name-chat.loginstead oflogs/server-name-chat.log - Core: safer task handling
- Core: Complete overhaul of service dependencies.
- Core: added ServiceProxy to access master_only services from remote.
- Workaround for DCS bug with wrong coalition assignments on kill trades.
- Better error handling for
/mission modify - Taxiway takeoff detection: added another missing runway at Bilbeis Air Base in Sinai
- Removed deprecation warning from old affinity as the new one is still WIP
- Added python version check to annoy you with update requests
- Cleanup asyncio_errors.log on startups as it grew a lot
- Cleanup the server's internal SQLite database on startups
- Updated CN locales, thanks to Straight Shooter!
- Updated ES locales, thanks to Pier_Paolo!
- Updated DE locales, thanks to myself!
Bugfixes
- SRS: enforce_atc did not work if coalitions weren't enabled (hotfixed).
- SRS: keyerror "type" on spawned FARPs
/player info: historic name changes could get mangled if many changes forth and back happened.- Cloud: linked_at can be None, if no historic dataset exists.
- LotAtc: autoupdate failed with an error
- Cluster: endless loop if wrong master in cluster table and agent node had a newer version
- Cluster: Synchronous remote calls did not work anymore
- Autoscan did not auto-delete ".sav"-missions.
- Materialized views did not auto-refresh after a database restore.
/server configdid not overwrite existing serverSettings configurations in servers.yaml/extension enabledid not work with plain vanilla extensions like ModManager/extension listfailed if ModManager or VoiceChat was enabled/player compareautocomplete removed due to discord bug, you need to provide 2 UCIDs now
DCSServerBot Release 3.0.4.24
Changes
- Greenieboard: added min_flight_time config option to filter short traps
- Punishment: added event generation for missing ED events
- Punishment: better PBK handling of evading kills
- Punishment: improved taxiway takeoff detection
- MizEdit can work without time configuration also now
- Admin: added security question to
/dcs repair. - Core: Performance tuning for player auto-completion.
- Core: Warning about outdated PostgreSQL versions added.
- Core: Some small amanedments to the cluster code.
Bugfixes
- CreditSystem: initialisation logic in lua could be faulty
- Exceptions on bot startup could cause a deadlock.
- CleanupService: ignore FileNotFound errors on delete.
- Mission: Fixed the player list and added better module names
- RestAPI: Schema was invalid after recent SRS radio format change.
DCSServerBot Release 3.0.4.23
Improved AFK check:
Players can now be checked for being AFK not only when they are in the slot selection, but also when they sit on the apron. Please consider increasing your AFK times, to give people the chance to cold start, rearm, refuel and taxi. If you look at the main README, servers.yaml, you will see that you can configure several options. All AFK checks are optional anyway.
New plugin "SkyEye"
You also get a new plugin "SkyEye", which you do not need yet (go with the extension instead), but which will be helpful with the upcoming SkyEye release 1.9. Thanks to @dharmab, we can run ahead of schedule already, but I will not spoiler too much of what you will get.
srs_nudge_message in your nodes.yaml / SRS settings,
please delete your DCS-SRS-AutoConnectGameGUI.lua and let the bot recreate it.
I am ashamed but I garbled it a bit. Only relevant, if you overwrote that message.
Enhancements
- 💯 Mission: improved AFK check (see README for details)
- 🆕 New plugin "SkyEye" to upload locations.json (as of v1.9, WIP)
Changes
- ModManager: can download packages now during the uninstallation also (necessary for recreation of install.logs)
- ModManager: performance tuning
- ModManager: changed install.log from cp1252 to utf-8
- Mission: Better messages on mission upload
- MissionStats: /sorties has the same logic now as punishment in regards of death tracking
- Cluster: more stable connection handling on connection issues
- 💯 Cluster: will send an alert now, if a node has crashed
- Core: more robust Discord connection handling.
Bugfixes
- gRPC did not uninstall correctly if not installed via modmanager
- MOTD: delayed message sending did not work (hotfixed)
- SRS: error if ATC frequencies have to be read from the airfield
- SRS: NUDGE_TIME was removed from AutoconnectGameGUI.lua if nudge_message was set
- RealWeather: if ignore_errors was set, the modification chain could have been corrupted. Additional error handling added.
- Multicrew detection can fail if pilot switched slot already
- Music: duplicate songs could be played over each other (hotfixed)
- ModManager: upload pattern match could falsely detect missions as mods
- MizEdit: unsupported operand fixed
- Lardoon: did not evaluate environment variables in path
- Punishment: reslot did not take coalition change into account
- Persistence: could not persists dates before 1.1.1970
- Scheduler: item was not set correct on mission restarts
DCSServerBot Release 3.0.4.22
Enhancements
- 🆕 New extension "HoundTTS"
- 🆕 New extension "Persistence" to persist mission date / time
- Cluster: new command
/node masterto query and change the master - SRS:
/srs ttsadded - SRS:
dcsbot.send_tts(...)added to MSE - SRS: ATC enforcement added with optional punishment
/server configcan change more server settings now- Scheduler: coalition_win added to allow actions based on mission end with win
- MOTD: "delay" added to on_birth
- 💯 Cloud: auto-matching of users enabled for Cloud statistics subscribers
Changes
- 💯 Extensions auto-install the necessary mod now (like Olympus, DSMC, etc).
- 💯 Admin:
/extension enable,/extension disableimproved,/extension list,/extension update,/extension repairand/extension configureadded ⚠️ LotAtc: removed/lotatc install, uninstall, configure, repair(in favor of/extension enable, disable, configure, repair)⚠️ Tacview: removed/tacview install, uninstall, configure, repair(see above)- Mission: Better messages for banned / ban-evading users
- Mission:
/watch addalways asks for a reason - Mission: Add kick option to inappropriate usernames
- Missionstats allows for an embed channel now
- Missionstats: ignore taxiway checks on rubber banding clients.
- Better error handling if intents aren't activated in Discord
- Members will be displayed as mentioning throughout most commands now.
⚠️ Realweather: dropped v1.x support- SRS: more robust player detection
- Cloud: upload linked users to the cloud (WIP)
- Userstats: Removed the coalition locking from
/highscore - ModManager:
/mods downloadcan handle multiple assets in GitHub. - Tournament: Cheat-detection added for people that use multiple accounts.
- Tacview: upload channel option added to
/tacview download - Tacview: removed auto-changing of TacviewRealtimeTelemetry based on playback delay
- Restore can restore in cloud databases now.
- Ignore permission errors in LogAnalyser
- More config options for SRS, LotAtc
⚠️ GDPR: Disabled printing of raw IPs and hashed the /24 values of them instead.- Core: Schema validation disabled after updates to avoid errors
- Core: Updated cluster code.
- Core: Optimized pattern matching on uploads
- Core: allow remote nodes to read the config from remote
- Core: chat commands can be hidden now
Bugfixes
/discord healthcheck: ignore CategoryChannels for counting/squadron addissue with missing rank fixed- Different node versions in a cluster should lead to updates/downgrades.
- Wrong id used on collision detection (hotfixed)
- Fog: thickness needs to be set before visibility (hotfixed)
- LotAtc: transponder schema fixed (hotfixed)
- DashBoard: do not show remote servers on agents after master switch
- DashBoard: was cleared and did not post log messages anymore after exceptions.
- Punishment: Audit events were DMed to users (hotfixed)
- Punishment: removed double ban messages on multiple events
- Punishment: old punishment events were not removed and caused (noop) forgive messages
- Punishment: event "punish" missing to create own punishments in lua
- MizEdit: math / random missing from namespace (thanks chruutvoluzi !)
- Slot / Subslot initialisation to 0 on new joins to fix missing disconnects
- RestAPI: wind_dir caused fraction issue (thanks to @davidp57 for the PR)
- ModManager: recreation of missing install.txt missed directories in some cases.
- Mission: Chat message for move to spectators not correctly formatted.
- Mission: Orig file was not deleted on mission upload when autoadd was true
- Remove coalitions from players if they lost it.
- ModManager: better cleanup of directories on uninstall
- Cloud: error on initial sync
- CreditSystem: foreign key for UCID did not contain update clause
- Cluster: no_master could result in all agent config (hotfixed)
- Restore deleted the restore directory on error.
Please visit my discord server, if you have any questions!
DCSServerBot Release 3.0.4.21
PvP Changes
I made some changes that are of interest for you guys. The bot now not only detects if someone bails out on an engagement (disconnect/reconnect, reslot), but it can also punish that. Look at the Punishment plugin and find a new event "reslot" which you can punish as you prefer. Also, the attacker gets the kill, if the opponent rage quits. This is bound to certain rules, especially timings of shoots or even hits.
Taxiway Takeoff
Many hate it - you can punish it now! You get another new event in your Punishment system: "taxiway_takeoff". This can be for instance punished with a move to spectators or a kick.
New Auto Affinity (WIP)
The bot can now detect your CPU architecture and assign the DCS.exe process, SRS, Olympus, SkyEye, Sneaker, Lardoon (and whatever extension you might use that uses an external program) to specific cores according to their needs. This feature is WIP and still needs testing and probably tuning. But it can help, especially if you use heavy tasks like SkyEye without a cloud API token.
Cluster / Multinode
I made lots of improvements on stability of the multinode system. Thanks to Hitman and - I would say - both of our patience with each other :D, we managed to make this functionality a little bit better again.
I have to thank @engines-wafu for contributing 3 new plugins "Flightplan", "Logbook" and "Logistics". Also @pschilly did a lot of enhancements to the RESTApi, which is highly appreciated.
As the Python community likes to treat me with unwanted updates ... there is an update for PIP available (version 26). Please do NOT update PIP to version 26 until you have updated the bot.
A DCS restart is not necessarily required this time, but I would highly recommend it.
Enjoy this update and report any issues as usual to me.
Changelog 3.0.4.21
Enhancements
- New plugins Flightplan, Logistics and Logbook, (contributed by @engines-wafu )
- Added
dcsbot.getDiscordID(name)to get the discord id inside the MSE lock_on_loadadded to servers.yaml to lock a server for a specific time until the mission is set up.- Competitive:
/trueskill regenerateworks for single users now - ModManager: can upload mods now
- WIP: New auto_affinity feature, which can automatically set the affinity for all used executables, including the bot itself, DCS, SRS, SkyEye, etc.
- Scheduler: can set time-based server passwords now
- Discord: send messages on member join / leave and role changes
- Discord: added react-roles with bot trap and everyone/here ping protection.
- Cloud: Added values to cloud registration to get a better overview on the hardware used
- Mission:
/airbase infoshows MGRS and MagVar now - Mission:
/player mute+/player unmuteadded (in-game commands: -mute / -unmute) - MissionStats: new auto-generated events S_EVENT_CONNECT, S_EVENT_DISCONNECT, S_EVENT_TAXIWAY_TAKEOFF, S_EVENT_GROUND_TAKEOFF
- Punishment: new penalty "taxiway_takeoff"
Changes
- dcs_port and webgui_port are mandatory now in nodes.yaml
⚠️ The owner of the bot (owner_id in bot.yaml) can now run any command unlessrestrict_owneris true.- GameMaster: new output for /message list
- GameMaster:
-ackwill send a message to the admin channel now - RestAPI: new enpoints
/airbase/airbase/warehouse,/airbases(contribution by @sch1lly) - RestAPI: weather info added to
/servers, new endpoint/server/attendance(contribution by @zip9285) - Cloud: http session reconnect improvements
- Punishment: better handling for reslot-events.
- Punishment: award opponent for kill if player crashes or ejects when being attacked
- Punishment: punish disconnects as reslots if people were shot at, disconnected and reconnected shortly after
- Punishment: added auto-generated kill event and S_EVENT_KILL for reslot and crash kills
- Mission: optimised connection handling of players
- Mission:
/infonow displays the ban modal - Mission:
/airbase warehouse=>/warehouse ...commands ⚠️ Mission: player names less than 3 characters will be declined- GameMaster: Disable in-game 'coalition' command, if coalitions is disabled
- MOTD: new filter element
coalitionfor nudge messages - SRS: replace AutoConnectGameGUI.lua if an update has been posted by Ciribob
- Admin: DCS update clears the _downloads directory first to prevent the popup
- Core: New flag Player.connected
- Core: pymgrs fallback removed
- Cluster: Don't run the heartbeat-loop on non clusters
- Cluster: Reworked RPC node-to-node communication
- Cluster: better split brain protection
- Cluster: optimized heartbeat
- Some code cleanups (especially transactions)
Bugfixes
/dcs updatewrong RPC call on remote nodes (hotfixed)- Fix serialization issue with
/docon multinode - Remote calls on extensions did not serialize all return values
- Issue with re-registering of stale nodes (hotfixed)
- Don't disable linkme on already linked accounts (hotfixed)
- CreditSystem: error on achievements if no campaign was running
/historydid not get all events- SkyEye did not rollback potential API keys if they are no longer to be used in instance configs
- Mission upload did not value the "Overwrite" flag
- Wrong default value for tacviewDataCaptureMode fixed
- Autocompletion for servers clashed with managed_by on non-admin commands
- Cloud: removed unnecessary DGSA-unbans
/helpdid not work with nested groups- Race condition with parallel sync and async database updates fixed
- Mission: players_hist did store too many updates
- Greenieboard:
/traps adddid not work anymore due to FK constraint - Greenieboard: default grades were not used
- MissionStats: missing BASE category
- SRS: online display mismatch if RadioInfo structure was not filled
- Removed proxy from IP lookup
DCSServerBot Release 3.0.4.20
Small update due to a library issue with Python 3.14.
DCSServerBot Release 3.0.4.19
I wish you all a Merry Christmas!
Enhancements:
- Scheduler: new feature "clear_maintenance" to clear any maintenance flag on startup.
- Punishment: informative events can be sent to a different channel now (or disabled)
Changes
- Python 3.10 is deprecated now.
- Plugin DBExporter is deprecated now.
- RealWeather: added new scale-factor to the schema
- Voting:
/vote createwill immediately fire, if the server is empty. - Tacview: ignore unknown parameters in the schema validation.
- Permission check for channels improved.
- Better error messages on report errors.
- Cloud: Improved DGSA ban handling to prevent Discord rate limits.
- SRS: Do not overwrite the lotatc_export_port if set in the SRS.cfg already.
- Ban expiration message changed to show relative and absolute times now (DCS restart required!)
Bugfixes
/airbase capture: coalition now mandatory (hotfixed)/airbase xxx: some airbases don't have an ICAO (hotfixed)/traps board: overlapping names fixed- Core: Messages duplication on falsely detected split messages (hotfixed)
- Core: Resent messages can trigger exceptions.
- Coalitions: Typo in coalition detection
- Coalitions:
/missionstatsdid not check coalition membership - Coalition:
/airbase infodid not check coalition membership - Channel ID -1 should not be checked.
- MissionStats: wrong calculation of achievements fixed.
- MissionStats: option to disable the achievements by not providing a SQL
- Competitive:
/trueskill historyset a global grid on all graphs. - Greenieboard: initialization script was not amended to the new init_ids.
- Non-scheduler-managed servers were not auto-started again after a DCS update.
A restart of DCS would be recommended after applying this patch.
DCSServerBot Release 3.0.4.18
Unfortunately there were some issues with the new /airbase commands on maps with a ton of airports like GCW.
I have fixed that now, which needs a restart of your DCS servers to work.
Changes:
- Core: Allow split of UDP-packages to support large messages (> 65507 bytes)
- Core: Socket buffer tuning
- Mission: Warehouse data is uploaded in parallel now.
Bugfixes
- Download of FARPs and CVNs did not work.
- Wrong filename on warehouse uploads.
- MissionStats: title missing
/airbase ...commands did not work in public channels, if only one server was present/vote ...commands did not work in public channels, if only one server was present/airbase infoephemeral didn't work
DCSServerBot Release 3.0.4.17
Enhancements
- 💯 Mission: new commands
/airbase info,/airbase atis,/airbase warehouseand/airbase capture - 💯 Mission: option to download and upload warehouse inventories via Excel
- server.yaml: new parameter
show_atis. If true an ATIS display will be sent to people that jump in slots. - Scheduler: countdown added
- Voting: new discord commands added
/vote create,/vote listand/vote cancel
Changes
⚠️ Renamed/mission atisto/airbase atis/airbase atiscan now work with carriers and FARPs also- Removed Side.SPECTATOR in favor of Side.NEUTRAL
- Profiler: disables max_hung_minutes now when enabled
- Punishment: updated all messages to ASCII layout
- BackupService: can backup subdirectories only now.
⚠️ Scheduler: warn/text renamed to warn/message (auto-migration)
Bugfixes
/mission modifydid accidentally load the original mission (without modifications)- Error in
/server configif stop question was sent. - Scheduler: index error in mission rotate
- Maintenance flag was not read correctly on startup.
- Mission: Key errors in ban messages
- Potential race condition during cluster table initialization.