Beispiel #1
0
        public static void SpeakOnce(long qq, long group)
        {
            int i = List.data.FindIndex(m => m.qq == qq && m.group == group);

            if (i == -1)
            {
                List.data.Add(new member(qq, group)); i = List.data.Count - 1;
            }
            member me = List.data[i];

            me.wcount++; List.data[i] = me;
            if (me.wcount == 1)
            {
                Event_GroupMessage.Achive(qq, "Hello World", Event_GroupMessage.Current);
            }
            if (me.wcount == 1000)
            {
                Event_GroupMessage.Achive(qq, "聊得火热", Event_GroupMessage.Current);
            }
            if (me.wcount == 10000)
            {
                Event_GroupMessage.Achive(qq, "水群大湿", Event_GroupMessage.Current);
            }
            if (me.wcount == 100000)
            {
                Event_GroupMessage.Achive(qq, "远古居民", Event_GroupMessage.Current);
            }
        }
Beispiel #2
0
        /// <summary>
        /// 按照抽卡结果生成图片
        /// </summary>
        /// <param name="count">抽卡次数</param>
        /// <returns></returns>
        public static string GetPicPath(int count, PoolInfo poolInfo, CQGroupMessageEventArgs e)
        {
            List <PoolContent> ls = new List <PoolContent>();

            for (int i = 0; i < count; i++)
            {
                var item = poolInfo.PoolContents[RandomGacha(poolInfo)];
                ls = FoldItem(item, ls);
            }
            Event_GroupMessage.SubDiamond(e, poolInfo.PerGachaConsumption * count);
            PicHelper combine = new PicHelper();

            ls = ls.OrderByDescending(x => x.Value).ToList();
            string CQAt = poolInfo.ResultAt ? CQApi.CQCode_At(e.FromQQ).ToSendString() : string.Empty;

            return(CQAt + combine.GeneratePic(poolInfo, ls, Event_GroupMessage.GetDiamond(e)));
        }
Beispiel #3
0
        public static void ZeroRepeat(long qq, long group)
        {
            int i = List.data.FindIndex(m => m.qq == qq && m.group == group);

            if (i == -1)
            {
                List.data.Add(new member(qq, group)); i = List.data.Count - 1;
            }
            member me = List.data[i];

            me.zfcount++; List.data[i] = me;
            if (me.wcount == 200)
            {
                Event_GroupMessage.Achive(qq, "鼓舞者", Event_GroupMessage.Current);
            }
            if (me.wcount == 400)
            {
                Event_GroupMessage.Achive(qq, "热度风暴", Event_GroupMessage.Current);
            }
        }
Beispiel #4
0
        public void GroupMessage(object sender, CQGroupMessageEventArgs e)
        {
            FunctionResult result = Event_GroupMessage.GroupMessage(e);

            if (result.SendFlag)
            {
                if (result.SendObject == null || result.SendObject.Count == 0)
                {
                    e.Handler = false;
                }
                foreach (var item in result.SendObject)
                {
                    foreach (var sendMsg in item.MsgToSend)
                    {
                        e.CQApi.SendGroupMessage(item.SendID, sendMsg);
                    }
                }
            }
            e.Handler = result.Result;
        }
Beispiel #5
0
        /// <summary>
        /// 判断能否抽卡,并发送一定的自定义信息
        /// </summary>
        /// <param name="e"></param>
        /// <param name="poolInfo"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public static bool CanGacha(CQGroupMessageEventArgs e, PoolInfo poolInfo, int count)
        {
            if (!Event_GroupMessage.GroupInini(e))
            {
                return(false);
            }
            if (!Event_GroupMessage.IDExist(e))
            {
                e.FromGroup.SendGroupMessage(Event_GroupMessage.noReg.Replace("<@>", $"[CQ:at,qq={e.FromQQ.Id}]"));
                return(false);
            }
            int diamond = Event_GroupMessage.GetDiamond(e);

            if (diamond < count * poolInfo.PerGachaConsumption)
            {
                e.FromGroup.SendGroupMessage(Event_GroupMessage.lowDiamond.Replace("<@>", $"[CQ:at,qq={e.FromQQ.Id}]").Replace("<#>", diamond.ToString()));
                return(false);
            }
            e.FromGroup.SendGroupMessage(Event_GroupMessage.BP10.Replace("<@>", $"[CQ:at,qq={e.FromQQ.Id}]"));
            return(true);
        }
