Example #1
0
        private static string Process(Message message)
        {
            var inputText = message.Text;

            if (inputText == "/start")
            {
                Log.Information("Started new chat with {User}", message.MessageId, message.From.Username);
                return("Привет, меня зовут Сифон и я <i>алкоголик</i> матершинник. Напиши мне что-нибудь, а я в ответ буду материться - это все, что мне под силу.");
            }

            if (string.IsNullOrWhiteSpace(inputText))
            {
                Log.Warning("Empty message #{MessageId} from {User} '{Text}'", message.MessageId, message.From.Username, message.Text);
                return("Скажи хоть что-нибудь");
            }

            ResultData result;

            while (true)
            {
                result = Engine.Process(inputText);
                if (result.PossibleChanges == 0)
                {
                    Log.Warning("Nothing to reply to message #{MessageId} from {User} '{Text}'", message.MessageId, message.From.Username, message.Text);
                    return("Тут ловить нечего, давай посложнее чего!");
                }

                if (result.PerformedChanges > 0)
                {
                    break;
                }
            }

            var renderer = new BotHtmlResultRenderer();

            result.Render(renderer);
            var outputText = renderer.Result;

            if (string.IsNullOrWhiteSpace(outputText))
            {
                return("Эх, не вышло ничего у меня");
            }

            Log.Information("Replied to message #{MessageId} from {User} '{Text}'", message.MessageId, message.From.Username, message.Text);
            return(outputText);
        }
Example #2
0
        static void Main(string[] args)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            Console.InputEncoding  = Encoding.GetEncoding(1251);
            Console.OutputEncoding = Encoding.UTF8;

            var engine = new SyphonEngine(Preset.PetrovichRu, Level.L3, true);

            while (true)
            {
                using (CLI.WithForeground(ConsoleColor.Magenta))
                {
                    Console.Write(">");
                }

                var str = Console.ReadLine();
                var res = engine.Process(str);

                Console.WriteLine();
                res.Render(new ConsoleResultRenderer());
            }
        }