Example #1
0
        public static string getBotModstring(BotMode c)
        {
            switch (c)
            {
            case BotMode.Classic:
                return("Classic");

            case BotMode.Multibot:
                return("MultiBot");

            case BotMode.Semi:
                return("Semi-Automated");

            case BotMode.Xplayback:
                return("XPlayBack Mod");

            case BotMode.BG:
                return("BG Farming");

            case BotMode.Instance:
                return("Instance Farming");

            default:
                return("None");
            }
        }
Example #2
0
        private IBot _AddBotForMode(BotMode mode, BacktestResult backtestResult = null, PBot pBot = null, TBot tBot = null, IBot bot = null)
        {
            IAccount account;

            switch (mode)
            {
            case BotMode.Live:
                account = LiveAccount;
                break;

            case BotMode.Demo:
                account = DemoAccount;
                break;

            case BotMode.Scanner:
                account = ScannerAccount;
                break;

            case BotMode.Paper:
                account = PaperAccount;
                break;

            default:
                throw new ArgumentException(nameof(mode) + " unknown or is set to more than one mode.");
            }
            if (account == null)
            {
                Debug.WriteLine($"WARNING - _AddBotForMode({mode}) assigned no account");
            }
            return(_AddBot(mode, account: account, backtestResult: backtestResult, pBot: pBot, tBot: tBot, bot: bot));
        }
Example #3
0
 void UnStun()
 {
     rb.angularVelocity = Vector3.zero;
     rb.velocity        = Vector3.zero;
     rb.useGravity      = false;
     botmode            = BotMode.Flipping;
 }
Example #4
0
 public void SetBotActive(bool isBotActive)
 {
     m_botMode = BotMode.NoAction;
     if (isBotActive)
     {
         m_botMode = m_defaultMode;
     }
 }
Example #5
0
        public void StartBotting(BotMode mode, SteamID target, ulong matchId)
        {
            _log.Debug("Checking if the index file contains a newer available index...");

            ParseIndexFile(); // Before we bot, we parse the index file to get the latest available index

            _log.Debug("Starting botting using index {Index}.", _index);

            List <TitanAccount> accounts;

            if (_accounts.TryGetValue(_index, out accounts))
            {
                try
                {
                    Titan.Instance.ThreadManager.StartWatchdog();
                }
                catch (Exception ex)
                {
                    _log.Warning(ex, "Could not start Watchdog thread, starting to report without one!");
                }

                foreach (var acc in accounts)
                {
                    try
                    {
                        Titan.Instance.ThreadManager.Start(mode, acc, target.AccountID, matchId);
                    }
                    catch (Exception ex)
                    {
                        _log.Error(ex, "Could not start reporting for account {Account}: {Message}",
                                   acc.JsonAccount.Username, ex.Message);
                    }
                }
            }
            else
            {
                _log.Error("Could not export accounts for current index {Index}. " +
                           "Does it exist?", _index);
                return;
            }

            if (mode == BotMode.Report)
            {
                Titan.Instance.VictimTracker.AddVictim(target);
            }

            if (!_indexEntries.ContainsKey(_index))
            {
                _indexEntries.Add(_index, TimeUtil.DateTimeToTicks(DateTime.Now.AddHours(6)));
                SaveIndexFile();
            }

            _log.Debug("Index #{Index} has been used. It will be unlocked on {Unlock}. " +
                       "Using index #{NextIndex} for next botting session.",
                       _index, DateTime.Now.AddHours(6).ToLongTimeString(), ++_index);
        }
Example #6
0
 public static void SetMode(this IBot bot, BotMode modeFlag, bool isEnabled = true)
 {
     if (isEnabled)
     {
         bot.Modes |= modeFlag;
     }
     else
     {
         bot.Modes &= ~modeFlag;
     }
 }
        public void SetMode(BotMode mode)
        {
            switch (mode)
            {
            default:
            case BotMode.Idle:
                Mode = "nimbusfox.worldedit.verb.idle";
                break;

            case BotMode.Waiting:
                Mode = "nimbusfox.worldedit.verb.waiting";
                break;
            }
        }
