Beispiel #1
0
        private void Log(DiscordLogLevel level, string message, object data = null)
        {
            if (!IsLogging(level))
            {
                return;
            }

            string log = $"[Discord Extension] [{level.ToString()}]: {message}";

            switch (level)
            {
            case DiscordLogLevel.Debug:
            case DiscordLogLevel.Warning:
                Interface.Oxide.LogWarning(log);
                break;

            case DiscordLogLevel.Error:
                Interface.Oxide.LogError(log);
                break;

            case DiscordLogLevel.Exception:
                Interface.Oxide.LogException($"{log}\n{data}", (Exception)data);
                break;

            default:
                Interface.Oxide.LogInfo(log);
                break;
            }
        }
        /// <summary>
        /// Remove a client from the bot client
        /// If not clients are left bot will shutdown
        /// </summary>
        /// <param name="client">Client to remove from bot client</param>
        public void RemoveClient(DiscordClient client)
        {
            _clients.Remove(client);
            Logger.Debug($"{nameof(BotClient)}.{nameof(RemoveClient)} Client Removed");
            if (_clients.Count == 0)
            {
                ShutdownBot();
                Logger.Debug($"{nameof(BotClient)}.{nameof(RemoveClient)} Bot count 0 shutting down bot");
                return;
            }

            DiscordLogLevel level = DiscordLogLevel.Off;

            for (int index = 0; index < _clients.Count; index++)
            {
                DiscordClient remainingClient = _clients[index];
                if (remainingClient.Settings.LogLevel < level)
                {
                    level = remainingClient.Settings.LogLevel;
                }
            }

            if (level > Settings.LogLevel)
            {
                UpdateLogLevel(level);
            }

            // For now let's not do the removing of intents. It shouldn't be an issue to keep them.
            // GatewayIntents intents = GatewayIntents.None;
            // foreach (DiscordClient exitingClients in _clients)
            // {
            //     intents |= exitingClients.Settings.Intents;
            // }
            //
            // //Our intents have changed. Disconnect websocket and reconnect with new intents.
            // if (intents != Settings.Intents)
            // {
            //     Settings.Intents = intents;
            //     DisconnectWebsocket(true);
            // }
        }
 private void UpdateLogLevel(DiscordLogLevel level)
 {
     Logger.UpdateLogLevel(level);
     Logger.Debug($"{nameof(BotClient)}.{nameof(UpdateLogLevel)} Updating log level from: {Settings.LogLevel.ToString()} to: {level.ToString()}");
     Settings.LogLevel = level;
 }
Beispiel #4
0
 public DiscordLogger(DiscordLogLevel level)
 {
     this.level = level;
 }
Beispiel #5
0
 /// <summary>
 /// Creates a new logger with the given log level
 /// </summary>
 /// <param name="logLevel">Log level of the logger</param>
 public Logger(DiscordLogLevel logLevel)
 {
     _logLevel = logLevel;
 }
Beispiel #6
0
 /// <summary>
 /// Returns true if the logger is logging for the passed log level
 /// </summary>
 /// <param name="level">Log Level to check</param>
 /// <returns>True if the logger is logging for the given log level</returns>
 public bool IsLogging(DiscordLogLevel level)
 {
     return(level >= _logLevel);
 }
Beispiel #7
0
 /// <summary>
 /// Updates the log level for the current logger
 /// </summary>
 /// <param name="level">Level to update the logger to</param>
 public void UpdateLogLevel(DiscordLogLevel level)
 {
     _logLevel = level;
 }