Ejemplo n.º 1
0
        public override void Activate()
        {
            BotMethods.AddCommand(new Commandlet("!todo", "HELP", TodoHandler, this));
            BotMethods.AddCommand(new Commandlet("!done", "HELP", DoneHandler, this));

            base.Activate();
        }
Ejemplo n.º 2
0
        private void AddFact(object sender, IrcEventArgs e)
        {
            var sendto = (string.IsNullOrEmpty(e.Data.Channel)) ? e.Data.Nick : e.Data.Channel;

            if (e.Data.MessageArray.Length < 3)
            {
                BotMethods.SendMessage(SendType.Message, sendto, "Too few arguments for 'add'! Try '!help !+fact'.");
                return;
            }

            if (factoidData.Facts.Where(facts => facts.FactKey == e.Data.MessageArray[1]).SingleOrDefault() == null)
            {
                var message = e.Data.Message.Substring(e.Data.MessageArray[0].Length + e.Data.MessageArray[1].Length + 2);
                var fact    = new Fact {
                    FactKey = e.Data.MessageArray[1], FactValue = message
                };

                factoidData.Facts.InsertOnSubmit(fact);
                factoidData.SubmitChanges();

                BotMethods.SendMessage(SendType.Message, sendto, "New Fact '" + fact.FactKey + "' learned. Activate it with !" + fact.FactKey + ".");
            }
            else
            {
                BotMethods.SendMessage(SendType.Message, sendto, "Sorry, I know that fact already.");
            }
        }
        void BotEvents_OnChannelMessage(object sender, IrcEventArgs e)
        {
            if (!e.Data.Message.ToLower().Contains(BotMethods.Nickname.ToLower()))
            {
                return;
            }

            var msg = e.Data.Message.ToLower().Trim().StartsWith(BotMethods.Nickname.ToLower())
                             ? e.Data.Message.Trim().Substring(BotMethods.Nickname.Length + 1)
                             : e.Data.Message.Trim();
            User myUser;

            if (myUsers.ContainsKey(e.Data.Nick))
            {
                myUser = myUsers[e.Data.Nick];
            }
            else
            {
                myUser = new User(e.Data.Nick, myAimlBot);
                myUser.Predicates.addSetting("name", e.Data.Nick);

                myUsers.Add(e.Data.Nick, myUser);
            }
            var r   = new Request(msg, myUser, myAimlBot);
            var res = myAimlBot.Chat(r);

            BotMethods.SendMessage(SendType.Message, e.Data.Channel, res.Output);
        }
Ejemplo n.º 4
0
        public string CreateWebRequest(string request, string url)
        {
            Uri          uri = new Uri(url);
            WebResponse  response;
            StreamReader reader;

            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
                req.CookieContainer = new CookieContainer();
                req.CookieContainer.SetCookies(uri, request.Replace(";", ","));
                req.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AcceptAllCertifications);
                response = req.GetResponse();
                reader   = new StreamReader(response.GetResponseStream());
                string result = reader.ReadToEnd();
                reader.Close();
                response.Close();
                return(result);
            }
            catch (Exception ex)
            {
                BotMethods.WriteLine(ex.ToString());
            }
            return("error");
        }
Ejemplo n.º 5
0
        public override void Activate()
        {
            BotMethods.AddCommand(new Commandlet("!calc", "!calc <function> calculates plenty of different equations, different backends are used. Here are some working Examples: 3*3*3, 20!, 1km^3 in teaspoons, x*(x+2)=15, 2*Pi, 1 USD in CHF, three times four, A = [1, 2, 3]; B=4; A*B, unidrnd(10), S = [2,1,4;3,2,2;-2,2,3]; D = diag(diag(S),0)", CalculateHandler, this));
            BotMethods.AddCommand(new Commandlet("!eval", "!eval <function> calculates plenty of different equations, different backends are used. eval returns not only the result but the whole equation again. Here are some working Examples: 3*3*3, 20!, 1km^3 in teaspoons, x*(x+2)=15, 2*Pi, 1 USD in CHF, three times four, A = [1, 2, 3]; B=4; A*B, unidrnd(10), S = [2,1,4;3,2,2;-2,2,3]; D = diag(diag(S),0)", EvaluateHandler, this));

            base.Activate();
        }