Example #8
0
        private static ConsoleInputEventManager GetConsoleManager(BotMode mode)
        {
            var inputEventManager = new ConsoleInputEventManager();

            inputEventManager.ConsoleKeyDown += (_, key) =>
            {
                if (key == ConsoleKey.Escape)
                {
                    mode.Stop();
                }
            };

            return(inputEventManager);
        }
Example #9
0
 // Stop when colliding with another bot that's stopped
 private void BumpBot(BotMovement botScript)
 {
     if (botScript != null)
     {
         if (botScript.GetState() == BotMode.Stopped)
         {
             anim.SetBool("Walking", false);
             if (navMeshAgent.enabled)
             {
                 navMeshAgent.isStopped = true;
             }
             botMode   = BotMode.Stopped;
             bumpedBot = botScript;
         }
     }
 }
Example #10
0
        public void Start(BotMode mode)
        {
            if (mode == BotMode.Portal)
            {
                Portal();
            }

            if (mode == BotMode.Dust)
            {
                Dust();
            }

            if (mode == BotMode.Debug)
            {
                Debug();
            }
        }
Example #11
0
    public void BotHit(string go)
    {
        if (!botKilled && !Stunned())
        {
            //print(go);
            //if(go == "Hand_Left"){
            //    leftArm.SetActive(false);
            //    brokenLeftArm.transform.parent = null;
            //    brokenLeftArm.SetActive(true);
            //    Destroy(brokenLeftArm, 3f);
            //    brokenLeftArm = null;
            //} else if(go == "Hand_Right") {
            //    rightArm.SetActive(false);
            //    brokenRightArm.transform.parent = null;
            //    brokenRightArm.SetActive(true);
            //    Destroy(brokenRightArm, 3f);
            //    brokenRightArm = null;
            //}

            stunTimer     = stunTime;
            rb.useGravity = true;
            botmode       = BotMode.Stunned;
            health       -= 1;

            if (health < 1)
            {
                botKilled = true;
                gm.SetHealth(1);
                gm.enemiesKilled++;
                gm.SetKillText();
                if (gm.IsLastRound() && gm.enemiesSpawned == gm.enemiesKilled)
                {
                    UnStun();
                    attackTimer = Mathf.Infinity;
                }
                else
                {
                    BreakBot();
                }
            }
            else
            {
                Enemy.PlayOneShot(HurtSound);
            }
        }
    }
Example #12
0
        private static void drawMainMenu()
        {
            Console.Clear();
            drawDuck();

            if (currentBotMode == BotMode.None)
            {
                drawModeSelection();
            }
            else if (canLoad)
            {
                configManager.RefreshConfig();
                quaverManager.ConfigManager.RefreshConfig();

                var map = quaverManager.QuaverBase.GameplayScreen.CurrentMap;

                var  mods       = quaverManager.QuaverBase.GameplayScreen.Ruleset.ScoreProcessor.CurrentMods;
                bool flipInputs = currentBotMode == BotMode.UserReplay && (Mods)Math.Abs(replay.Mods - mods) == Mods.Mirror;

                if (currentBotMode == BotMode.AutoplayReplay)
                {
                    replay = Replay.GenerateAutoplayReplay(map);
                }

                Console.WriteLine($"\n\n~ Playing{(currentBotMode == BotMode.UserReplay ? $" {replay.PlayerName}'s replay on" : string.Empty)} {map.Artist} - {map.Title} [{map.DifficultyName}] by {map.Creator}");

                bot.Start(replay, flipInputs);
            }
            else
            {
                Console.WriteLine("\n\n~ Waiting for player...");
                Console.WriteLine("\n~ Press ESC to change mode.");

                while (!canLoad && !Console.KeyAvailable)
                {
                    Thread.Sleep(150);
                }

                if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape)
                {
                    currentBotMode = BotMode.None;
                }
            }

            drawMainMenu();
        }