Beispiel #6
0
        public void GroupMessage(object sender, CQGroupMessageEventArgs e)
        {
            bool flag = false;

            for (int i = 0; i < MainSave.ConfigMain.Object["GroupList"]["Count"].GetValueOrDefault(0); i++)
            {
                if (e.FromGroup.Id == MainSave.ConfigMain.Object["GroupList"][$"Index{i}"].GetValueOrDefault(0))
                {
                    flag = true;
                    break;
                }
            }
            if (flag is false)
            {
                e.Handler = false;
                return;
            }
            DelaySauceNao(e);
            DelayTraceMoe(e);

            FunctionResult result = Event_GroupMessage.GroupMessage(e);

            if (result.SendFlag)
            {
                if (result.SendObject == null || result.SendObject.Count == 0)
                {
                    e.Handler = false;
                }
                foreach (var item in result.SendObject)
                {
                    foreach (var sendMsg in item.MsgToSend)
                    {
                        e.CQApi.SendGroupMessage(item.SendID, sendMsg);
                    }
                }
            }
            e.Handler = result.Result;
        }
Beispiel #7
0
        public static void EndRepeat(long qq, long group)
        {
            int i = List.data.FindIndex(m => m.qq == qq && m.group == group);

            if (i == -1)
            {
                List.data.Add(new member(qq, group)); i = List.data.Count - 1;
            }
            member me = List.data[i];

            me.encount++; List.data[i] = me;
            if (me.wcount == 10)
            {
                Event_GroupMessage.Achive(qq, "寒冷气息", Event_GroupMessage.Current);
            }
            if (me.wcount == 30)
            {
                Event_GroupMessage.Achive(qq, "绝对零度", Event_GroupMessage.Current);
            }
            if (me.wcount == 60)
            {
                Event_GroupMessage.Achive(qq, "-273.15℃", Event_GroupMessage.Current);
            }
        }
Beispiel #8
0
        public static void BoringRepeat(long qq, long group)
        {
            int i = List.data.FindIndex(m => m.qq == qq && m.group == group);

            if (i == -1)
            {
                List.data.Add(new member(qq, group)); i = List.data.Count - 1;
            }
            member me = List.data[i];

            me.bacount++; List.data[i] = me;
            if (me.wcount == 5)
            {
                Event_GroupMessage.Achive(qq, "刷屏带师", Event_GroupMessage.Current);
            }
            if (me.wcount == 10)
            {
                Event_GroupMessage.Achive(qq, "垃圾制造者", Event_GroupMessage.Current);
            }
            if (me.wcount == 20)
            {
                Event_GroupMessage.Achive(qq, "无语", Event_GroupMessage.Current);
            }
        }
Beispiel #9
0
        public static void FirstRepeat(long qq, long group)
        {
            int i = List.data.FindIndex(m => m.qq == qq && m.group == group);

            if (i == -1)
            {
                List.data.Add(new member(qq, group)); i = List.data.Count - 1;
            }
            member me = List.data[i];

            me.frcount++; List.data[i] = me;
            if (me.wcount == 100)
            {
                Event_GroupMessage.Achive(qq, "最受欢迎群员", Event_GroupMessage.Current);
            }
            if (me.wcount == 233)
            {
                Event_GroupMessage.Achive(qq, "鲁迅", Event_GroupMessage.Current);
            }
            if (me.wcount == 666)
            {
                Event_GroupMessage.Achive(qq, "精髓", Event_GroupMessage.Current);
            }
        }
