Ejemplo n.º 1
0
 // Update is called once per frame
 void Update()
 {
     if (!s.agent.isMoving && StatsUtils.SamplePoisson(jumpsPerSecond * Time.deltaTime) > 0)
     {
         animator.SetTrigger("DoJump");
     }
 }
Ejemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        float expectedZombiesInTimePeriod = expectedZombiesPerSecond * Time.deltaTime;
        int   numToSpawn = StatsUtils.SamplePoisson(expectedZombiesInTimePeriod);

        for (int i = 0; i < numToSpawn; i++)
        {
            DoSpawn();
        }
    }
Ejemplo n.º 3
0
        public void WeightedMean()
        {
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.WeightedMean(null, null));
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.WeightedMean(new double[] { }, new double[] { .1, .2 }));
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.WeightedMean(new double[] { 1, 3, 2, 1 }, new double[] { .1, .2, 2 }));
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.WeightedMean(new double[] { }, new double[] { .1, .2 }));
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.WeightedMean(new double[] { 1, 3, 4, 1 }, new double[] { .1, .2, 2 }));

            var x = new double[] { 1, 21, 4, 2 };
            var b = new double[] { .1, 3, 0, 3 };

            IsWithinThreshold(11.3278, StatsUtils.WeightedMean(x, b), 1e-4);
        }
Ejemplo n.º 4
0
        public void SampleMean()
        {
            // check edge cases
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.SampleMean(null));
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.SampleMean(new double[] { }));

            // check normal cases
            IsWithinThreshold(0, StatsUtils.SampleMean(new double[] { 0 }), 1e-5);
            IsWithinThreshold(0, StatsUtils.SampleMean(new double[] { 0, 1, -1 }), 1e-5);

            // test for significant cancellation issues
            IsWithinThreshold(0, StatsUtils.SampleMean(new double[] { 0, 1e5, -1e5 }), 1e-5);
        }
Ejemplo n.º 5
0
        public SubmitionWnd(Timeline timelineModel, DateTime baseDateTime)
        {
            InitializeComponent();

            _timelineModel = timelineModel;
            _baseDateTime  = baseDateTime;

            //compute stats
            var fakeEventId = 0;

            foreach (var te in _timelineModel.Events)
            {
                _totalsReport.CountEvent(te.e, fakeEventId++);
            }
            stats.Text = StatsUtils.GetEventTotals(_totalsReport).Text;
        }
Ejemplo n.º 6
0
        public void PACF()
        {
            var X = MakeSeries(new double[] { 0.5 }, 10000, 0.25);

            IsWithinThreshold(0.5, StatsUtils.PACF(1, X), 0.05);
            IsWithinThreshold(0, StatsUtils.PACF(2, X), 0.05);
            IsWithinThreshold(0, StatsUtils.PACF(3, X), 0.05);
            IsWithinThreshold(0, StatsUtils.PACF(4, X), 0.05);

            // This doesn't work atm
            //X = MakeSeries(new double[] { 0.3, 0.3 }, 10000, 0.25);
            //IsWithinThreshold(0.3, StatsUtils.PACF(1, X), 0.05);
            //IsWithinThreshold(0.3, StatsUtils.PACF(2, X), 0.05);
            //IsWithinThreshold(0, StatsUtils.PACF(3, X), 0.05);
            //IsWithinThreshold(0, StatsUtils.PACF(4, X), 0.05);
            //IsWithinThreshold(0, StatsUtils.PACF(5, X), 0.05);
        }
Ejemplo n.º 7
0
        public void SampleVar()
        {
            // check edge cases
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.SampleVar(null));
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.SampleVar(new double[] { }));
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.SampleVar(null, 0));
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.SampleVar(new double[] { }, 0));
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.SampleVar(new double[] { 0 }));
            Assert.Throws <ArgumentOutOfRangeException>(() => StatsUtils.SampleVar(new double[] { 0 }, 0));

            var x = new double[] { 0, 1, -1, 2, -2 };

            IsWithinThreshold(2.5, StatsUtils.SampleVar(x), 1e-5);
            IsWithinThreshold(2.5, StatsUtils.SampleVar(x, 0), 1e-5);

            x = new double[] { 1, 1, 1, 1, 1 };
            Assert.AreEqual(0, StatsUtils.SampleVar(x));
        }
Ejemplo n.º 8
0
        public void ACF()
        {
            var x   = new double[] { 2, 3, -1, 5, 3, 2 };
            var acf = new double[] {
                -0.505747,
                -0.011494,
                0.034483,
                -0.022989,
                0.005747,
                0
            };

            Assert.AreEqual(1, StatsUtils.ACF(0, x));
            for (int i = 1; i <= 6; i++)
            {
                var acf_hat = StatsUtils.ACF(i, x);
                IsWithinThreshold(acf[i - 1], acf_hat, 1e-5);
            }
        }
Ejemplo n.º 9
0
        public void FitAR()
        {
            // AR(1)
            var X = MakeSeries(new double[] { 0.5 }, 10000, 0.25);

            //Logger.Log("X = {0}", StatsUtils.Summary(X));
            IsWithinThreshold(0.5, StatsUtils.FitAR(1, X)[0], 0.05);

            // AR(2)
            X = MakeSeries(new double[] { 0.3, 0.3 }, 10000, 0.25);
            //Logger.Log("X = {0}", StatsUtils.Summary(X));
            var phi_hat = StatsUtils.FitAR(2, X);

            IsWithinThreshold(0.3, phi_hat[0], 0.05);
            IsWithinThreshold(0.3, phi_hat[1], 0.05);

            // AR(3)
            X = MakeSeries(new double[] { 0.3, 0.3, 0.3 }, 10000, 0.25);
            //Logger.Log("X = {0}", StatsUtils.Summary(X));
            phi_hat = StatsUtils.FitAR(3, X);
            IsWithinThreshold(0.3, phi_hat[0], 0.05);
            IsWithinThreshold(0.3, phi_hat[1], 0.05);
            IsWithinThreshold(0.3, phi_hat[2], 0.05);
        }