Example #13
0
 void FixedUpdate()
 {
     if (!Stunned() && !gm.hasGameEnded)
     {
         if (CheckOrientation())
         {
             botmode = BotMode.Flipping;
             Flip();
         }
         else if (CheckHoverHeight())
         {
             botmode = BotMode.AdjustingHoverHeight;
             AdjustHoverHeight();
             heightAdjusted = true;
         }
         else if (CheckDirection())
         {
             botmode = BotMode.Turning;
             Turn();
         }
         else if (CheckAttackDistance())
         {
             if (heightAdjusted)
             {
                 noiseTimer     = 0;
                 heightAdjusted = false;
             }
             botmode   = BotMode.Hunting;
             huntEnded = false;
             Hunt();
         }
         else
         {
             if (!huntEnded)
             {
                 originalY = intact.transform.localPosition.y;
                 huntEnded = true;
             }
             botmode = BotMode.Attacking;
             Attack();
         }
     }
 }
Example #14
0
 public IEnumerable <IBot> AddBotForModes(BacktestResult backtestResult, BotMode modes)
 {
     if (modes.HasFlag(BotMode.Live))
     {
         yield return(_AddBotForMode(BotMode.Live, backtestResult: backtestResult));
     }
     if (modes.HasFlag(BotMode.Demo))
     {
         yield return(_AddBotForMode(BotMode.Demo, backtestResult: backtestResult));
     }
     if (modes.HasFlag(BotMode.Scanner))
     {
         yield return(_AddBotForMode(BotMode.Scanner, backtestResult: backtestResult));
     }
     if (modes.HasFlag(BotMode.Paper))
     {
         yield return(_AddBotForMode(BotMode.Paper, backtestResult: backtestResult));
     }
 }
Example #15
0
        private static void drawModeSelection()
        {
            Console.Clear();
            drawDuck();

            Console.WriteLine("\n\n~ Select bot mode:");
            Console.WriteLine("\n~ 1. Autoplay");
            Console.WriteLine("~ 2. Replay");

            switch (Console.ReadKey(true).Key)
            {
            case ConsoleKey.D1:
                currentBotMode = BotMode.AutoplayReplay;
                break;

            case ConsoleKey.D2:
                using (var openFileDialog = new OpenFileDialog())
                {
                    openFileDialog.Filter           = "Quaver replay file (*.qr)|*.qr";
                    openFileDialog.RestoreDirectory = true;

                    if (openFileDialog.ShowDialog() == DialogResult.OK)
                    {
                        replay = Replay.Parse(openFileDialog.FileName);
                    }
                    else
                    {
                        goto default;
                    }
                }
                currentBotMode = BotMode.UserReplay;
                break;

            default:
                drawModeSelection();
                break;
            }

            drawMainMenu();
        }
Example #16
0
 void OnTriggerEnter(Collider c)
 {
     if (c.gameObject.CompareTag("Player") && c.attachedRigidbody != null)
     {
         //NOTE: inventory script was deleted if more problems arise. This is what we changed
         //InventoryScript invent = c.attachedRigidbody.gameObject.GetComponent<InventoryScript>();
         if (/*invent != null &&*/ botMode == BotMode.Idle)
         {
             botMode = BotMode.Follow;
             anim.SetBool("BootUp", true);
             BotCollector bc = c.attachedRigidbody.gameObject.GetComponent <BotCollector>();
             if (bc != null)
             {
                 bc.ReceiveBots(1, transform.gameObject);
             }
             followTarget = c.attachedRigidbody.transform;
             //invent.AddBot();
         }
     }
     else if (c.gameObject.CompareTag("BotPart") && botMode == BotMode.Follow)
     {
         BotPart botPart = c.GetComponent <BotPart>();
         if (botPart != null)
         {
             GameObject bot = botPart.GetParentBot();
             if (bot != null)
             {
                 BotMovement botScript = bot.GetComponent <BotMovement>();
                 if (botScript != null)
                 {
                     BumpBot(botScript);
                 }
             }
         }
     }
 }