Beispiel #10
0
        public static void Poster()
        {
posthead:
            Random r = new Random(Guid.NewGuid().GetHashCode());

            try
            {
                if (Event_GroupMessage.ProtectCount >= 3)
                {
                    Log($"trapped in bug:{ReportBUGTime},{GetTickCount()}");
                    if (ReportBUGTime > 0)
                    {
                        if (GetTickCount() >= ReportBUGTime)
                        {
                            Log($"Unlimited network:{Event_GroupMessage.ProtectCount}/ ms", ConsoleColor.Red);
                            ReportBUGTime = 0;
                            string bugr = $"{DateTime.Now.ToString()}\n" +
                                          "机器人在处理消息时发现消息流量异常,可能机器人进程被长时间挂起。" +
                                          "为了避免机器人继续处理消息导致暴走,已经切断消息处理。" +
                                          "请持有32766级别以上权限的用户发送.bugclose解除切断。" +
                                          $"\n异常消息流量:{Event_GroupMessage.ProtectCount}条/毫秒\n\n若无人协助,则切断将在{Event_GroupMessage.ProtectCount * 10}秒后解除。";
                            new QQ(pCQ, 1361778219).SendPrivateMessage(bugr);
                            List <GroupInfo> gi = pCQ.GetGroupList();
                            foreach (GroupInfo gii in gi)
                            {
                                //gii.Group.SendGroupMessage(bugr);
                            }
                        }
                    }
                    Event_GroupMessage.ProtectCount--;
                    Thread.Sleep(10000);
                    goto posthead;
                }

                if (r.Next(0, 1000) == 88)
                {
                    if (DateTime.Now.Hour >= 7 && DateTime.Now.Hour < 24)
                    {
                        List <GroupInfo> lg = pCQ.GetGroupList();
                        Event_GroupMessage.Artifical(lg[r.Next(0, lg.Count)].Group);
                    }
                }

                //OSU
                if (LastOSUTime == DateTime.Now.Hour && DateTime.Now.Minute == 30)
                {
                    Storage ignore = new Storage("ignore");
                    if (ignore.getkey("577344771", "artist") == "√")
                    {
                        goto NoPOSU;
                    }
                    LastOSUTime = (DateTime.Now.Hour + 1) % 24;
                    Group droid = new Group(pCQ, 577344771);
                    List <GroupMemberInfo> gml = droid.GetGroupMemberList();
                    GroupMemberInfo        gmi = gml[r.Next(0, gml.Count)];
                    long   qq      = gmi.QQ.Id;
                    string targett = MessagePoster.ptList[r.Next(0, MessagePoster.ptList.Count)];
                    ScriptDrawer.Draw("C:\\DataArrange\\PTemple\\" + targett + ".txt",
                                      MessagePoster.workpath + "\\data\\image\\" + targett + ".png",
                                      "[qq]", qq.ToString(),
                                      "[nick]", gmi.Nick,
                                      "[card]", gmi.Card == "" ? gmi.Nick : gmi.Card,
                                      "[sex]", gmi.Sex.ToString(),
                                      "[age]", gmi.Age.ToString(),
                                      "[group]", "577344771"
                                      );
                    droid.SendGroupMessage("现在是 " + DateTime.Now.Hour +
                                           "时30分 不整,恭喜幸运小朋友:" + CQApi.CQCode_At(qq) + "\n"
                                           + CQApi.CQCode_Image(targett + ".png"));
                }
NoPOSU:

                //BlackDied
                if (DateTime.Now.Hour == 24 || DateTime.Now.Hour == 0)
                {
                    if (DateTime.Now.Month == 3 && DateTime.Now.Day == 27)
                    {
                        if (!HasSendDie)
                        {
                            List <GroupInfo> gi = pCQ.GetGroupList();
                            foreach (GroupInfo gii in gi)
                            {
                                gii.Group.SendGroupMessage("今天。是黑嘴去世" + (DateTime.Now.Year - 2015) + "周年的日子。在这里打扰了大家,非常抱歉。\n黑嘴,名字来源于本机作者的一只狗,这只狗在本机作者的精神支柱上有很大的作用【虽然这听起来很荒唐】,它也渐渐在本机主人的脑子里逐渐扭曲抽象成了一种精神依靠。\n祝你在天堂快乐,黑嘴。       -3.27\n不接受任何对此条消息的议论。");
                            }
                            HasSendDie = true;
                        }
                    }
                }

                //Moring Protection
                Storage sys = new Storage("system");
                if (DateTime.Now.Hour >= 3 && DateTime.Now.Hour <= 5)
                {
                    if (sys.getkey("root", "sleep") != "zzz")
                    {
                        sys.putkey("root", "sleep", "zzz");
                        QQ master = new QQ(pCQ, 1361778219);
                        master.SendPrivateMessage("主人晚安~");
                        Console.Clear();
                        Log("[SLEEP] zzzzzzz");
                        logid = Guid.NewGuid().ToString();
                        //Application.Restart();
                        //System.Diagnostics.Process.Start(workpath + "\\CQA.exe", "/account 3529296290");
                        //System.Environment.Exit(0);
                    }
                    Thread.Sleep(1000);
                    goto posthead;
                }
                if (sys.getkey("root", "sleep") == "zzz")
                {
                    Log("[WAKE UP] ouch");
                    QQ master = new QQ(pCQ, 1361778219);
                    master.SendPrivateMessage("主人早上好~");
                    sys.putkey("root", "sleep", "!!");
                }

                Group g;
                //Say
                try
                {
                    for (int i = 0; i < delays.Count; i++)
                    {
resay:
                        delaymsg dm = delays[i];
                        if (GetTickCount() >= dm.time)
                        {
                            if (dm.voice == true)
                            {
                                SpeechSynthesizer reader = new SpeechSynthesizer();
                                string            fname  = GetTickCount().ToString();
                                reader.SetOutputToWaveFile(
                                    workpath + "\\data\\record\\say_" + fname + ".wav",
                                    new SpeechAudioFormatInfo(32000, AudioBitsPerSample.Sixteen, AudioChannel.Mono)
                                    );
                                reader.Rate   = -2 + new Random(Guid.NewGuid().GetHashCode()).Next(0, 4);
                                reader.Volume = 100;
                                //reader.SelectVoice("Microsoft Lili");
                                PromptBuilder builder = new PromptBuilder();
                                builder.AppendText(dm.msg);
                                Log("Speak started at :" + GetTickCount());
                                reader.Speak(builder);
                                Log("Speak successfully :" + GetTickCount());
                                reader.Dispose();
                                if (dm.kind == 0)
                                {
                                    new Group(pCQ, dm.group).SendGroupMessage(CQApi.CQCode_Record("say_" + fname + ".wav"));
                                }
                                else
                                {
                                    new QQ(pCQ, dm.group).SendPrivateMessage(CQApi.CQCode_Record("say_" + fname + ".wav"));
                                }
                            }
                            else
                            {
                                Log("Send successfully.");
                                if (dm.kind == 0)
                                {
                                    new Group(pCQ, dm.group).SendGroupMessage(dm.msg);
                                }
                                else
                                {
                                    new QQ(pCQ, dm.group).SendPrivateMessage(dm.msg);
                                }
                            }
                            delays.Remove(dm); goto resay;
                        }
                    }
                }
                catch
                {
                }

                //Undertale
                if (UT.targetg != 0)
                {
                    if (GetTickCount() - UT.tick >= 20000)
                    {
                        g = new Native.Csharp.Sdk.Cqp.Model.Group(pCQ, UT.targetg);
                        if (UT.winstr == "")
                        {
                            g.SendGroupMessage("nobody passed round" + UT.round + ",answer:" + UT.role);
                        }
                        else
                        {
                            g.SendGroupMessage("answer:" + UT.role + "\n" + UT.winstr);
                        }

                        if (UT.round == 5)
                        {
                            string playstr = "";
                            for (int i = 0; i < UT.ps.Count; i++)
                            {
                                playstr = playstr + CQApi.CQCode_At(UT.ps[i].qq) + " " + (int)(UT.ps[i].score * 10) / 10 + " points\n";
                            }
                            UT.targetg = 0;
                            g.SendGroupMessage("game closed\n" + playstr);
                        }
                        else
                        {
                            UT.nextRound(); UT.tick = GetTickCount();
                            g.SendGroupMessage("round " + UT.round + "(result:20s later):" + UT.dialog);
                        }
                    }
                }

                //Hot Poster
                string fstr = ""; string estr = ""; string[] qtemp;
                HotMsg hhmsg = new HotMsg();
                for (int s = 0; s < Manager.mHot.data.Count; s++)
                {
                    hhmsg = (HotMsg)Manager.mHot.data[s];
                    if (DateTime.Now.Hour >= 22 && hhmsg.hasup == false && TenClockLock == false)
                    {
                        TenClockLock = true;
                        Log("Annouce:" + hhmsg.group, ConsoleColor.Green);
                        qtemp = hhmsg.banqq.Split(';');
                        for (int i = 0; i < qtemp.Length - 1; i++)
                        {
                            estr = estr + CQApi.CQCode_At(Convert.ToInt64(qtemp[i]));
                        }
                        qtemp = hhmsg.qq.Split(';');
                        for (int i = 0; i < qtemp.Length - 1; i++)
                        {
                            fstr = fstr + CQApi.CQCode_At(Convert.ToInt64(qtemp[i]));
                        }
                        hhmsg.hasup = true;
                        g           = new Native.Csharp.Sdk.Cqp.Model.Group(pCQ, Convert.ToInt64(hhmsg.group));
                        g.SendGroupMessage(hhmsg.msg);
                        Manager.mHot.data[s] = hhmsg;
                    }
                }
                //Homework network
                string f = "0";
                if (File.Exists("C:\\DataArrange\\homeworklock.bin"))
                {
                    f = File.ReadAllText("C:\\DataArrange\\homeworklock.bin", Encoding.UTF8);
                }
                if (Convert.ToInt64(f) == 1)
                {
                    Log("New homework recevied !", ConsoleColor.Green);
                    f = File.ReadAllText("C:\\DataArrange\\homework.bin", Encoding.UTF8);
                    g = new Native.Csharp.Sdk.Cqp.Model.Group(pCQ, 817755769);
                    g.SendGroupMessage("[今日作业推送消息]\n" + f + "\n————来自黑嘴稽气人的自动推送");
                    File.WriteAllText("C:\\DataArrange\\homeworklock.bin", "0");
                }
                f = "";
                if (File.Exists("C:\\DataArrange\\announcer.bin"))
                {
                    f = File.ReadAllText("C:\\DataArrange\\announcer.bin", Encoding.UTF8);
                }
                if (f != "")
                {
                    Log("Announce:" + f, ConsoleColor.Green);
                    string[] p = f.Split('\\'); long gr = 0;
                    if (p[0] == "class")
                    {
                        gr = 817755769;
                    }
                    if (p[0] == "inter")
                    {
                        gr = 554272507;
                    }
                    g = new Native.Csharp.Sdk.Cqp.Model.Group(pCQ, gr);
                    switch (p[1])
                    {
                    case ("hlesson"):
                        f = "今天上午的网课出炉啦~\n地址:{url}\n往期网课精彩回顾:https://space.bilibili.com/313086171/channel/detail?cid=103565 ".Replace("{url}", p[2]);
                        break;

                    case ("lesson"):
                        f = "今天全天的网课出炉啦~\n地址:{url}\n往期网课精彩回顾:https://space.bilibili.com/313086171/channel/detail?cid=103565 ".Replace("{url}", p[2]);
                        break;

                    case ("default"):
                        f = p[2];
                        break;

                    default:
                        Log("Unkown announce .", ConsoleColor.Red);
                        return;
                    }
                    g.SendGroupMessage("[通知]\n" + f + "\n————来自黑嘴稽气人的自动推送");
                    File.WriteAllText("C:\\DataArrange\\announcer.bin", "");
                }
            }
            catch (Exception err)
            {
                Log(err.StackTrace + "\n" + err.Message, ConsoleColor.Red);
            }
            Thread.Sleep(1000);
            goto posthead;
        }