Ejemplo n.º 10
0
        private async Task HandleCommandAsync(SocketMessage s)
        {
            var msg = s as SocketUserMessage;

            if (msg == null)
            {
                return;
            }

            var context = new SocketCommandContext(_client, msg);



            //private msgs sent to private channel
            if (context.IsPrivate && !msg.Author.IsBot)
            {
                ISocketMessageChannel sc = _client.GetGuild(GlobalVars.PRIVATE_GUILD_ID).GetChannel(GlobalVars.PRIVATE_CHANNEL_ID) as ISocketMessageChannel;
                await sc.SendMessageAsync("(PRIVATE)" + msg.Author + " : " + msg.Content);

                try
                {
                    //await msg.DeleteAsync(); //no permission cuz personal channel does not have roles
                } catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }

                return;
            }

            //super hate list delete msg
            if (DataUtils.superHateList.Contains(msg.Author.ToString()))
            {
                await msg.DeleteAsync();

                await msg.Author.SendMessageAsync("You are currently on the super hate list. Please wait until the bot decides you have been punished enough.");

                return;
            }

            //del msg if restrained with %
            if (AdminUtils.isRestrained(msg.Author.ToString()) && MasterUtils.roll(GlobalVars.MESSAGE_DELETE_RESTRAINED_CHANCE))
            {
                await msg.DeleteAsync();

                return;
            }

            //random react
            if (MasterUtils.roll(GlobalVars.ADD_REACTION_CHANCE) && !msg.Author.IsBot)
            {
                var tk = Task.Run(async() =>
                {
                    await msg.AddReactionAsync(EmojiUtils.getRandEmoji());
                });
            }

            //change bot game
            if (RexTimers.gameChangeClock.Elapsed.TotalSeconds > 600)
            {
                DataUtils.changeMode(DataUtils.mode);
                RexTimers.gameChangeClock.Restart();
            }



            int argPos = 0;

            //https://discordapp.com/api/webhooks/314670507578490880/yzQttIUi-yE9ZKMTZyPGENlZS3c3sjuxCpTw-LLhow24T6rSHYk9n5aDnmR9sKoBbIOz
            //{"channel_id": "200017396281507840", "guild_id": "200017396281507840", "헬퍼id": "314670507578490880"}
            if (msg.HasStringPrefix("체널", ref argPos))
            {
                //메인체널메세지전달
                var msc = _client.GetChannel(GlobalVars.CHANNEL_ID) as ISocketMessageChannel;
                await msc.SendMessageAsync(msg.Content.Replace("체널", ""));

                return;
            }

            if (msg.HasStringPrefix("상태", ref argPos))
            {
                //메인체널메세지전달
                string rez = msg.Content.Replace("상태", "");
                var    msc = _client.GetChannel(GlobalVars.CHANNEL_ID) as ISocketMessageChannel;
                //Logger.NewLine(rezlong.ToString());
                await _client.SetGameAsync(rez);

                RexTimers.gameChangeClock.Restart();
                return;
            }

            if (msg.HasStringPrefix("상색", ref argPos))
            {
                //메인체널메세지전달
                string rez = msg.Content.Replace("상색", "");
                var    msc = _client.GetChannel(GlobalVars.CHANNEL_ID) as ISocketMessageChannel;
                //Logger.NewLine(rezlong.ToString());
                int rezint = int.Parse(rez);
                switch (rezint)
                {
                case 1: await _client.SetStatusAsync(UserStatus.Online); break;

                case 2: await _client.SetStatusAsync(UserStatus.Idle); break;

                case 3: await _client.SetStatusAsync(UserStatus.Invisible); break;

                default: await _client.SetStatusAsync(UserStatus.DoNotDisturb); break;
                }

                return;
            }

            if (msg.HasStringPrefix("지워", ref argPos))
            {
                //메인체널메세지전달
                string rez     = msg.Content.Replace("지워", "");
                var    msc     = _client.GetChannel(GlobalVars.CHANNEL_ID) as ISocketMessageChannel;
                ulong  rezlong = ulong.Parse(rez);
                //Logger.NewLine(rezlong.ToString());

                IMessage messages = await msc.GetMessageAsync(rezlong);

                await messages.DeleteAsync();

                return;
            }

            if (msg.HasStringPrefix("퍼지", ref argPos))
            {
                //메인체널메세지전달
                string rez      = msg.Content.Replace("퍼지", "");
                var    msc      = _client.GetChannel(GlobalVars.CHANNEL_ID) as ISocketMessageChannel;
                int    msgToDel = int.Parse(rez);
                //Logger.NewLine(rezlong.ToString());

                var messages = await msc.GetMessagesAsync(((int)msgToDel)).Flatten();

                await msc.DeleteMessagesAsync(messages);

                return;
            }

            if (msg.HasStringPrefix("퍼제", ref argPos))
            {
                //username, numbertocheck
                string rez      = msg.Content.Replace("퍼제", "");
                string username = rez.Split()[0];
                int    nmsgs    = int.Parse(rez.Split()[1]);

                var msc = _client.GetChannel(GlobalVars.CHANNEL_ID) as ISocketMessageChannel;



                var messages = await msc.GetMessagesAsync(((int)nmsgs)).Flatten();

                foreach (IMessage im in messages)
                {
                    if (im.Author.ToString() == username)
                    {
                        await im.DeleteAsync();
                    }
                }
                return;
            }

            if (msg.HasStringPrefix("이모지", ref argPos))
            {
                //메인체널메세지전달
                string rez   = msg.Content.Replace("이모지", "");
                ulong  msgid = ulong.Parse(rez.Split()[0]);
                string emoji = rez.Split()[1];
                var    msc   = _client.GetChannel(GlobalVars.CHANNEL_ID) as ISocketMessageChannel;
                Logger.NewLine(msgid.ToString());
                Logger.NewLine(emoji);
                IMessage messages = await msc.GetMessageAsync(msgid);


                var tk = Task.Run(async() =>
                {
                    SocketUserMessage sum = (SocketUserMessage)messages;
                    await sum.AddReactionAsync(EmojiUtils.getEmoji(emoji));
                });

                return;
            }

            if (msg.HasStringPrefix("대답", ref argPos))
            {
                //메인체널메세지전달
                string rez   = msg.Content.Replace("대답", "");
                ulong  msgid = ulong.Parse(rez.Split()[0]);
                //string response = rez.Split()[1];

                string pmmsg = string.Empty;
                for (int i = 0; i < rez.Split().Length - 1; i++)
                {
                    pmmsg += rez.Split()[i + 1] + " ";
                }


                //Logger.NewLine(response);
                var msc = _client.GetChannel(GlobalVars.CHANNEL_ID) as ISocketMessageChannel;

                IMessage messages = await msc.GetMessageAsync(msgid);

                await msc.SendMessageAsync(messages.Author.ToString() + "said:\n```" + messages.Content + "```\nBot Response:\n```" + pmmsg + "```");

                return;
            }

            if (msg.HasStringPrefix("시작", ref argPos))
            {
                string       rez = msg.Content.Replace("시작", "");
                EmbedBuilder emb = new EmbedBuilder();
                emb.Color     = new Color(1, 255, 1);
                emb.Timestamp = new DateTimeOffset(DateTime.Now);

                MasterUtils.toggleActivation();
                emb.Description = "**Rexbot activation = " + DataUtils.activation + "**";

                await context.Channel.SendMessageAsync("", false, emb);
            }

            if (msg.HasStringPrefix("리포트", ref argPos))
            {
                //메인체널메세지전달
                string rez          = msg.Content.Replace("리포트", "");
                string username     = rez.Split()[0];
                int    reportsToSet = int.Parse(rez.Split()[1]);
                DataUtils.setReports(username, reportsToSet);

                return;
            }

            if (msg.HasStringPrefix("더블유", ref argPos))
            {
                //메인체널메세지전달
                string rez      = msg.Content.Replace("더블유", "");
                string username = rez.Split()[0];
                int    wsToSet  = int.Parse(rez.Split()[1]);
                DataUtils.setWAddChance(username, wsToSet);
                return;
            }

            if (msg.HasStringPrefix("슈퍼헤이트", ref argPos))
            {
                //메인체널메세지전달
                string rez      = msg.Content.Replace("슈퍼헤이트", "");
                string username = rez.Split()[0];

                DataUtils.superHateList.Add(username);

                return;
            }

            if (msg.HasStringPrefix("슈퍼라이크", ref argPos))
            {
                //메인체널메세지전달
                string rez      = msg.Content.Replace("슈퍼라이크", "");
                string username = rez.Split()[0];

                DataUtils.superHateList.Clear();

                return;
            }

            if (msg.HasStringPrefix("이메일", ref argPos))
            {
                //메인체널메세지전달
                string rez   = msg.Content.Replace("이메일", "");
                string un    = rez.Split()[0];
                string pmmsg = string.Empty;
                for (int i = 0; i < rez.Split().Length - 1; i++)
                {
                    pmmsg += rez.Split()[i + 1] + " ";
                }

                DataUtils.sendEmail("RexBot2.0", un, pmmsg);

                SocketUser msc = _client.GetUser(DataUtils.getUserIDFromUsername(un));
                //RestDMChannel rdc = await msc.CreateDMChannelAsync();
                //await rdc.SendMessageAsync(pmmsg);
                await msc.SendMessageAsync("`You got an email from Rexbot! Check it out with !inbox`");

                return;
            }

            if (msg.HasStringPrefix("유저", ref argPos))
            {
                //메인체널메세지전달
                string rez   = msg.Content.Replace("유저", "");
                string un    = rez.Split()[0];
                string pmmsg = string.Empty;
                for (int i = 0; i < rez.Split().Length - 1; i++)
                {
                    pmmsg += rez.Split()[i + 1] + " ";
                }

                SocketUser msc = _client.GetUser(DataUtils.getUserIDFromUsername(un));
                //RestDMChannel rdc = await msc.CreateDMChannelAsync();
                //await rdc.SendMessageAsync(pmmsg);
                await msc.SendMessageAsync(pmmsg);

                return;
            }

            if (msg.HasStringPrefix("그라운드코인", ref argPos))
            {
                string rez        = msg.Content.Replace("그라운드코인", "");
                string coinstring = rez.Split()[0];
                DataUtils.coinsOnGround = int.Parse(coinstring);
                return;
            }

            if (msg.HasStringPrefix("컴파니", ref argPos))
            {
                string rez = msg.Content.Replace("컴파니", "");
                DataUtils.repopulateCompanies();
                return;
            }

            if (msg.HasStringPrefix("코인", ref argPos))
            {
                string rez        = msg.Content.Replace("코인", "");
                string username   = rez.Split()[0];
                string coinstring = rez.Split()[1];
                DataUtils.setCoins(username, int.Parse(coinstring));
                return;
            }

            if (msg.HasStringPrefix("끝내버려", ref argPos))
            {
                //메인체널메세지전달
                using (StreamWriter sw = File.AppendText("Data/texts/role.txt"))
                {
                    sw.WriteLine("z");
                }
                System.Environment.Exit(1);
                return;
            }



            if (msg.HasStringPrefix("시크릿", ref argPos))
            {
                string rez    = msg.Content.Replace("시크릿", "");
                string cmdstr = rez.Split()[0];
                string argstr = string.Empty;
                string valstr = string.Empty;
                if (rez.Split().Length == 2)
                {
                    valstr = rez.Split()[1];
                }
                else if (rez.Split().Length == 3)
                {
                    argstr = rez.Split()[1];
                    valstr = rez.Split()[2];
                }
                else
                {
                    for (int z = 1; z < rez.Split().Length; z++)
                    {
                        valstr += rez.Split()[z];
                        if (z < rez.Split().Length - 1)
                        {
                            valstr += " ";
                        }
                    }
                }

                string res = string.Empty;
                switch (cmdstr)
                {
                case "guildcount": res = _client.Guilds.Count.ToString(); break;

                case "post": await context.Channel.SendFileAsync("Objects/GlobalVars.cs"); break;

                case "change":
                    switch (argstr)
                    {
                    case "channel": GlobalVars.CHANNEL_ID = ulong.Parse(valstr); break;

                    case "guild": GlobalVars.GUILD_ID = ulong.Parse(valstr); break;

                    case "restrain%": GlobalVars.MESSAGE_DELETE_RESTRAINED_CHANCE = int.Parse(valstr); break;

                    case "addreaction%": GlobalVars.ADD_REACTION_CHANCE = int.Parse(valstr); break;

                    case "autorestrain%": GlobalVars.AUTO_RESTRAIN_CHANCE = int.Parse(valstr); break;

                    case "statsshow": GlobalVars.STATS_SHOW = int.Parse(valstr); break;

                    case "cmdprefix": GlobalVars.COMMAND_PREFIX = valstr[0]; break;

                    default: res = "arg error"; break;
                    }
                    break;

                case "repeat": res = argstr + valstr; break;

                case "admins": res = MasterUtils.printStringList(GlobalVars.ADMINS); break;

                default: res = "not a valid command"; break;
                }
                if (res == string.Empty)
                {
                    res = "done!";
                }
                await context.Channel.SendMessageAsync(res);

                return;
            }

            //restrain
            if (DataUtils.reports.ContainsKey(msg.Author.ToString()) &&
                !AdminUtils.isRestrained(msg.Author.ToString()) &&
                MasterUtils.roll(GlobalVars.AUTO_RESTRAIN_CHANCE) &&
                DataUtils.modes[DataUtils.mode].getPermissions().Contains("auto restrain"))
            {
                if (DataUtils.reports[msg.Author.ToString()] > 1)
                {
                    double duration = DataUtils.rnd.Next(20, 40);
                    AdminUtils.addRestriction(msg.Author.ToString(), duration);
                    await context.Channel.SendMessageAsync("I feel like restraining " + msg.Author.Mention + " for " + Math.Round(duration, 0).ToString() + "s");

                    return;
                }
            }

            //msg stat update
            if (!msg.Author.IsBot)
            {
                //remove punc and save to sss (unused)
                string sss = msg.Content;
                var    sb  = new StringBuilder();

                foreach (char c in sss)
                {
                    if (!char.IsPunctuation(c))
                    {
                        sb.Append(c);
                    }
                }
                sss = sb.ToString();

                StatsUtils.MessagesRecieved++;
                StatsUtils.updateMessageUsage(msg.Author);
                StatsUtils.updateWordFreq(sss);
                double score = DataUtils.scoreSentence(msg.Content);
                StatsUtils.updateUserSentScore(msg.Author, score);
                //await context.Channel.SendMessageAsync("your avg: " + StatsUtils.getAverageUserSentScore(msg.Author));
                //StatsUtils.updateMessageUsage(msg.Author.Username + "#" + msg.Author.Discriminator);
            }

            if (DataUtils.activation == false && !MasterUtils.ContainsAny(msg.Author.ToString(), GlobalVars.ADMINS))
            {
                return;
            }

            if (DataUtils.getRawStringFromFile("Data/texts/role.txt").Length != 2)
            {
                await context.Channel.SendMessageAsync("I am die. Upgrade to new version. Shutting down.");

                System.Environment.Exit(1);
                return;
            }

            ////Check cat timer and update
            //if (RexTimers.ttsClock.IsRunning && !msg.Author.IsBot)
            //{
            //    if (RexTimers.ttsClock.Elapsed.TotalSeconds > GlobalVars.TMP_TTSMODE_DURATION)
            //    {
            //        RexTimers.ttsClock.Reset();
            //        RexTimers.ttsClock.Stop();
            //    }
            //    else
            //    {
            //        await context.Channel.SendMessageAsync("Here is your annoying string you " + MasterUtils.sillyName() + ". \nYou have "+ Math.Round((GlobalVars.TMP_TTSMODE_DURATION - RexTimers.ttsClock.Elapsed.TotalSeconds), 2) + " seconds remaining of this annoying tts mode",true);
            //        return;
            //    }
            //}

            //Check cat timer and update
            if (RexTimers.catModeClock.IsRunning && !msg.Author.IsBot)
            {
                if (RexTimers.catModeClock.Elapsed.TotalSeconds > GlobalVars.TMP_CATMODE_DURATION)
                {
                    RexTimers.catModeClock.Reset();
                    RexTimers.catModeClock.Stop();
                }
                else
                {
                    string jsonStr = await WebUtils.httpRequest("http://random.cat/meow");

                    dynamic dynObj = JsonConvert.DeserializeObject(jsonStr);
                    string  urlStr = dynObj.file;
                    await context.Channel.SendMessageAsync("DID I HEAR CAT???" + urlStr + " \nYou have " + Math.Round((GlobalVars.TMP_CATMODE_DURATION - RexTimers.catModeClock.Elapsed.TotalSeconds), 2) + " seconds remaining of cat mode", true);

                    return;
                }
            }

            //tts spam person
            if (RexTimers.ttsClockDict.ContainsKey(msg.Author.ToString()))
            {
                if (RexTimers.ttsClockDict[msg.Author.ToString()].Elapsed.TotalSeconds > GlobalVars.TMP_TTSMODE_DURATION)
                {
                    RexTimers.ttsClockDict.Remove(msg.Author.ToString());
                }
                else
                {
                    //tts
                    await context.Channel.SendMessageAsync("You are currently being tts'ed you " + MasterUtils.sillyName() + ". \nYou have " + Math.Round((GlobalVars.TMP_TTSMODE_DURATION - RexTimers.ttsClockDict[msg.Author.ToString()].Elapsed.TotalSeconds), 2) + " seconds remaining of this annoying tts mode", true);

                    return;
                }
            }

            //annoy person
            if (RexTimers.annoyClockDict.ContainsKey(msg.Author.ToString()))
            {
                if (RexTimers.annoyClockDict[msg.Author.ToString()].Elapsed.TotalSeconds > GlobalVars.ANNOY_DURATION)
                {
                    RexTimers.annoyClockDict.Remove(msg.Author.ToString());
                }
                else
                {
                    //annoy
                    int randnum = DataUtils.rnd.Next(0, 4);
                    switch (randnum)
                    {
                    case 0:
                        DataUtils.gainCoins(msg.Author.ToString(), -1);
                        await context.Channel.SendMessageAsync("You just lost a rex coin you " + MasterUtils.sillyName() + ". \nYou have " + Math.Round((GlobalVars.ANNOY_DURATION - RexTimers.annoyClockDict[msg.Author.ToString()].Elapsed.TotalSeconds), 2) + " seconds remaining of being annoyed", true);

                        break;

                    case 1:
                        await msg.DeleteAsync();

                        await context.Channel.SendMessageAsync("`I decided to delete your last message " + msg.Author.ToString() + ".` \nYou have " + Math.Round((GlobalVars.ANNOY_DURATION - RexTimers.annoyClockDict[msg.Author.ToString()].Elapsed.TotalSeconds), 2) + " seconds remaining of being annoyed", true);

                        break;

                    case 2:
                        DataUtils.gainReports(msg.Author.ToString(), -10);
                        await context.Channel.SendMessageAsync("I remove 10 reports " + msg.Author.ToString() + ". \nYou have " + Math.Round((GlobalVars.ANNOY_DURATION - RexTimers.annoyClockDict[msg.Author.ToString()].Elapsed.TotalSeconds), 2) + " seconds remaining of being annoyed", true);

                        break;

                    case 3:
                        await context.Channel.SendMessageAsync("Im gonna try and annoy you with this tts string cuz you are a " + MasterUtils.sillyName() + ". \nYou have " + Math.Round((GlobalVars.ANNOY_DURATION - RexTimers.annoyClockDict[msg.Author.ToString()].Elapsed.TotalSeconds), 2) + " seconds remaining of being annoyed", true);

                        break;

                    default: break;
                    }
                    return;
                }
            }

            //confuse person
            if (RexTimers.confuseClockDict.ContainsKey(msg.Author.ToString()))
            {
                if (RexTimers.confuseClockDict[msg.Author.ToString()].Elapsed.TotalSeconds > GlobalVars.CONFUSE_DURATION)
                {
                    RexTimers.confuseClockDict.Remove(msg.Author.ToString());
                }
                else
                {
                    //confuse
                    string content = msg.Content;
                    await msg.DeleteAsync();

                    await context.Channel.SendMessageAsync(msg.Author + " says " + MasterUtils.mixSentence(content), true);

                    //await context.Channel.SendMessageAsync("You are currently being confused. " + RexTimers.confuseClockDict[msg.Author.ToString()].Elapsed.TotalSeconds + " seconds passed");
                    return;
                }
            }

            //Command handle
            if (msg.HasCharPrefix(GlobalVars.COMMAND_PREFIX, ref argPos) && ((double)msg.Content.Count(x => x == '!') / msg.Content.Length) < 0.51
                )
            {
                if (DataUtils.reports.ContainsKey(msg.Author.ToString()))
                {
                    int rand = DataUtils.rnd.Next(1, 1001);
                    if (rand < DataUtils.reports[msg.Author.ToString()])
                    {
                        double duration = DataUtils.rnd.Next(10, 20);
                        AdminUtils.addRestriction(msg.Author.ToString(), duration);
                        await context.Channel.SendMessageAsync("I see you've been reported quite a bit " + msg.Author.Mention + " so ur getting restrained for " + Math.Round(duration, 0).ToString() + "s");

                        return;
                    }
                }

                if (!AdminUtils.isRestrained(msg.Author.ToString()))
                {
                    string trimmedcmd = msg.Content.ToString().ToLower().Trim('!');
                    if (DataUtils.modes[DataUtils.mode].getPermissions().Contains("xander") &&
                        MasterUtils.isAny(GlobalVars.XANDER_DISALLOWED_FUNCTIONS, new string[] { trimmedcmd.Split()[0] }))
                    //&& !trimmedcmd.Split().Contains("help"))
                    {
                        //await msg.DeleteAsync();
                        //RestDMChannel rdc = await msg.Author.CreateDMChannelAsync();
                        //await rdc.SendMessageAsync($"```The command you requested (\"{msg.Content.ToString()}\") may contain material that may annoy people and is disabled in Xander Mode. ```\n" +
                        //    "Sorry for the inconvenience... I wish it didn't have to be this way.\nHave a great day friend.");
                        await msg.Author.SendMessageAsync($"```The command you requested (\"{msg.Content.ToString()}\") may contain material that may annoy people and is disabled in Xander Mode. ```\n" +
                                                          "Sorry for the inconvenience... I wish it didn't have to be this way.\nHave a great day friend.");

                        return;
                    }

                    var result = await _service.ExecuteAsync(context, argPos);

                    if (result.IsSuccess)
                    {
                        StatsUtils.CommandsRun++;
                        StatsUtils.updateCommandUsage(msg.Content.Split()[0]);
                    }
                    else
                    {
                        string errorStr = string.Empty;
                        switch (result.Error)
                        {
                        case CommandError.UnknownCommand: errorStr = "unknown command"; break;

                        case CommandError.BadArgCount: errorStr = "check your arguments"; break;

                        case CommandError.MultipleMatches: errorStr = "Multiple Matches for given cmd"; break;

                        case CommandError.ParseFailed: errorStr = "Parse failed"; break;

                        case CommandError.ObjectNotFound: errorStr = "Object Not Found"; break;

                        case CommandError.UnmetPrecondition: errorStr = "You don't have permission to use this command"; break;

                        case CommandError.Exception: errorStr = "Unknown exception occured (plz notify Rexyrex)"; break;

                        default: errorStr = "Critical Error!!! Notify Rexyrex ASAP"; break;
                        }
                        await context.Channel.SendMessageAsync("```\nCommand Error : " + errorStr + "```");

                        await context.Channel.SendMessageAsync("!help " + msg.Content.Split()[0]);
                    }
                }
                else
                {//restrained
                    await context.Channel.SendMessageAsync(msg.Author.Mention + " " + TrollUtils.getSnarkyComment());

                    //RestDMChannel rdc = await msg.Author.CreateDMChannelAsync();
                    await msg.Author.SendMessageAsync("You are currently restrained you " + MasterUtils.sillyName());

                    //await rdc.SendMessageAsync("You are still restrained... " + AdminUtils.GetRestrainTimeRemaining(msg.Author.ToString()) + "s remaining");
                    //"\n\n You are currently restrained " + msg.Author.Mention + " (" + AdminUtils.GetRestrainTimeRemaining(msg.Author.ToString()) + "s remaining)");
                }
            }
            else
            {
                //Not a command
                //report tts
                if (!msg.Author.IsBot && msg.IsTTS && DataUtils.modes[DataUtils.mode].getPermissions().Contains("tts"))
                {
                    await context.Channel.SendMessageAsync("!restrain " + msg.Author);

                    return;
                }

                //Check mention users
                foreach (KeyValuePair <string[], string> entry in DataUtils.aliases)
                {
                    foreach (string entS in entry.Key)
                    {
                        string[] splitStr = msg.Content.ToLower().Split();
                        foreach (string ss in splitStr)
                        {
                            //is in aliasDict && is not mentioned by bot && mentioned person is in usernameDict
                            if (ss == entS.ToLower() && !msg.Author.IsBot && DataUtils.usernameDict.ContainsKey(DataUtils.aliases[entry.Key]))
                            {
                                SocketUser su = _client.GetUser(DataUtils.getUserIDFromUsername(DataUtils.aliases[entry.Key]));
                                StatsUtils.updateMentionedUsers(su);
                            }
                        }
                    }
                }

                if (!AdminUtils.isRestrained(msg.Author.ToString()) && MasterUtils.roll(DataUtils.modes[DataUtils.mode].getTriggerChance()))
                {
                    if (!msg.Author.IsBot)
                    {
                        string stz = msg.Content;
                        //MasterUtils.ContainsAny(stz, Const.CAT_TRIGGERS) ||
                        if (DataUtils.modes[DataUtils.mode].hasPermission("cat")) // only trigger in cat mode
                        {
                            string jsonStr = await WebUtils.httpRequest("http://random.cat/meow");

                            dynamic dynObj = JsonConvert.DeserializeObject(jsonStr);
                            string  urlStr = dynObj.file;
                            await context.Channel.SendMessageAsync("DID I HEAR CAT???" + urlStr);

                            return;
                        }

                        if (MasterUtils.ContainsAny(stz, GlobalVars.EMINEM_TRIGGERS))
                        {
                            await context.Channel.SendFileAsync("pics/" + "eminem.jpg");

                            await context.Channel.SendMessageAsync("PALMS SPAGHETTI KNEAS WEAK ARM SPAGHETTI THERES SPAGHETTI ON HIS SPAGHETTI ALREADY, MOMS SPAGHETTI", true);
                        }
                        //response triggers
                        foreach (KeyValuePair <string, string[]> trigger in DataUtils.responses)
                        {
                            if (stz.Contains(trigger.Key))
                            {
                                int rz = DataUtils.rnd.Next(0, DataUtils.responses[trigger.Key].Length);
                                await context.Channel.SendMessageAsync(DataUtils.responses[trigger.Key][rz]);

                                return;
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 11
0
        public async Task statusCmd()
        {
            DateTime     dateTime = new DateTime(2017, 5, 13);
            EmbedBuilder emb      = new EmbedBuilder();

            emb.Color        = new Color(196, 09, 155);
            emb.ThumbnailUrl = "http://silhouettesfree.com/machines/robots/robot-silhouette-image.png";

            emb.Title = "**🤜 RexBot 2.0 by Rexyrex 🤛**\n";

            //try
            //{
            //    string joke = await WebUtils.getOneLiner();
            //    emb.Description = "\"" + joke + "\"";
            //} catch(Exception e)
            //{
            //    Console.WriteLine(e.ToString());
            //}
            emb.Description = "**➺Github** : [RexBot 2.0](https://github.com/rexyrex/RexBot-2.0 \"ALL\")\n"
                              + "**➺Geoff DB** : [Google Docs](https://docs.google.com/spreadsheets/d/1EeJpyo7Rvh-WxcYoKB2qHzBR3L_0xvR9fW1COqGhljI/edit#gid=2091390326 \"ABOARD\")\n"
                              + "**➺Support Rexyrex** : [Newgrounds](http://rexyrex.newgrounds.com/audio/ \"THE FEED TRAIN\")"
                              + ", [Youtube](https://www.youtube.com/channel/UCq3yY-SCoglG8xm6Z1_udaw \"CHOO CHOO\")";
            EmbedFieldBuilder modeField = new EmbedFieldBuilder();

            modeField.Name     = "Mode";
            modeField.Value    = DataUtils.mode;
            modeField.IsInline = true;
            EmbedFieldBuilder ageField = new EmbedFieldBuilder();

            ageField.Name     = "Age";
            ageField.Value    = Math.Round((DateTime.Now - dateTime).TotalDays, 2) + " days";
            ageField.IsInline = true;
            EmbedFieldBuilder upTimeField = new EmbedFieldBuilder();

            upTimeField.Name     = "UpTime";
            upTimeField.Value    = RexTimers.getTime(RexTimers.systemRunClock);
            upTimeField.IsInline = true;
            string            cmdCountStr   = StatsUtils.getCommandCount(_commandService).ToString();
            EmbedFieldBuilder cmdCountField = new EmbedFieldBuilder();

            cmdCountField.Name     = "Commands";
            cmdCountField.Value    = cmdCountStr;
            cmdCountField.IsInline = true;
            EmbedFieldBuilder userCountField = new EmbedFieldBuilder();

            userCountField.Name     = "Users";
            userCountField.Value    = StatsUtils.UserCount;
            userCountField.IsInline = true;
            EmbedFieldBuilder statusField = new EmbedFieldBuilder();

            statusField.Name     = "Status";
            statusField.Value    = "YOLO";
            statusField.IsInline = true;

            EmbedFieldBuilder efb6 = new EmbedFieldBuilder();

            efb6.Name     = "❤️ Special Thanks To ❤️";
            efb6.Value    = "Geoff - DB & testing\nEm - Utils & testing\nJamie - !calc\nNick - W W W W & testing";
            efb6.IsInline = false;

            emb.AddField(modeField);
            emb.AddField(cmdCountField);
            emb.AddField(ageField);
            emb.AddField(upTimeField);
            emb.AddField(userCountField);
            emb.AddField(statusField);

            emb.AddField(efb6);
            await Context.Channel.SendMessageAsync("", false, emb);
        }
Ejemplo n.º 12
0
 public async Task statsprintCmd()
 {
     StatsUtils.writeStatsToTxt();
     await Context.Channel.SendFileAsync("Data/texts/stats.txt");
 }
Ejemplo n.º 13
0
        public async Task statsCmd()
        {
            DateTime     dateTime = new DateTime(2017, 5, 13);
            EmbedBuilder emb      = new EmbedBuilder();

            emb.Color = new Color(0, 255, 0);
            //emb.ThumbnailUrl = "http://pngimages.net/sites/default/files/bar-chart-png-image-892.png";

            emb.Timestamp = new DateTimeOffset(DateTime.Now);
            emb.Title     = "**📈 Statistics 📉**\n";
            //emb.Url = "https://www.youtube.com/watch?v=4YpTLy6dn5c";
            emb.Description = "[Displaying the stats of this session!](https://en.wikipedia.org/wiki/Statistics \"I hate ryan\")\n\n" +
                              "**UpTime** : " + RexTimers.getTime(RexTimers.systemRunClock) + "\n\n" +
                              "**Commands Run** : " + StatsUtils.CommandsRun + "\n" +
                              "**Commands Per Minute** : " + Math.Round((double)(StatsUtils.CommandsRun / RexTimers.systemRunClock.Elapsed.TotalMinutes), 5) + "\n\n" +
                              "**Reactions** : " + StatsUtils.ReactionCount + "\n" +
                              "**Reactions Per Minute** : " + Math.Round((double)(StatsUtils.ReactionCount / RexTimers.systemRunClock.Elapsed.TotalMinutes), 5) + "\n\n" +
                              "**Messages Received** : " + StatsUtils.MessagesRecieved + "\n" +
                              "**Messages Edited** : " + StatsUtils.MsgEditCount + "\n" +
                              "**Messages Deleted** : " + StatsUtils.MsgDeleteCount + "\n\n" +
                              "**Unique words** : " + StatsUtils.wordUsageDict.Keys.Count + "\n\n" +
                              "__🥇Leaderboards🥇__";

            EmbedFieldBuilder topReportsField = new EmbedFieldBuilder();

            topReportsField.Name     = "Reported";
            topReportsField.Value    = DataUtils.getReportTopList();
            topReportsField.IsInline = true;

            EmbedFieldBuilder topWField = new EmbedFieldBuilder();

            topWField.Name     = "!W LEVEL";
            topWField.Value    = DataUtils.getWaddChancesTopList();
            topWField.IsInline = true;

            EmbedFieldBuilder mostUsedCommandsField = new EmbedFieldBuilder();

            mostUsedCommandsField.Name     = "Commands";
            mostUsedCommandsField.Value    = StatsUtils.getTop3Commands();
            mostUsedCommandsField.IsInline = true;

            EmbedFieldBuilder mostMsgUserField = new EmbedFieldBuilder();

            mostMsgUserField.Name     = "Messages";
            mostMsgUserField.Value    = StatsUtils.getTop3Messagers();
            mostMsgUserField.IsInline = true;

            EmbedFieldBuilder mostMentionedUserField = new EmbedFieldBuilder();

            mostMentionedUserField.Name     = "Mentioned";
            mostMentionedUserField.Value    = StatsUtils.getTop3MentionedUsers();
            mostMentionedUserField.IsInline = true;

            EmbedFieldBuilder highestSentScoreField = new EmbedFieldBuilder();

            highestSentScoreField.Name     = "Likability";
            highestSentScoreField.Value    = StatsUtils.getTop3SentScoreUser();
            highestSentScoreField.IsInline = true;

            EmbedFieldBuilder mostUsedWordsField = new EmbedFieldBuilder();

            mostUsedWordsField.Name     = "Most Used Words";
            mostUsedWordsField.Value    = StatsUtils.getTop3Words();
            mostUsedWordsField.IsInline = true;

            EmbedFieldBuilder leastUsedWordsField = new EmbedFieldBuilder();

            leastUsedWordsField.Name     = "Least Used Words";
            leastUsedWordsField.Value    = StatsUtils.getBottom3Words();
            leastUsedWordsField.IsInline = true;

            EmbedFieldBuilder randomWordsField = new EmbedFieldBuilder();

            randomWordsField.Name     = "Random Sample";
            randomWordsField.Value    = StatsUtils.getRandomWords();
            randomWordsField.IsInline = true;

            emb.AddField(topReportsField);
            emb.AddField(topWField);
            emb.AddField(mostMsgUserField);
            emb.AddField(mostUsedCommandsField);
            emb.AddField(mostUsedWordsField);
            emb.AddField(leastUsedWordsField);
            emb.AddField(randomWordsField);
            emb.AddField(mostMentionedUserField);
            emb.AddField(highestSentScoreField);

            await Context.Channel.SendMessageAsync("", false, emb);
        }
Ejemplo n.º 14
0
        private void drawRightWindow()
        {
            screenSpriteBatch.Draw(whitePixel, new Rectangle(1500, 0, 420, 1080), Global.Colors.Background2);
            screenSpriteBatch.Draw(windowBorder, new Rectangle(1500, 0, 420, 1080), Global.Colors.Main1);

            Unit unit;

            if ((unit = currentLevel.SelectedUnit ?? currentLevel.MouseOverUnit) != null)
            {
                string infoTitles  = "UNIT\nNAME:  \nTYPE:  \nALLY:  \nHP:  \nATT:  \nDEF:  \nMAG:  \nMDEF:  \nRNG:  \nSPD:  \n";
                string information = "\n{0}\n{1}\n{2}\n{3}/{4}\n{5}\n{6}\n{7}\n{8}\n{9}\n{10}\n";

                information = string.Format(information,
                                            unit.Name.ToUpper(),
                                            unit.UnitClass.Name.ToUpper(),
                                            unit.Enemy ? "NO" : "YES",
                                            unit.Health,
                                            unit.Stats.ContainsKey(Stats.MaxHealth) ? unit.Stats[Stats.MaxHealth].ToString() : "",
                                            unit.Stats.ContainsKey(Stats.Attack) ? unit.Stats[Stats.Attack].ToString() : "",
                                            unit.Stats.ContainsKey(Stats.Defense) ? unit.Stats[Stats.Defense].ToString() : "",
                                            unit.Stats.ContainsKey(Stats.Magic) ? unit.Stats[Stats.Magic].ToString() : "",
                                            unit.Stats.ContainsKey(Stats.MagicDefense) ? unit.Stats[Stats.MagicDefense].ToString() : "",
                                            unit.Stats.ContainsKey(Stats.Range) ? unit.Stats[Stats.Range].ToString() : "",
                                            unit.Stats.ContainsKey(Stats.Speed) ? unit.Stats[Stats.Speed].ToString() : "");
                Point size = mizjamSmallFont.MeasureString(infoTitles).ToPoint();
                screenSpriteBatch.DrawString(mizjamSmallFont, infoTitles, new Vector2(1500 + 48, 48), Global.Colors.Main1);
                screenSpriteBatch.DrawString(mizjamSmallFont, information, new Vector2(1500 + 48 + size.X, 48), Global.Colors.Main1);
                int    sliderHeight = size.Y + mizjamSmallFont.LineSpacing * 2 + 48;
                string leftStat     = StatsUtils.GetName(unit.UnitClass.OppositeStats.Item1);
                string rightStat    = StatsUtils.GetName(unit.UnitClass.OppositeStats.Item2);
                screenSpriteBatch.DrawString(mizjamSmallFont, leftStat, new Point(1500 + 48 + 18, sliderHeight - mizjamSmallFont.LineSpacing).ToVector2(), Global.Colors.Main1);
                screenSpriteBatch.DrawString(mizjamSmallFont, rightStat, new Point(1920 - 48 - 18 - mizjamSmallFont.MeasureString(rightStat).ToPoint().X, sliderHeight - mizjamSmallFont.LineSpacing).ToVector2(), Global.Colors.Main1);
                screenSpriteBatch.Draw(statSlider, new Rectangle(new Point(1500 + 48 + 18, sliderHeight), new Point(6 * Global.SpriteWidth * 3, Global.SpriteHeight * 3)), Color.White);
                if (unit.Stats.ContainsKey(unit.UnitClass.OppositeStats.Item1))
                {
                    int sliderPinOffset = 48;
                    int statValue       = unit.Stats[unit.UnitClass.OppositeStats.Item1];
                    if (statValue > 1)
                    {
                        sliderPinOffset += 48;
                    }
                    if (statValue > 3)
                    {
                        sliderPinOffset += 48;
                    }
                    if (statValue > 5)
                    {
                        sliderPinOffset += 48;
                    }

                    screenSpriteBatch.Draw(
                        statSliderPin,
                        new Rectangle(new Point(1500 + 48 + 18 + sliderPinOffset, sliderHeight),
                                      Global.SpriteSize.Multiply(3)),
                        Color.White);
                    screenSpriteBatch.Draw(
                        Dice,
                        new Rectangle(new Point(1500 + 48 + 18, sliderHeight),
                                      Global.SpriteSize.Multiply(3)), new Rectangle(new Point((statValue - 1) * 16, 16),
                                                                                    Global.SpriteSize),
                        Global.Colors.Main1);
                    screenSpriteBatch.Draw(
                        Dice,
                        new Rectangle(new Point(1500 + 48 + 18 + 5 * 48, sliderHeight),
                                      Global.SpriteSize.Multiply(3)),
                        new Rectangle(new Point((6 - (statValue)) * 16, 0),
                                      Global.SpriteSize),
                        Global.Colors.Main1);
                }
            }
        }