Example #17
0
        private IBot _AddBot(BotMode mode, BacktestResultHandle backtestResultHandle = null, IAccount account = null, BacktestResult backtestResult = null, PBot pBot = null, TBot tBot = null, IBot bot = null)
        {
            if (account == null)
            {
                throw new ArgumentNullException(nameof(account));
            }

            if (backtestResult == null)
            {
                backtestResult = backtestResultHandle?.Object;
            }

            if (bot == null)
            {
                if (pBot != null)
                {
                    bot = (IBot)pBot.Instantiate();
                }
                else
                {
                    if (tBot == null)
                    {
                        tBot = backtestResult.TBot;
                        //if (backtestResult == null) { backtestResult = backtestResultHandle?.Object; }

                        //var templateType = ResolveType(backtestResult.BotConfigType);
                        ////var templateType = Type.GetType(result.BotConfigType);
                        //if (templateType == null)
                        //{
                        //    throw new NotSupportedException($"Bot type not supported: {backtestResult.BotConfigType}");
                        //}

                        //tBot = (TBot)((JObject)backtestResult.Config).ToObject(templateType);
                    }

                    if (tBot == null)
                    {
                        throw new ArgumentNullException(nameof(tBot));
                    }

                    bot = (IBot)tBot.Create();
                }
            }

            //bot.Modes = mode | BotMode.Paper;
            //var botVM = new BotVM() { Bot = bot };
            //botVM.State = SupervisorBotState.Scanner;

            if (bot.Modes.HasFlag(BotMode.Live))
            {
                throw new Exception("Not ready for live yet");
            }
            bot.Account = account;
            //botVM.AddBacktestResult(backtestResult);

            //bool hasPaper = mode.HasFlag(BotMode.Paper);
            //if (mode != BotMode.Paper)
            //{
            //    mode = mode & ~BotMode.Paper;
            //}

            //if (mode.HasFlag(BotMode.Live)) { LiveBots.Add(bot); Template.LiveBots.Add(tBot.Id); }
            //if (mode.HasFlag(BotMode.Demo)) { DemoBots.Add(bot); Template.DemoBots.Add(tBot.Id); }
            //if (mode.HasFlag(BotMode.Scanner)) { Scanners.Add(bot); Template.Scanners.Add(tBot.Id); }
            //if (mode.HasFlag(BotMode.Paper)) { PaperBots.Add(bot); Template.PaperBots.Add(tBot.Id); }

            //if (mode.HasFlag(BotMode.Live)) { if (LiveBots == null) { LiveBots = new ObservableCollection<IBot>(); } LiveBots.Add(bot); }
            //if (mode.HasFlag(BotMode.Demo)) { if (DemoBots == null) { DemoBots = new ObservableCollection<IBot>(); } DemoBots.Add(bot); }

            if (Bots == null)
            {
                Bots = new ObservableCollection <IBot>();
            }

            if (!BotIds.Contains(bot.Template.Id))
            {
                BotIds.Add(bot.Template.Id);
                Bots.Add(bot);
            }

            //if (mode.HasFlag(BotMode.Paper)) { if (PaperBots==null) { PaperBots = new ObservableCollection<IBot>(); } PaperBots.Add(bot); }

            //if (pBot != null)
            //{
            //    bot.DesiredExecutionState = pBot.DesiredExecutionState;
            //}

            //switch (mode)
            //{
            //    case BotMode.Live:
            //        LiveBots.Add(bot);
            //        break;
            //    case BotMode.Demo:
            //        DemoBots.Add(bot);
            //        break;
            //    case BotMode.Scanner:
            //        Scanners.Add(bot);
            //        break;
            //    case BotMode.Paper:

            //        break;
            //    default:
            //        throw new ArgumentException(nameof(mode));
            //}

            //if (mode.HasFlag(BotMode.Scanner))
            //{
            //    Scanners.Add(bot);
            //}
            //if (mode.HasFlag(BotMode.Live))
            //{
            //    LiveBots.Add(bot);
            //}
            //if (mode.HasFlag(BotMode.Demo))
            //{
            //    DemoBots.Add(bot);
            //}
            //if (mode.HasFlag(BotMode.Paper))
            //{
            //    PaperBots.Add(bot);
            //}

            //Task.Factory.StartNew(() => bot.Start());
            return(bot);
        }
