private async void ExecuteCSharpScript(string code)
        {
            //Kimimaru: Store the default console output stream
            TextWriter defaultOut = Console.Out;

            bool prevIgnoreConsoleLogVal = BotProgram.MsgHandler.IgnoreConsoleLog;

            try
            {
                //Kimimaru: Output any Console output to the chat
                //To do this, we're overriding the Console's output stream
                using (BotWriter writer = new BotWriter())
                {
                    Console.SetOut(writer);
                    BotProgram.MsgHandler.SetIgnoreConsoleLog(true);

                    var script = await CSharpScript.RunAsync(code, ScriptCompileOptions);

                    Console.SetOut(defaultOut);
                    BotProgram.MsgHandler.SetIgnoreConsoleLog(prevIgnoreConsoleLogVal);
                }
            }
            catch (CompilationErrorException exception)
            {
                BotProgram.MsgHandler.QueueMessage($"Compiler error: {exception.Message}");
            }
            //Regardless of what happens, return the output stream to the default
            finally
            {
                Console.SetOut(defaultOut);
                BotProgram.MsgHandler.SetIgnoreConsoleLog(prevIgnoreConsoleLogVal);
            }
        }
Пример #2
0
        protected async void ExecuteCSharpScript(string code)
        {
            //Store the default console output stream
            TextWriter defaultOut = Console.Out;

            bool prevIgnoreConsoleLogVal = DataContainer.MessageHandler.LogToConsole;

            try
            {
                //Output any Console output to the chat
                //To do this, we're overriding the Console's output stream
                using (BotWriter writer = new BotWriter(DataContainer.MessageHandler))
                {
                    Console.SetOut(writer);
                    DataContainer.MessageHandler.SetLogToConsole(false);

                    var script = await CSharpScript.RunAsync(code, ScriptCompileOptions);

                    Console.SetOut(defaultOut);
                    DataContainer.MessageHandler.SetLogToConsole(prevIgnoreConsoleLogVal);
                }
            }
            catch (CompilationErrorException exception)
            {
                QueueMessage($"Compiler error: {exception.Message}");
            }
            //Regardless of what happens, return the output stream to the default
            finally
            {
                Console.SetOut(defaultOut);
                DataContainer.MessageHandler.SetLogToConsole(prevIgnoreConsoleLogVal);
            }
        }