Ejemplo n.º 6
0
        public override void Activate()
        {
            BotMethods.AddCommand(new Commandlet("!time", "The command !time givey the current time", NowHandler, this, CommandScope.Both));
            BotMethods.AddCommand(new Commandlet("!countdown", "The command !time gives the current time", CountdownHandler, this, CommandScope.Public, "access_time_countdown"));

            base.Activate();
        }
Ejemplo n.º 7
0
 public static Dictionary <int, int> GetMapCoords()
 {
     if (_mapCoords == null || _mapCoords.Count <= 2)
     {
         var _xList = new List <int>();
         var _yList = new List <int>();
         for (int x = 0; x < 600; x++)
         {
             _xList.Add(x);
         }
         for (int y = -300; y < 300; y++)
         {
             _yList.Add(y);
         }
         try
         {
             foreach (var xItem in _xList)
             {
                 foreach (var yItem in _yList)
                 {
                     if (!_mapCoords.ContainsKey(xItem))
                     {
                         _mapCoords.Add(xItem, yItem);
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             BotMethods.WriteLine(ex.ToString());
         }
     }
     return(_mapCoords);
 }
        private async Task <DialogTurnResult> DeleteOrderStep(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            stepContext.Values["choise"] = ((FoundChoice)stepContext.Result).Value;
            var text = stepContext.Values["choise"];

            if (text.ToString().ToLower() == "ja")
            {
                var bufferOrder = obj;
                var order       = bufferOrder;

                DeleteOrder(order, this.botConfig.Value.ServiceBusConnectionString);

                DeleteOrderforSalaryDeduction(bufferOrder, this.botConfig.Value.ServiceBusConnectionString);
                BotMethods.DeleteMoney(bufferOrder, weekDaysEN[indexer], this.botConfig.Value.StorageAccountUrl, this.botConfig.Value.StorageAccountKey, this.botConfig.Value.ServiceBusConnectionString);

                await stepContext.Context.SendActivityAsync(MessageFactory.Text(deletDialogDeleteSucess), cancellationToken);

                await stepContext.EndDialogAsync();

                return(await stepContext.BeginDialogAsync(nameof(OverviewDialog)));
            }
            else
            {
                await stepContext.Context.SendActivityAsync(MessageFactory.Text(deletDialogDeleteSucess), cancellationToken);

                await stepContext.EndDialogAsync(cancellationToken : cancellationToken);

                return(await stepContext.BeginDialogAsync(nameof(OverviewDialog), null, cancellationToken));
            }
        }
        /// <summary>
        /// Deletes the orderfor salary deduction.
        /// </summary>
        /// <param name="order">The order.</param>
        /// <param name="serviceBusConnectionString">The service bus connection string.</param>
        public void DeleteOrderforSalaryDeduction(Order order, string serviceBusConnectionString)
        {
            SalaryDeduction salaryDeduction = new SalaryDeduction();
            var             dayId           = order.Date.Date.DayOfYear;

            salaryDeduction = JsonConvert.DeserializeObject <SalaryDeduction>(BotMethods.GetDocument("salarydeduction", "orders_" + dayId.ToString() + "_" + DateTime.Now.Year + ".json", this.botConfig.Value.StorageAccountUrl, this.botConfig.Value.StorageAccountKey));
            var collection = salaryDeduction.Order.FindAll(x => x.Name == order.Name);
            var temp       = collection.FindAll(x => x.CompanyStatus == order.CompanyStatus);

            salaryDeduction.Order.Remove(temp[temp.Count - 1]);

            try
            {
                BotMethods.PutDocument("salarydeduction", "orders_" + dayId.ToString() + "_" + DateTime.Now.Year.ToString() + ".json", JsonConvert.SerializeObject(salaryDeduction), "q.planbutlerupdatesalary", serviceBusConnectionString);
            }
            catch // enters if blob dont exist
            {
                List <Order> orders = new List <Order>();

                salaryDeduction.Daynumber = dayId;
                salaryDeduction.Name      = "SalaryDeduction";

                orders.Add(order);
                salaryDeduction.Order = orders;

                BotMethods.PutDocument("salarydeduction", "orders_" + dayId.ToString() + "_" + DateTime.Now.Year.ToString() + ".json", JsonConvert.SerializeObject(salaryDeduction), "q.planbutlerupdatesalary", serviceBusConnectionString);
            }
        }
Ejemplo n.º 10
0
        private async Task <DialogTurnResult> SendPictureStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            stepContext.Values["restaurant"] = ((FoundChoice)stepContext.Result).Value;
            string restaurant = stepContext.Values["restaurant"].ToString();

            var planDialogNoMenuCard1 = MessageFactory.Text(string.Format(planDialogNoMenuCard, restaurant));
            var planDialogMenuCard1   = MessageFactory.Text(string.Format(planDialogMenuCard, restaurant));

            var picture = BotMethods.GetDocument("pictures", restaurant.Replace(' ', '_') + ".txt", this.botConfig.Value.StorageAccountUrl, this.botConfig.Value.StorageAccountKey);

            if (!picture.Contains("BlobNotFound"))
            {
                await stepContext.Context.SendActivityAsync(planDialogMenuCard1, cancellationToken);

                await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(new Attachment("image/png", picture)), cancellationToken);
            }
            else
            {
                await stepContext.Context.SendActivityAsync(planDialogNoMenuCard1, cancellationToken);
            }

            return(await stepContext.PromptAsync(nameof(ChoicePrompt), new PromptOptions
            {
                Prompt = MessageFactory.Text(planDialogOtherMenuCard),
                Choices = ChoiceFactory.ToChoices(new List <string> {
                    planDialogYes, planDialogNo
                }),
                Style = ListStyle.HeroCard,
            }));
        }
Ejemplo n.º 11
0
 private void SaveData()
 {
     File.WriteAllText(Path.Combine(BotMethods.GetCommandInstanceDataPath(this, this), "disabled-commands.json"), JsonConvert.SerializeObject(disabledCommands));
     File.WriteAllText(Path.Combine(BotMethods.GetCommandInstanceDataPath(this, this), "renamed-commands.json"), JsonConvert.SerializeObject(renamedCommands));
     File.WriteAllText(Path.Combine(BotMethods.GetCommandInstanceDataPath(this, this), "administrators.json"), JsonConvert.SerializeObject(administrators));
     File.WriteAllText(Path.Combine(BotMethods.GetCommandInstanceDataPath(this, this), "other-settings.json"), JsonConvert.SerializeObject(OtherSettings));
 }
        private void GetVotingListCompleted(IEnumerable <VotingDescriptor> votings, Exception exception)
        {
            if (exception == null)
            {
                StringTable table = new StringTable();

                table.AddColumn("No");
                table.AddColumn("Title");
                table.AddColumn("From");
                table.AddColumn("Until");
                table.AddColumn("Status");
                table.AddColumn("Votes");

                int number = 0;

                foreach (VotingDescriptor voting in votings.OrderBy(v => v.VoteFrom).Take(8))
                {
                    table.AddRow(number.ToString(), voting.Title.Text, voting.VoteFrom.ToShortDateString(), voting.VoteUntil.ToShortDateString(), voting.Status.Text(), voting.EnvelopeCount.ToString());
                    number++;
                }

                BotMethods.SendMessage(SendType.Message, Channel, "Pi-Vote: Voting list:");
                OutTable(table);
            }
            else
            {
                BotMethods.SendMessage(SendType.Message, Channel, "Pi-Vote: " + exception.Message);
            }

            OnCompleted();
        }
Ejemplo n.º 13
0
 private void SeaMapBrowser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
 {
     if (!e.IsLoading)
     {
         if (SM_Adr == "http://www.armadabattle.com/play")
         {
             JavascriptResponse        response;
             Task <JavascriptResponse> task = SeaMapBrowser.EvaluateScriptAsync("(function(){return myID;})();");
             task.GetAwaiter().OnCompleted(delegate()
             {
                 response  = task.Result;
                 string id = (response.Success && (string)response.Result != "null" ? (string)response.Result : "0");
                 MainForm.mainForm.FreezeAndCheckLicense(id);
                 Task <bool> t = BotMethods.InitMainFunctions();
                 t.GetAwaiter().OnCompleted(delegate()
                 {
                     MainForm.mainForm.Log(t.Result ? "Succesfully loaded functions" : "Error while loading functions");
                     BotSession.isLoggedin = true;
                 });
             });
         }
         else if (SM_Adr == "http://www.armadabattle.com/homepage")
         {
             SeaMapBrowser.Load("http://www.armadabattle.com/play");
             MainForm.mainForm.Log("Loading sea map...");
         }
         SeaMapBrowser.LoadingStateChanged -= SeaMapBrowser_LoadingStateChanged;
     }
 }
Ejemplo n.º 14
0
        public override void Deactivate()
        {
            BotMethods.RemoveCommand("!todo");
            BotMethods.RemoveCommand("!done");

            base.Deactivate();
        }
Ejemplo n.º 15
0
        public void HandleAlpha(object sender, IrcEventArgs e)
        {
            string target = (string.IsNullOrEmpty(e.Data.Channel)) ? e.Data.Nick : e.Data.Channel;

            var document = new XDocument();
            var request  = WebRequest.Create(RequestBase + InputQuery + HttpUtility.UrlEncode(string.Join(" ", e.Data.MessageArray.Skip(1))) + AmpersAnd + AppIDQuery) as HttpWebRequest;

            if (request == null)
            {
                return;
            }

            request.UserAgent = "Mozilla/5.0 (Huffelpuff)";
            document          = XDocument.Load(request.GetResponse().GetResponseStream());

            foreach (var pod in document.Descendants("pod"))
            {
                string id    = pod.Attribute("id").Value;
                string title = pod.Attribute("title").Value;

                foreach (var subpod in pod.Descendants("subpod"))
                {
                    string plaintext = subpod.Descendants("plaintext").First().Value.Replace("\n", " ");
                    if (!string.IsNullOrWhiteSpace(plaintext))
                    {
                        BotMethods.SendMessage(SendType.Message, target, title + ": " + plaintext);
                    }
                }
            }
        }
Ejemplo n.º 16
0
        private void SeenCommand(object sender, IrcEventArgs e)
        {
            lock (seenData)
            {
                string destination = (string.IsNullOrEmpty(e.Data.Channel)) ? e.Data.Nick : e.Data.Channel;

                if (e.Data.MessageArray.Length > 1)
                {
                    var result = seenData.SeenEntries.Where(s => s.Nick == e.Data.MessageArray[1]).FirstOrDefault();
                    if (result != null)
                    {
                        if (result.OnStatus)
                        {
                            BotMethods.SendMessage(SendType.Message, destination, "The nick '" + e.Data.MessageArray[1] + "' is on right now (Last Action: " + result.LastAction + " (" + result.LastSeenTime + ") Lastmessage: " + result.LastMessage + " !seen#: " + result.TimesSeen + ")");
                        }
                        else
                        {
                            BotMethods.SendMessage(SendType.Message, destination, "The nick '" + e.Data.MessageArray[1] + "' was last seen at " + result.LastSeenTime + " (Last Action: " + result.LastAction + " Lastmessage: " + result.LastMessage + " !seen#: " + result.TimesSeen + ")");
                        }
                        result.TimesSeen++;
                    }
                    else
                    {
                        BotMethods.SendMessage(SendType.Message, destination, "The nick '" + e.Data.MessageArray[1] + "' was never seen");
                    }
                }
                else
                {
                    BotMethods.SendMessage(SendType.Message, destination, "Seen " + seenData.SeenEntries.Count() + " unique nicknames. Use !seen <nick> for query.");
                }

                SaveDb();
            }
        }
Ejemplo n.º 17
0
        private async Task RollDice(MessageCreateEventArgs e, int numRolls, int diceValue)
        {
            var results = Enumerable.Range(0, numRolls).Select(_ => random.Next(diceValue) + 1).ToList();

            if (results.Count == 1)
            {
                await BotMethods.SendMessage(this, new SendMessageEventArgs {
                    Message    = IntToRegionalIndicator(results.Single()),
                    Channel    = e.Channel,
                    LogMessage = "RollSuccessSingle"
                });
            }
            else
            {
                var sb = new StringBuilder();
                sb.AppendLine($"The results of the {numRolls} dice-rolls are:");
                sb.AppendLine("```");
                for (int i = 0; i < numRolls; ++i)
                {
                    sb.Append(results[i].ToString().PadLeft(8, ' '));
                    if (i % 5 == 4)
                    {
                        sb.AppendLine();
                    }
                }
                sb.AppendLine("\n```");
                await BotMethods.SendMessage(this, new SendMessageEventArgs {
                    Message    = sb.ToString(),
                    Channel    = e.Channel,
                    LogMessage = "RollSuccessMultiple"
                });
            }
        }
        private void DetectTrigger(object sender, IrcEventArgs e)
        {
            var sendto = (string.IsNullOrEmpty(e.Data.Channel)) ? e.Data.Nick : e.Data.Channel;

            if (e.Data.MessageArray.Length > 1)
            {
                var lang = DetectLanguage(e.Data.Message.Substring(8));
                if (languages.ContainsKey(lang))
                {
                    string natlang;
                    try
                    {
                        natlang = TranslateText("This Text was in " + languages[lang] + ".", "en", lang);
                    }
                    catch (Exception)
                    {
                        natlang = "";
                    }
                    BotMethods.SendMessage(SendType.Message, sendto, "This Text was in " + languages[lang] + " - " + natlang);
                }
            }
            else
            {
                BotMethods.SendMessage(SendType.Message, sendto, "Usage to detect the language is !detect <some foreign text>");
            }
        }
Ejemplo n.º 19
0
        public override void Deactivate()
        {
            BotMethods.RemoveCommand("!time");
            BotMethods.RemoveCommand("!countdown");

            base.Deactivate();
        }
Ejemplo n.º 20
0
        public async Task HandleMessageListener(MessageCreateEventArgs e)
        {
            await semaphore.WaitAsync();

            if (currentChannel != null && e.Channel == currentChannel)
            {
                if (!eliminatedUsers.Contains(e.Author))
                {
                    var    alphabetRegex  = new Regex("[^A-Z]");
                    string messageText    = alphabetRegex.Replace(e.Message.Content.ToUpper(), "");
                    string expectedAnswer = alphabetRegex.Replace(currentPuzzle.Phrase.ToUpper(), "");
                    if (messageText == expectedAnswer)
                    {
                        currentChannel = null;
                        eliminatedUsers.Clear();
                        lastWinningMessage = e.Message;
                        await BotMethods.SendMessage(this, new SendMessageEventArgs {
                            Message    = $"Congratulations to {e.Author.Mention} for getting the correct answer! Thanks for playing!",
                            Channel    = e.Channel,
                            LogMessage = "WheelOfFortuneGameWin"
                        });
                    }
                    else
                    {
                        eliminatedUsers.Add(e.Author);
                        await e.Message.CreateReactionAsync(DiscordEmoji.FromUnicode("❌"));
                    }
                }
            }
            semaphore.Release();
        }
Ejemplo n.º 21
0
        public string CreateWebClientRequest(string url)
        {
            WebClient _client = new WebClient()
            {
                Encoding = Encoding.UTF8
            };
            string result = "";

            try
            {
                result = _client.DownloadString(url);
            }
            catch (Exception ex)
            {
                BotMethods.WriteLine("Could not connect to request Url!\n" + ex.Message);
            }
            finally
            {
                if (_client != null)
                {
                    _client.Dispose();
                }
            }
            return(result);
        }
        private void GetResultComplete(VotingResult result, IDictionary <Guid, VoteReceiptStatus> voteReceiptsStatus, Exception exception)
        {
            if (exception == null)
            {
                var table = new StringTable();

                table.SetColumnCount(2);

                table.AddRow(result.Title.Text, string.Empty);
                table.AddRow("Total Ballots", result.TotalBallots.ToString());
                table.AddRow("Invalid Ballots", result.InvalidBallots.ToString());
                table.AddRow("Valid Ballots", result.ValidBallots.ToString());

                foreach (var question in result.Questions)
                {
                    table.AddRow(question.Text.Text, string.Empty);

                    foreach (var option in question.Options)
                    {
                        table.AddRow(option.Text.Text, option.Result.ToString());
                    }
                }

                BotMethods.SendMessage(SendType.Message, Channel, "Pi-Vote: Result of voting:");
                OutTable(table);
            }
            else
            {
                BotMethods.SendMessage(SendType.Message, Channel, "Pi-Vote: " + exception.Message);
            }

            OnCompleted();
        }
Ejemplo n.º 23
0
 public static void CheckTasks()
 {
     if (UseTaskSystem && Tasks.Count > 0 && Tasks.ContainsKey(currentID) && (Tasks[currentID].startTime - DateTime.Now).TotalSeconds > 0)
     {
         try
         {
         }
         catch (Exception)
         {
         }
     }
     else if ((Tasks[currentID].startTime - DateTime.Now).TotalSeconds <= 0 || !Tasks.ContainsKey(currentID) && Tasks.Count > 0)
     {
         var _newTask = Tasks.Values.First();
         currentID          = Tasks.Keys.First();
         _newTask.startTime = DateTime.Now;
         ChangeTask(_newTask.type);
         if (_newTask.type == "bm" && Tasks.Count > 0 && Account.OnRaid)
         {
             BotSettings.leaveBM    = true;
             BotSettings.autoJoinBM = false;
         }
         if (_newTask.type == "raid" && Tasks.Count > 0 && Account.OnBM)
         {
             BotSettings.leaveBM      = true;
             BotSettings.autoJoinRaid = false;
         }
         BotMethods.WriteLine("Starting next Task.");
     }
 }
        private void GetVotingListCompleted(IEnumerable <VotingDescriptor> votings, Exception exception)
        {
            if (exception == null)
            {
                var votingsInOrder = votings.OrderBy(v => v.VoteFrom);

                if (votingNumber >= votingsInOrder.Count())
                {
                    BotMethods.SendMessage(SendType.Message, Channel, "Pi-Vote: Voting number out of range.");
                }
                else
                {
                    var voting = votingsInOrder.ElementAt(votingNumber);

                    if (voting.Status == VotingStatus.Finished)
                    {
                        BotMethods.SendMessage(SendType.Message, Channel, "Pi-Vote: Tallying voting " + voting.Title.Text + ".");

                        Client.ActivateVoter();
                        Client.GetResult(voting.Id, new List <Signed <VoteReceipt> >(), 1, GetResultComplete);
                    }
                    else
                    {
                        BotMethods.SendMessage(SendType.Message, Channel, "Pi-Vote: Cannot tally " + voting.Title.Text + " at this time.");
                    }
                }
            }
            else
            {
                BotMethods.SendMessage(SendType.Message, Channel, "Pi-Vote: " + exception.Message);
            }
        }
Ejemplo n.º 25
0
        public override void Deactivate()
        {
            BotMethods.RemoveCommand("!calc");
            BotMethods.RemoveCommand("!eval");

            base.Deactivate();
        }
        public override void Activate()
        {
            BotMethods.AddCommand(new Commandlet("!kick", "kicks an annyoing user", KickUser, this));
            BotMethods.AddCommand(new Commandlet("!ban", "ban an annyoing user", BanUser, this));

            base.Activate();
        }
Ejemplo n.º 27
0
        void BotEvents_OnQueryMessage(object sender, IrcEventArgs e)
        {
            try
            {
                string sendto = (string.IsNullOrEmpty(e.Data.Channel)) ? e.Data.Nick : e.Data.Channel;

                if (e.Data.MessageArray.Length <= 0 || !e.Data.MessageArray[0].StartsWith("!"))
                {
                    return;
                }

                var fact = factoidData.Facts.Where(facts => facts.FactKey == e.Data.MessageArray[0].Substring(1)).SingleOrDefault();

                if (fact != null)
                {
                    fact.HitCount++;
                    var answer = fact.FactValue;
                    var count  = 0;
                    foreach (var parameter in e.Data.MessageArray.Skip(1))
                    {
                        count++;
                        answer = answer.Replace("%" + count, parameter);
                    }
                    BotMethods.SendMessage(SendType.Message, sendto, answer);
                }
                factoidData.SubmitChanges();
            }
            catch (Exception exception)
            {
                Log.Instance.Log(exception);
            }
        }
        public override void Deactivate()
        {
            BotMethods.RemoveCommand("!kick");
            BotMethods.RemoveCommand("!ban");

            base.Deactivate();
        }
Ejemplo n.º 29
0
        private async Task <DialogTurnResult> GetMoneyStepAsync2(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            stepContext.Values["Choise"] = ((FoundChoice)stepContext.Result).Value;

            if (stepContext.Values["Choise"].ToString().ToLower() == "ja")
            {
                try
                {
                    var      lastmonth = DateTime.Now.Month - 1;
                    MoneyLog money     = JsonConvert.DeserializeObject <MoneyLog>(BotMethods.GetDocument("moneylog", "money_" + lastmonth.ToString() + "_" + DateTime.Now.Year + ".json", this.botConfig.Value.StorageAccountUrl, this.botConfig.Value.StorageAccountKey));

                    var userId = money.User.FindIndex(x => x.Name == (string)stepContext.Values["name"]);

                    var creditDialog_LastMonthDepts1 = MessageFactory.Text(string.Format(creditDialogLastMonthDepts, money.User[userId].Owe));
                    if (userId != -1)
                    {
                        await stepContext.Context.SendActivityAsync(creditDialog_LastMonthDepts1, cancellationToken);
                    }
                    else
                    {
                        await stepContext.Context.SendActivityAsync(MessageFactory.Text(creditDialogNoBillLastMonth), cancellationToken);
                    }
                }
                catch
                {
                    await stepContext.Context.SendActivityAsync(MessageFactory.Text(creditDialogNoBill), cancellationToken);
                }
            }

            await stepContext.EndDialogAsync();

            return(await stepContext.BeginDialogAsync(nameof(OverviewDialog)));
        }
Ejemplo n.º 30
0
        private void Stats(IrcEventArgs e, TimeSpan timeframe)
        {
            var posts   = 0;
            var groups  = new Dictionary <string, int>();
            var posters = new Dictionary <string, int>();

            foreach (var @group in nntpCache)
            {
                foreach (var article in @group.Value.Where(article => article.Value.Header.Date > (DateTime.Now - timeframe)))
                {
                    posts++;
                    if (!groups.ContainsKey(@group.Key))
                    {
                        groups.Add(@group.Key, 0);
                    }
                    groups[@group.Key]++;
                    if (!posters.ContainsKey(article.Value.Header.From))
                    {
                        posters.Add(article.Value.Header.From, 0);
                    }
                    posters[article.Value.Header.From]++;
                }
            }
            BotMethods.SendMessage(SendType.Message, e.Data.Channel, "In the last 24hours there have been (at least) " + posts + " posts in " + groups.Count + " groups by " + posters.Count + " posters in FMS.");
        }