Example #18
0
 private IBot _AddBot(BacktestResult backtestResult, BotMode mode)
 {
     return(_AddBot(mode, backtestResult: backtestResult)); // REFACTOR
 }
Example #19
0
 private void LoadBots2(IEnumerable <IInstantiator> bots, ObservableCollection <IBot> target, BotMode mode)
 {
     foreach (var pBot in bots.ToArray())
     {
         if (pBot == null)
         {
             Debug.WriteLine("WARN - LoadBots2: null instantiator in bots parameter");
             continue;
         }
         var bot = (IBot)pBot.Instantiate();
         // TODO: Use AddBotForModes NEXT
         _AddBotForMode(mode, bot: bot, pBot: pBot as PBot);
     }
 }
Example #20
0
        private Task LoadBots(IEnumerable <IInstantiator> bots, ref ObservableCollection <IBot> target, BotMode mode)
        {
            var target2 = target;

            if (bots == null || !bots.Any())
            {
                return(Task.CompletedTask);
            }

            return(Task.Run(() => LoadBots2(bots, target2, mode)));
        }
Example #21
0
 void Update()
 {
     if (navMeshAgent.isOnOffMeshLink && !jumping)
     {
         StartCoroutine(JumpOffMesh());
     }
     if (botMode == BotMode.Follow)
     {
         if (navMeshAgent.enabled)
         {
             if (Vector3.Distance(FlattenTransform(followTarget.position), FlattenTransform(navMeshAgent.destination)) > 0.5f)
             {
                 if (!navMeshAgent.pathPending)
                 {
                     navMeshAgent.SetDestination((followTarget.position));
                 }
                 anim.SetBool("IsBlock", false);
                 anim.SetBool("Walking", true);
                 if (navMeshAgent.isStopped)
                 {
                     anim.SetBool("Walking", false);
                     botMode = BotMode.Stopped;
                 }
             }
             else if (navMeshAgent.remainingDistance <= 3f)
             {
                 anim.SetBool("Walking", false);
                 navMeshAgent.isStopped = true;
                 botMode = BotMode.Stopped;
             }
         }
     }
     else if (botMode == BotMode.Stopped)
     {
         if (bumpedBot != null)
         {
             if (bumpedBot.GetState() != BotMode.Stopped)
             {
                 bumpedBot = null;
                 botMode   = BotMode.Follow;
             }
         }
         else
         {
             if (Vector3.Distance(FlattenTransform(followTarget.position), FlattenTransform(navMeshAgent.destination)) > 0.5f)
             {
                 navMeshAgent.isStopped = false;
                 anim.SetBool("Walking", true);
                 botMode = BotMode.Follow;
             }
         }
     }
     if (botMode == BotMode.Build)
     {
         if (!jumping)
         {
             if (!readyToBuild)
             {
                 Collider[] colliders = gameObject.GetComponentsInChildren <Collider>();
                 foreach (Collider c in colliders)
                 {
                     c.enabled = false;
                 }
                 if (navMeshAgent.enabled)
                 {
                     navMeshAgent.isStopped = true;
                 }
                 StartCoroutine(JumpToBuild());
             }
             else
             {
                 readyToBuild = false;
                 transform.gameObject.SetActive(false);
             }
         }
     }
     if (gameObject.activeSelf)
     {
         anim.SetFloat("Y", navMeshAgent.velocity.magnitude / navMeshAgent.speed);
     }
 }
