/// <summary> /// Automatically gives operator status using QL's internal op system to all of the server's /// current players who are SST users with userlevel Admin or higher. /// </summary> public async Task AutoOpActiveAdmins() { if (!_sst.IsMonitoringServer) { return; } var cfgHandler = new ConfigHandler(); var cfg = cfgHandler.ReadConfiguration(); if (!cfg.CoreOptions.autoOpAdmins) { return; } var userDb = new DbUsers(); var allUsers = userDb.GetAllUsers(); foreach (var u in allUsers.Where(u => _sst.ServerInfo.CurrentPlayers.ContainsKey(u.Name))) { if (u.AccessLevel <= UserLevel.SuperUser) { continue; } var id = GetPlayerId(u.Name); if (id == -1) { continue; } await _sst.QlCommands.SendToQlAsync(string.Format("op {0}", id), false); Log.Write(string.Format("Auto-opping {0} (user level: {1})", u.Name, u.AccessLevel), _logClassType, _logPrefix); } }
/// <summary> /// Executes the specified command asynchronously. /// </summary> /// <param name="c">The command argument information.</param> /// <returns><c>true</c> if the command was successfully executed, otherwise <c>false</c>.</returns> public async Task <bool> ExecAsync(Cmd c) { var userDb = new DbUsers(); var allUsers = userDb.GetAllUsers(); var sb = new StringBuilder(); foreach (var u in allUsers.Where(u => _sst.ServerInfo.CurrentPlayers.ContainsKey(u.Name))) { sb.Append(string.Format("^7{0} (^5{1}^7), ", u.Name, u.AccessLevel)); } StatusMessage = string.Format("^5Access levels: {0}", sb.ToString().TrimEnd(',', ' ')); await SendServerSay(c, StatusMessage); return(true); }