Пример #1
0
        public BenchmarkRuleAction()
        {
            Expression <Action <IContext, string, int, decimal> > expression = (c, s, i, d) => PerformAction(c, s, i, d);
            var element = Element.Action(expression);
            var map     = IndexMap.CreateMap(element.Imports, element.Imports);

            _ruleAction = ExpressionCompiler.CompileAction(element, element.Imports.ToList(), new List <DependencyElement>(), map);

            var compiledRule = new CompiledRule(null, element.Imports, new [] { _ruleAction }, null, map);
            var tuple        = ToTuple("abcd", 4, 1.0m);
            var activation   = new Activation(compiledRule, tuple);

            _actionContext = new ActionContext(Context.Session, activation, CancellationToken.None);
        }
Пример #2
0
        private async Task SendResponse(CompiledRule rule, ISocketMessageChannel channel)
        {
            var msg = rule.GetRandomMessage();

            if (msg == null)
            {
                return;
            }

            // looks as if the bot is typing
            var isTypingState = channel.EnterTypingState();
            // calculate some average typing speed
            // float kph = 15000; // 15k keystrokes per hour
            // float kpm = kph / 60; // keystrokes per minute
            // float kps = kpm / 60; // keystrokes per second.
            float keysPerSec = 6.0f;
            float timeToWait = (1f / keysPerSec) * msg.Length;

            await Task.Delay(TimeSpan.FromSeconds(timeToWait));

            isTypingState.Dispose();
            msg = placeholderHandler.Replace(msg, this);
            await channel.SendMessageAsync(msg);
        }
Пример #3
0
 public void AddOrUpdateCompiledRule(string compiledRuleKey, CompiledRule compiledRule)
 {
     _compileRules.AddOrUpdate(compiledRuleKey, compiledRule, (k, v) => compiledRule);
 }