Example #22
0
        void OnChannelMessage(object sender, IrcEventArgs e)
        {
            try
            {
                //Message zusammenbauen
                string cbMessage="";

                foreach(string i in e.Data.MessageArray)
                {
                    cbMessage+=i+" ";
                }

                cbMessage=cbMessage.Trim();

                //Message auswerten
                if(cbMessage=="!highscore")
                {
                    if(highscore.Count==0)
                    {
                        SendMessage("Die Highscore ist zur Zeit leer.");
                    }
                    else
                    {
                        SendMessage("Die aktuelle Highscore sieht wie folgt aus:");

                        List<string> highscoreAsList=highscore.GetHighscoreSortedByPoints();
                        foreach(string entry in highscoreAsList)
                        {
                            SendMessage(entry);
                        }
                    }
                }
                else if(cbMessage=="!info")
                {
                    SendMessage("Ich bin Arbiter und wurde 2013 am Lambert Institute von seeseekey entwickelt. Meine Versionskennung lautet {0}.", version);
                }
                else if(cbMessage=="!help")
                {
                    SendMessage("Ich kann folgendes:");
                    SendMessage("!info");
                    SendMessage("!help");
                    SendMessage("!highscore");
                    SendMessage("!hint");
                    SendMessage("!joke");
                    SendMessage("!quiz");
                    SendMessage("!quote");
                }
                else if(cbMessage=="!quote")
                {
                    Quote quote=Quotes[rnd.Next(Quotes.Count)];
                    SendMessage("\"{0}\" von {1}", quote.QuoteText, quote.Author);
                }
                else if(cbMessage=="!joke")
                {
                    Joke joke=Jokes[rnd.Next(Jokes.Count)];
                    SendMessage(joke.JokeText);
                }

                switch(botMode)
                {
                    case BotMode.Idle:
                        {
                            if(cbMessage=="!quiz")
                            {
                                SendMessage(MultiRandomStrings.QuizStarts);
                                botMode=BotMode.Quiz;

                                Quiz.Start(10, "");
                            }

                            break;
                        }
                    case BotMode.Quiz:
                        {
                            if(cbMessage=="!hint")
                            {
                                SendMessage(Quiz.GetCurrentHint());
                            }

                            bool answerIsCorrect=Quiz.CheckMessageToAnswers(cbMessage);

                            if(answerIsCorrect)
                            {
                                highscore.AddPoints(e.Data.Nick, Quiz.CurrentQuestion.Points);
                                SendMessage(Quiz.GetCurrentSuccess());
                                SendMessage("{0} hat die Frage richtig beantwortet und erhält {1} Punkt(e).", e.Data.Nick, Quiz.CurrentQuestion.Points);

                                Thread.Sleep(800);

                                if(Quiz.SetCurrentQuestionAnswered())
                                {
                                    //Spiel zuende
                                    botMode=BotMode.Idle;

                                    SendMessage(MultiRandomStrings.QuizEnds);
                                }
                            }

                            break;
                        }
                }

            }
            catch(Exception ex)
            {
                string msg=String.Format("[{0:D2}:{1:D2}] {2}: {3}", DateTime.Now.Hour, DateTime.Now.Minute, e.Data.Nick, ex.Message.ToString());
                Console.WriteLine(msg);
            }
        }
Example #23
0
        private int _count; // Amount of accounts that successfully reported or commended

        public void Start(BotMode mode, TitanAccount acc, uint target, ulong matchId)
        {
            acc.Feed(new Info
            {
                Mode    = mode,
                Target  = target,
                MatchID = matchId
            });

            _count = 0;

            _log.Debug("Starting {Mode} thread for {Target} in match {MatchId} " +
                       "using account {Account}.", mode.ToString().ToLower() + "ing", target, matchId, acc.JsonAccount.Username);

            _taskDic.Add(acc, Task.Run(() =>
            {
                var timedOut = false;

                try
                {
                    acc.StartTick = DateTime.Now.Ticks;

                    // Timeout on Sentry Account: 3min (so the user has enough time to input the 2FA code), else 60sec.
                    var result = WaitFor <Result> .Run(acc.JsonAccount.Sentry ?
                                                       TimeSpan.FromMinutes(3) : TimeSpan.FromSeconds(60), acc.Start);

                    switch (result)
                    {
                    case Result.Success:
                        _count++;
                        break;

                    case Result.AlreadyLoggedInSomewhereElse:
                        _log.Error("Could not report with account {Account}. The account is " +
                                   "already logged in somewhere else.", acc.JsonAccount.Username);
                        break;

                    case Result.AccountBanned:
                        _log.Warning("Account {Account} has VAC or game bans on record. The report may " +
                                     "have not been submitted.");
                        _count++;
                        break;

                    case Result.TimedOut:
                        _log.Error("Processing thread for {Account} has timed out.");
                        break;

                    case Result.SentryRequired:
                        _log.Error("The account has 2FA enabled. Please set {sentry} to {true} " +
                                   "in the accounts.json file.", "sentry", true);
                        break;

                    case Result.RateLimit:
                        _log.Error("The Steam Rate Limit has been reached. Please try again in a " +
                                   "few minutes.");
                        break;
                    }
                }
                catch (TimeoutException)
                {
                    var timeSpent = new DateTime(DateTime.Now.Ticks - acc.StartTick);

                    _log.Error("Connection to account {Account} timed out. It was not possible to " +
                               "report the target after {Timespan} seconds.", acc.JsonAccount.Username, timeSpent.Second);
                    timedOut = true;
                }
                finally
                {
                    if (timedOut)
                    {
                        acc.Stop();
                    }

                    _taskDic.Remove(acc);
                }
            }));
        }
Example #24
0
 public string[] GetDefaultFGColors(BotMode mode)
 {
     return(FGColors.TryGetValue(mode));
 }
Example #25
0
 public void SetBotMode(BotMode botmode)
 {
     m_botMode = botmode;
 }
Example #26
0
 public TSession(BotMode mode, string name = null)
 {
     this.Mode = mode; this.Name = name ?? mode.ToString();
 }
Example #27
0
 private Task LoadBots(IEnumerable <string> botIds, ref ObservableCollection <IBot> target, BotMode mode)
 {
     return(LoadBots(botIds.Select(id => new PBot {
         Id = id
     }), ref target, mode));
 }
Example #28
0
        private void OnUpdateReceived(object sender, BotApiService.TUpdateEventArgs e)
        {
            var chatId = e.Update.Message.Chat.Id;
            var text = e.Update.Message.Text;
            Trace.WriteLine($"Update: {e.Update.Id}\nMessage: {text}\nFrom: {e.Update.Message.From.UserName}");

            if (string.IsNullOrEmpty(text))
                service.SendMessage(chatId, notSupportedMessage);
            else
            {
                if (text.StartsWith("/"))
                {
                    switch (text)
                    {
                        case "/quotes":
                            mode = BotMode.Quotes; return;
                        case "/answers":
                        default:
                            mode = BotMode.Answers; return;
                    }
                }

                switch(mode)
                {
                    case BotMode.Quotes:
                        service.SendMessage(chatId, GetYodaSpeak(GetQuote(text)));
                        break;
                    case BotMode.Answers:
                    default:
                        service.SendMessage(chatId, GetYodaSpeak(GetAnswer(text)));
                        break;
                }
            }
        }
Example #29
0
 public void SetState(BotMode mode)
 {
     botMode = mode;
 }