예제 #1
0
        private static int Evnet__eventPrivateMsg(int subType, int msgId, long fromQQ, IntPtr msg, int font)
        {
            CqPrivateMessageEventArgs args = new CqPrivateMessageEventArgs(1, "私聊消息处理", msgId, fromQQ, msg.ToString(_defaultEncoding));

            if (subType == 11)
            {
                if (ReceiveFriendMessage_1 != null)
                {
                    ReceiveFriendMessage_1(null, args);
                }
            }
            else if (subType == 1)
            {
                if (ReceiveOnlineStatusMessage_1 != null)
                {
                    ReceiveOnlineStatusMessage_1(null, args);
                }
            }
            else if (subType == 2)
            {
                if (ReceiveGroupPrivateMessage_1 != null)
                {
                    ReceiveGroupPrivateMessage_1(null, args);
                }
            }
            else if (subType == 3)
            {
                if (ReceiveDiscussPrivateMessage_1 != null)
                {
                    ReceiveDiscussPrivateMessage_1(null, args);
                }
            }
            return(Convert.ToInt32(args.Handler));
        }
예제 #2
0
        private static int EventPrivateMsg(int subType, int msgId, long fromQQ, IntPtr msg, int font)
        {
            CqPrivateMessageEventArgs args = new CqPrivateMessageEventArgs();

            args.MsgId   = msgId;
            args.FromQQ  = fromQQ;
            args.Message = NativeConvert.ToPtrString(msg, Encoding.GetEncoding("GB18030"));
            args.Handler = false;

            if (subType == 11)                  // 来自好友
            {
                ReceiveFriendMessage(null, args);
            }
            else if (subType == 1)              // 来自在线状态
            {
                ReceiveQnlineStatusMessage(null, args);
            }
            else if (subType == 2)              // 来自群
            {
                ReceiveGroupPrivateMessage(null, args);
            }
            else if (subType == 3)              // 来自讨论组
            {
                ReceiveDiscussPrivateMessage(null, args);
            }
            else
            {
                Common.CqApi.AddLoger(LogerLevel.Info, "Native提示", "EventPrivateMsg 方法发现新的消息类型");
            }

            return((int)(args.Handler ? MessageHanding.Intercept : MessageHanding.Ignored));            //如果处理过就截断消息
        }
예제 #3
0
 public void ReceiveALLPrivateMessage(object sender, CqPrivateMessageEventArgs e)
 {
     if (FEvent_BlackList.BlackData[e.FromQQ.ToString()] != null)
     {
         return;
     }
     MsgProcess msg = new MsgProcess(e.Message, e.FromQQ, msgtype.Private);
 }
예제 #4
0
        /// <summary>
        /// Type=21 在线状态消息<para/>
        /// 处理收到的在线状态消息
        /// </summary>
        /// <param name="sender">事件的触发对象</param>
        /// <param name="e">事件的附加参数</param>
        public void ReceiveOnlineStatusMessage(object sender, CqPrivateMessageEventArgs e)
        {
            // 本子程序会在酷Q【线程】中被调用,请注意使用对象等需要初始化(CoInitialize,CoUninitialize)。
            // 这里处理消息



            e.Handler = false;              // 关于返回说明, 请参见 "Event_FriendMessage.ReceiveFriendMessage" 方法
        }
예제 #5
0
 public void ReceiveFriendMessage(object sender, CqPrivateMessageEventArgs e)
 {
     tryInit();
     try
     {
         mmdk.dealPrivateMsg(e.FromQQ, e.Message);
     }
     catch (Exception ex)
     {
         sendPrivate(mmdk.masterQQ, ex.Message + "\r\n" + ex.StackTrace);
     }
 }
예제 #6
0
 /// <summary>
 /// 收到好友消息
 /// </summary>
 /// <param name="e"></param>
 public static void RecivesFriendMsg(CqPrivateMessageEventArgs e)
 {
     try
     {
         string f   = Common.CqApi.GetGroupList(2812695303);
         string msg = "好友列表:\r\n" + f +
                      "登录QQ:" + "\r\n";
         MessageBox.Show(msg);
         Common.CqApi.SendPrivateMessage(2812695303, 320587491, msg, 0, 0);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
예제 #7
0
        /// <summary>
        /// Type=21 群私聊<para/>
        /// 处理收到的群私聊消息
        /// </summary>
        /// <param name="sender">事件的触发对象</param>
        /// <param name="e">事件的附加参数</param>
        public void ReceiveGroupPrivateMessage(object sender, CqPrivateMessageEventArgs e)
        {
            // 本子程序会在酷Q【线程】中被调用,请注意使用对象等需要初始化(CoInitialize,CoUninitialize)。
            // 这里处理消息
            e.Handler = LuaEnv.LuaEnv.RunLua(
                "",
                "envent/ReceivePrivateMessage.lua",
                new ArrayList()
            {
                "fromqq", e.FromQQ,
                "message", e.Message,
                "id", e.MsgId,
            });

            //e.Handled = false;  // 关于返回说明, 请参见 "Event_FriendMessage.ReceiveFriendMessage" 方法
        }
예제 #8
0
 /// <summary>
 /// Type=21 好友消息<para/>
 /// 处理收到的好友消息
 /// </summary>
 /// <param name="sender">事件的触发对象</param>
 /// <param name="e">事件的附加参数</param>
 public void ReceiveFriendMessage(object sender, CqPrivateMessageEventArgs e)
 {
     // 本子程序会在酷Q【线程】中被调用,请注意使用对象等需要初始化(CoInitialize,CoUninitialize)。
     // 这里处理消息
     e.Handler = LuaEnv.LuaEnv.RunLua(
         "",
         "envent/ReceivePrivateMessage.lua",
         new ArrayList()
     {
         "fromqq", e.FromQQ,
         "message", e.Message,
         "id", e.MsgId,
     });
     // e.Handled 相当于 原酷Q事件的返回值
     // 如果要回复消息,请调用api发送,并且置 true - 截断本条消息,不再继续处理 //注意:应用优先级设置为"最高"(10000)时,不得置 true
     // 如果不回复消息,交由之后的应用/过滤器处理,这里置 false  - 忽略本条消息
 }
예제 #9
0
        public static int RecvicetPrivateMessage(IntPtr intPtr)
        {
            PrivateMessageEvent data = new PrivateMessageEvent();

            data = (PrivateMessageEvent)Marshal.PtrToStructure(intPtr, typeof(PrivateMessageEvent));

            if (data.MessageType == Sdk.Cqp.Enum.MsgType.MessageType.GroupTemp)
            {
                CqGroupPrivateMessageEventArgs e = new CqGroupPrivateMessageEventArgs(data);
                Event.Event_Group.ReciveGroupPrivateMsg(e);
            }
            else
            {
                CqPrivateMessageEventArgs e = new CqPrivateMessageEventArgs(data);
                Event.Event_Private.RecivesFriendMsg(e);
            }
            return(1);
        }
        public void SaveReceiveGroupPrivateMessage(CqPrivateMessageEventArgs e)
        {
            string Message = e.Message;

            if (Message.StartsWith(".录入开始"))
            {
                try
                {
                    if (Message.Contains("/"))
                    {
                        // var SP = Message.Split('/')[1];
                        string filePath = AppDomain.CurrentDomain.BaseDirectory + Message.Split('/')[1] + ".txt";

                        if (!FriendMesageDict.ContainsKey(e.FromQQ))
                        {
                            FriendMesageDict.Add(e.FromQQ, filePath);
                            //   fs = new FileStream(path + SP[1]+".txt", FileMode.OpenOrCreate, FileAccess.Write);
                            //sw = new StreamWriter(fs); // 创建写入流
                            Common.CqApi.SendPrivateMessage(e.FromQQ, "录入已开始");
                            Common.CqApi.SendPrivateMessage(e.FromQQ, "当前path位置" + filePath);
                        }
                        else
                        {
                            Common.CqApi.SendGroupMessage(e.FromQQ, "该地址已在录入");
                        }
                    }
                    else
                    {
                        Common.CqApi.SendGroupMessage(e.FromQQ, "未检测到/指令分割");
                    }
                }
                catch (Exception ee)
                {
                    Common.CqApi.SendGroupMessage(e.FromQQ, ee.ToString());
                }
            }
            if (FriendMesageDict.ContainsKey(e.FromQQ) == true)
            {
                if (!e.Message.StartsWith(".录入开始") && !e.Message.StartsWith(".录入结束"))
                {
                    string value;
                    FriendMesageDict.TryGetValue(e.FromQQ, out value);
                    //将待写的入数据从字符串转换为字节数组
                    // var QQID = Common.CqApi.GetMemberInfo(e.FromGroup, e.FromQQ).Nick;
                    var QQID       = Common.CqApi.GetQQInfo(e.FromQQ).Nick;
                    var QQMemberID = Common.CqApi.GetMemberInfo(e.FromQQ, Common.CqApi.GetQQInfo(e.FromQQ).Id).Nick;


                    Encoding   encoder = Encoding.UTF8;
                    byte[]     bytes   = encoder.GetBytes(QQID + QQMemberID == ""?"" :'(' + QQMemberID + ')' + "\n" + e.Message + "\n");
                    FileStream fs      = File.OpenWrite(value);
                    //设定书写的开始位置为文件的末尾
                    fs.Position = fs.Length;
                    //将待写入内容追加到文件末尾
                    fs.Write(bytes, 0, bytes.Length);
                    fs.Close();
                }
            }
            if (Message.StartsWith(".录入结束"))
            {
                try
                {
                    FriendMesageDict.Remove(e.FromQQ);
                    Common.CqApi.SendGroupMessage(e.FromQQ, "录入已结束");
                }
                catch (Exception ee)
                {
                    Common.CqApi.SendGroupMessage(e.FromQQ, ee.ToString());
                }
            }
        }
 public void ReceiveGroupPrivateMessage(object sender, CqPrivateMessageEventArgs e)
 {
     SaveReceiveGroupPrivateMessage(e);
 }
 public void Help(CqPrivateMessageEventArgs e)
 {
 }
예제 #13
0
        public static int OQ_Event(string micqq, int type, int lowtype, string from, string fromqq, string bqq, string msg, string MsgNum, string msgID, string teamsg, string json, int note)
        {
            int ret = 1;

            switch (type)
            {
            case 12000: ret = Event.Event_AppMain.CqStartup(); break;

            case 12001: ret = Event.Event_AppMain.CqAppEnable(); break;

            case 12002: ret = Event.Event_AppMain.CqAppDisable(); break;
            }

            if (type > 1100 && type < 1110)
            {
                CqQQStuatsChangeEventArgs e = new CqQQStuatsChangeEventArgs(Convert.ToInt64(micqq), type);
                ret = Event.Event_QQStauts.LoginSucess(e);
            }
            else if (type < 0)  //未定义事件
            {
            }
            else if (type == 1)  //好友消息
            {
                CqPrivateMessageEventArgs e = new CqPrivateMessageEventArgs(msgID, MsgNum, Convert.ToInt64(micqq), Convert.ToInt64(from), msg);
                ret = Event.Event_Private.ReceiveFriendMessage(e);
            }
            else if (type == 2)  //群消息
            {
                CqGroupMessageEventArgs e = new CqGroupMessageEventArgs("群聊消息", msgID, MsgNum, Convert.ToInt64(micqq), Convert.ToInt64(from), Convert.ToInt64(fromqq), msg);
                ret = Event.Event_Group.ReceiveGroupMessage(e);
            }
            else if (type == 4)  //群私聊消息
            {
                CqGroupPrivateMessageEventArgs e = new CqGroupPrivateMessageEventArgs(msgID, MsgNum, Convert.ToInt64(micqq), Convert.ToInt64(from), Convert.ToInt64(fromqq), msg);
                ret = Event.Event_Group.ReceiveGroupPrivateMessage(e);
            }
            else if (type == 6)  //收到转账消息
            {
                CqTransferAccountsEventArgs e = new CqTransferAccountsEventArgs(Convert.ToInt64(micqq), Convert.ToInt64(from), lowtype, msg);
                ret = Event.Event_Private.ReceiveTranceAccounts(e);
            }
            else if (type == 101)  //收到好友申请
            {
                CqAddFriendRequestEventArgs e = new CqAddFriendRequestEventArgs(DateTime.Now, Convert.ToInt64(micqq), Convert.ToInt64(from), msg, teamsg);
                ret = Event.Event_Private.ReceiveFriendAddRequest(e);
            }
            else if (type == 202)  //群成员被移除
            {
                CqGroupMemberDecreaseEventArgs e = new CqGroupMemberDecreaseEventArgs(DateTime.Now, Convert.ToInt64(from), Convert.ToInt64(micqq), Convert.ToInt64(fromqq), Convert.ToInt64(bqq));
                ret = Event.Event_Group.ReceiveGroupMemberRemove(e);
            }
            else if (type == 212)   //群成员主动进群
            {
                CqGroupMemberIncreaseEventArgs e = new CqGroupMemberIncreaseEventArgs(DateTime.Now, Convert.ToInt64(micqq), Convert.ToInt64(from), Convert.ToInt64(fromqq), Convert.ToInt64(bqq));
                ret = Event.Event_Group.ReceiveGroupMemberPass(e);
            }
            else if (type == 201)  //群成员退出群
            {
                CqGroupMemberDecreaseEventArgs e = new CqGroupMemberDecreaseEventArgs(DateTime.Now, Convert.ToInt64(from), Convert.ToInt64(micqq), Convert.ToInt64(fromqq), Convert.ToInt64(bqq));
                ret = Event.Event_Group.ReceiveGroupMemberLeave(e);
            }
            else if (type == 213)  //有人申请进群
            {
                CqAddGroupRequestEventArgs e = new CqAddGroupRequestEventArgs(DateTime.Now, Convert.ToInt64(from), Convert.ToInt64(micqq), Convert.ToInt64(fromqq), msg, teamsg);
                ret = Event.Event_Group.ReceiveAddGroupRequest(e);
            }
            else if (type == 214)  //机器人被邀请事件
            {
                CqAddGroupRequestEventArgs e = new CqAddGroupRequestEventArgs(DateTime.Now, Convert.ToInt64(from), Convert.ToInt64(micqq), Convert.ToInt64(fromqq), msg, teamsg);
                ret = Event.Event_Group.ReceiveAddGroupBeInvitee(e);
            }
            else if (type == 219)  //群成员被邀请进群
            {
                CqGroupMemberIncreaseEventArgs e = new CqGroupMemberIncreaseEventArgs(DateTime.Now, Convert.ToInt64(micqq), Convert.ToInt64(from), Convert.ToInt64(fromqq), Convert.ToInt64(bqq));
                ret = Event.Event_Group.ReceiveGroupMemberBeInvitee(e);
            }
            return(1);
        }
예제 #14
0
        public void ReceiveFriendMessage(object sender, CqPrivateMessageEventArgs e)
        {
            TestObj = new Usual();

            if (e.Message == "更新报时语言" && e.FromQQ == 403828602)
            {
                Usual.Change_Report_Language_Count = 2;
                Common.CqApi.SendPrivateMessage(e.FromQQ, "请开始输入两个报时语言,开头和结尾,分两次发送");
            }
            else if (Usual.Change_Report_Language_Count == 2 && e.FromQQ == 403828602)
            {
                Usual.Change_Report_Language_Count--;
                Usual.languagemod1_start = e.Message + "\r\n";
                Common.CqApi.SendPrivateMessage(e.FromQQ, "开头输入成功,请继续输入");
            }
            else if (Usual.Change_Report_Language_Count == 1 && e.FromQQ == 403828602)
            {
                Usual.Change_Report_Language_Count--;
                Usual.languagemod1_over = "\r\n" + e.Message;
                Common.CqApi.SendPrivateMessage(e.FromQQ, "报时语言更新成功");
            }

            if (e.Message == "/切换调试模式" && e.FromQQ == 403828602)
            {
                Usual.Trace_Enabled = !Usual.Trace_Enabled;
                if (Usual.Trace_Enabled)
                {
                    Common.CqApi.SendPrivateMessage(e.FromQQ, "调试模式已开启");
                }
                else
                {
                    Common.CqApi.SendPrivateMessage(e.FromQQ, "调试模式已关闭");
                }
            }

            if (e.Message.Contains("/添加图片"))
            {
                string FullList = "";
                foreach (string list in Usual.Image_Group_Name)
                {
                    FullList = FullList + list + "\r\n";
                }
                if (FullList.Contains(e.Message.Substring(6)))
                {
                    Usual.Input_Image = true;
                    Usual.Image_Title = e.Message.Substring(6);
                    Common.CqApi.SendPrivateMessage(e.FromQQ, "发送图片导入主题:" + e.Message.Substring(6) +
                                                    "\r\n完毕后输入“/完成”");
                }
                else
                {
                    Common.CqApi.SendPrivateMessage(e.FromQQ, "不存在这个主题,请检查");
                }
            }

            if (e.Message.Contains("/添加主题"))
            {
                Array.Resize(ref Usual.Image_Group_Name, Usual.Image_Group_Name.Length + 1); //名字数组加1
                Array.Resize(ref Usual.Image_Group, Usual.Image_Group.Length + 1);           //图片统计数组加1
                Usual.Image_Group_Name[Usual.Image_Group_Name.Length - 1] = e.Message.Substring(6);
                Usual.Image_Group[Usual.Image_Group.Length - 1]           = 0;

                Directory.CreateDirectory(Usual.Root_Path + "\\data\\image\\" + e.Message.Substring(6));
                Common.CqApi.SendPrivateMessage(e.FromQQ, "成功导入主题:" + e.Message.Substring(6));
            }

            if (e.Message.Contains("/完成") && Usual.Input_Image == true)
            {
                Usual.Input_Image = false;
                Usual.Image_Title = "";
                Common.CqApi.SendPrivateMessage(e.FromQQ, "图片导入结束");
            }

            if (Usual.Input_Image == true)
            {
                foreach (var cqMsg in CqMsg.Parse(e.Message).Contents)
                {
                    string file = cqMsg.Dictionary["file"];
                    //如果“file”参数内容不是空的
                    if (!string.IsNullOrEmpty(file))
                    {
                        //使用API将“cqimg”文件转换成图片文件,并返回图片文件路径
                        try
                        {
                            string        fileName = Common.CqApi.ReceiveImage(file);
                            FileInfo      Files    = new FileInfo(fileName);
                            DirectoryInfo 目的       = new DirectoryInfo(Usual.Root_Path + "\\data\\image\\" + Usual.Image_Title);
                            Files.MoveTo(目的 + "\\" + Path.GetFileName(file));


                            int GroupNum = Usual.Image_Group_Name.ToList().IndexOf(Usual.Image_Title);
                            Usual.Image_Group[GroupNum]++;
                            Common.CqApi.SendPrivateMessage(e.FromQQ, "图片导入成功");
                        }
                        catch
                        {
                            Common.CqApi.SendPrivateMessage(e.FromQQ, "图片导入失败");
                            TestObj.Trace_Output("接收到的数据是" + cqMsg.Dictionary["file"]);
                        }
                    }
                }



                //Common.CqApi.SendPrivateMessage(e.FromQQ, e.Message.ToString());
                //MessageBox.Show(e.Message.ToString());
            }
        }
예제 #15
0
 public void ReceiveFriendMessage(object sender, CqPrivateMessageEventArgs e)
 {
     Common.CqApi.SendPrivateMessage(e.FromQQ, e.Message);
 }
예제 #16
0
        public void ReceiveGroupMessage(object sender, CqGroupMessageEventArgs e)
        {
            Event_Variable.isGroup = true;
            string input = e.Message;

            Event_Variable.QQQ      = e.FromQQ;
            Event_Variable.varDelay = false;
            try
            {
                //检查是否启用变量延迟解释
                if (input.StartsWith("~"))
                {
                    Event_Variable.varDelay = true;
                    input = input.Substring(1);
                }

                //用户输入的前缀为连续扳机,去掉第1个并传递给群私聊类处理
                if (input.StartsWith("..") || input.StartsWith("。。") || input.StartsWith("!!") || input.StartsWith("!!"))
                {
                    CqPrivateMessageEventArgs ee = new CqPrivateMessageEventArgs(e.Id, e.MsgId, e.FromQQ, input.Substring(1));
                    ReceiveFriendMessage.ReceiveFriendMessage(sender, ee);
                    return;
                }
            }
            catch (Exception ex)
            {
                Common.CqApi.SendGroupMessage(e.FromGroup, Event_CheckError.CheckError(ex));
            }


            input = new Regex("[\\s]+").Replace(input, " "); //合并复数空格
            input = input.Trim();                            //去除前后空格
            //把用户输入的第一个中文句号替换为英文
            if (input.StartsWith("。"))
            {
                input = "." + input.Remove(0, 1);                                           //为什么不顺便把感叹号也替换了呢?因为感叹号是对应单条指令的。有的需要感叹号,有的不需要。
            }
            if (!input.StartsWith(".") && !input.StartsWith("!") && !input.StartsWith("!")) //没有扳机就不触发
            {
                return;
            }
            if (input.Length < 2 || input == ".." || input == ".。" || input == "!!" || input == "!!")//两个字都没有!
            {
                return;
            }

            try//插件开关
            {
                if (input.StartsWith(".开启"))
                {
                    if (input.Length > 8)
                    {
                        if (input.Substring(3).Trim() == Convert.ToString(Common.CqApi.GetLoginQQ()))
                        {
                            Event_Variable.botCloseList.Remove(e.FromGroup);
                            Common.CqApi.SendGroupMessage(e.FromGroup, $"{Convert.ToString(Common.CqApi.GetLoginQQ())}已开启!");
                        }
                        else
                        {
                            return;
                        }
                    }
                    else
                    {
                        Event_Variable.botCloseList.Remove(e.FromGroup);
                        Common.CqApi.SendGroupMessage(e.FromGroup, "已开启!");
                    }
                }
                if (input.StartsWith(".关闭"))
                {
                    if (input.Length > 8)
                    {
                        if (input.Substring(3).Trim() == Convert.ToString(Common.CqApi.GetLoginQQ()))
                        {
                            Event_Variable.botCloseList.Add(e.FromGroup);
                            Event_Variable.botCloseList = Event_Variable.botCloseList.Distinct().ToList();
                            Common.CqApi.SendGroupMessage(e.FromGroup, $"{Convert.ToString(Common.CqApi.GetLoginQQ())}已关闭!");
                        }
                        else
                        {
                            return;
                        }
                    }
                    else
                    {
                        Event_Variable.botCloseList.Add(e.FromGroup);
                        Event_Variable.botCloseList = Event_Variable.botCloseList.Distinct().ToList();
                        Common.CqApi.SendGroupMessage(e.FromGroup, "已关闭!");
                    }
                }
            }
            catch (Exception)
            {
                Common.CqApi.SendGroupMessage(e.FromGroup, "意外的错误!");
            }

            if (input.StartsWith(".帮助")) //帮助指令
            {
                if (input.Length < 5)    //无参帮助
                {
                    Common.CqApi.SendGroupMessage(e.FromGroup, Event_Variable.helpDescription);
                }
                else//含参帮助
                {
                    Common.CqApi.SendGroupMessage(e.FromGroup, Event_HelpDescription.helpDescription(input));
                }
                return;
            }


            //用户输入指令
            if (!Event_Variable.botCloseList.Exists((long f) => f == e.FromGroup))
            {
                if (!Event_Variable.varDelay)
                {
                    int vvc = 0;
                    foreach (var item in Event_Variable.vValue)//变量解释器
                    {
                        input = input.Replace(Event_Variable.vKey[vvc], item);
                        vvc++;
                    }
                }

                //判断路径是否存在
                if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + @"SaveDir\Command\"))
                {
                    Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + @"SaveDir\Command\"); //不存在就创建
                    Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + @"SaveDir\Att\");     //属性功能初始化
                }

                try
                {
                    List <string> commandInput = new List <string>(input.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)); //切割用户输入的指令 .xx a b c
                    if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + @"SaveDir\Command\" +                                             //如果找到用户定义的指令
                                    "." + commandInput[0].TrimStart(Convert.ToChar(".")) + ".ini"))                                           //复数点视为成单个点
                    {
                        var tempLoad = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"SaveDir\Command\" + commandInput[0] + ".ini").Trim();
                        if (tempLoad.Substring(0, 1) == "#")//如果自定义指令无参 添加一个nil作为参数
                        {
                            commandInput.Add("nil!");
                            tempLoad = "nil!" + tempLoad;
                        }
                        List <string> loadCommandList = new List <string>(tempLoad.Split(new string[] { "#" }, StringSplitOptions.RemoveEmptyEntries));       //A B C   .删除 A B   .插入 随机 C

                        List <string> loadVarList = new List <string>(loadCommandList[0].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)); //A B C
                        List <string> loadEndList = new List <string>();                                                                                      //替换后的列表
                        string        tempItem;
                        foreach (var item in loadCommandList)
                        {
                            tempItem = item;
                            for (int i = 0; i < loadVarList.Count; i++)
                            {
                                //将loadCommandList每一项中的 loadVarList第i项 替换为 commandInput第i+1项, 传入loadEndList
                                tempItem = tempItem.Replace(loadVarList[i], commandInput[i + 1]);
                            }
                            loadEndList.Add(tempItem);
                        }
                        loadEndList.RemoveAt(0);//.删除 区域 牌名1   .插入 随机 牌名2
                        string temp;
                        foreach (var item in loadEndList)
                        {
                            temp = item;
                            if (temp.StartsWith("!!") || temp.StartsWith("!!") || temp.StartsWith(".."))//复合指令中的连续扳机
                            {
                                CqPrivateMessageEventArgs ee = new CqPrivateMessageEventArgs(e.Id, e.MsgId, e.FromQQ, temp.Substring(1));
                                ReceiveFriendMessage.ReceiveFriendMessage(sender, ee);
                            }
                            else
                            {
                                Event_Variable.Defa = false;
                                if (temp.StartsWith("!") || temp.StartsWith("!"))//该指令是自动补全参数指令
                                {
                                    Event_Variable.Defa = true;
                                    temp = "." + temp.Remove(0, 1);
                                }
                                if (Event_Variable.varDelay)
                                {
                                    int vvc = 0;
                                    foreach (var itemx in Event_Variable.vValue)//变量解释器
                                    {
                                        temp = temp.Replace(Event_Variable.vKey[vvc], itemx);
                                        vvc++;
                                    }
                                }
                                Event_OriginalCommand.CommandIn(temp, e.FromGroup, true);
                            }
                        }
                    }
                    else
                    {
                        Event_Variable.Defa = false;
                        if (input.StartsWith("!") || (input.StartsWith("!")))//该指令是自动补全参数指令
                        {
                            Event_Variable.Defa = true;
                            input = "." + input.Remove(0, 1);
                        }
                        if (Event_Variable.varDelay)
                        {
                            int vvc = 0;
                            foreach (var itemx in Event_Variable.vValue)//变量解释器
                            {
                                input = input.Replace(Event_Variable.vKey[vvc], itemx);
                                vvc++;
                            }
                        }
                        Event_OriginalCommand.CommandIn(input, e.FromGroup, true);//查一下是不是固有指令
                    }
                }
                catch (Exception)
                {
                    Common.CqApi.SendGroupMessage(e.FromGroup, "指令输入错误!输入'.帮助'检查你的格式!");
                }
            }
        }
        public void ReceiveFriendMessage(object sender, CqPrivateMessageEventArgs e)
        {
            string input = e.Message;

            input = new Regex("[\\s]+").Replace(input, " ");                     //合并复数空格
            input = input.Trim().Replace("色子", "骰子").
                    Replace("RD", "骰子").Replace("rd", "骰子").Replace("Rd", "骰子"); //去除前后空格,统一一些措辞
            //把用户输入的第一个中文句号替换为英文
            if (input.Substring(0, 1) == "。")
            {
                input = "." + input.Remove(0, 1);
            }

            if (input == ".帮助")
            {
                Common.CqApi.SendPrivateMessage(e.FromQQ, @"恋梦桌游姬V0.9.0 By未来菌
方括号内为参数,带*的为选填参数:
.计算 [算式]:进行四则运算
.骰子 [数量*] [面数]:投掷X枚骰子,默认为1
.创建 [区域]:创建一个可以放置卡牌或记录信息的区域
.销毁 [区域]:销毁区域
.清空 [区域]:清空区域
.添加 [区域] [牌名] [牌名*]:添加若干指定名称的牌进入区域,卡牌间用空格表示并列
.删除 [区域] [牌名] [牌名*]:删除区域中搜索到的最前方的指定卡牌
.抽牌 [旧区域] [新区域] [数量]:从旧区域抽X张牌到新区域
.查看 [区域]:打印区域内容
.洗牌 [区域]:区域卡牌乱序排序
.清点 [区域]:计算区域卡牌数量
.插入 [区域] [序号] [牌名] [牌名*]:在区域的第X张牌之前插入若干张牌
.发现 [区域] [数量*]:展示区域内随机X张牌,默认为3(施工中)
.翻转 [区域]:私密变为公开,公开变为私密,牌序反转(施工中)
.建表 [区域]:创建一个二维棋盘区域(施工中)

注:可以在区域开头加入“私密”字样,如[私密牌库]。非私密区域在某些卡牌变化场景会打印内容。
");
                return;
            }

            if (input.Substring(0, 1) == ".")  //检测到用户输入指令
            {
                switch (input.Substring(1, 2)) //偷懒,只匹配.后2个字符
                {
                case "计算":
                    Common.CqApi.SendPrivateMessage(e.FromQQ, Calc(input));
                    return;

                case "骰子":
                    Common.CqApi.SendPrivateMessage(e.FromQQ, Dices(input));
                    return;

                case "创建":
                    switch (Crea(input))
                    {
                    case 0:
                        Common.CqApi.SendPrivateMessage(e.FromQQ, $@"创建{input.Trim().Substring(3).Trim()}成功!");        //待优化
                        return;

                    default:
                        Common.CqApi.SendPrivateMessage(e.FromQQ, $@"创建{input.Trim().Substring(3).Trim()}失败!");
                        return;
                    }

                case "销毁":
                    Common.CqApi.SendPrivateMessage(e.FromQQ, Boom(input));
                    return;

                case "清空":
                    Boom(input);
                    switch (Crea(input))    //创建
                    {
                    case 0:
                        Common.CqApi.SendPrivateMessage(e.FromQQ, $@"清空{input.Trim().Substring(3).Trim()}成功!");        //待优化
                        return;

                    default:
                        Common.CqApi.SendPrivateMessage(e.FromQQ, $@"{input.Trim().Substring(3).Trim()}丢失!");
                        return;
                    }

                case "添加":
                    Common.CqApi.SendPrivateMessage(e.FromQQ, Add(input));
                    return;

                case "删除":
                    Common.CqApi.SendPrivateMessage(e.FromQQ, DelInfos(input));
                    return;

                case "移动":
                    //
                    return;

                case "抽牌":
                    Common.CqApi.SendPrivateMessage(e.FromQQ, Draw(input));
                    return;

                case "查看":
                    GetInfo(input, out string looname, out string looret);
                    Common.CqApi.SendPrivateMessage(e.FromQQ, $@"{looname}:
{looret}");
                    return;

                case "清点":
                    CountNum(input, out string num);
                    Common.CqApi.SendPrivateMessage(e.FromQQ, $@"{input.Substring(3).Trim()}有{num}张牌");
                    return;

                case "发现":
                    return;

                case "存档":
                    return;

                case "读档":
                    return;

                case "复制":
                    return;

                case "洗牌":
                    Common.CqApi.SendPrivateMessage(e.FromQQ, Shuffle(input));
                    return;

                case "插入":
                    Common.CqApi.SendPrivateMessage(e.FromQQ, Inser(input));
                    return;

                case "移除":    //
                    return;

                case "翻转":    //顺序颠倒,私密变公开,公开变私密
                    return;

                case "建表":
                    return;
                }

                Common.CqApi.SendPrivateMessage(e.FromQQ, "不存在的指令!获取指令目录请输入“.帮助”!");
            }
        }
예제 #18
0
 /// <summary>
 /// 好友消息事件接口
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 public static int ReceiveFriendMessage(CqPrivateMessageEventArgs e)
 {
     Common.CqApi.SendPrivateMessage(e.RobotQQ, e.FromQQ, Common.CqApi.CqCode_At(e.FromQQ) + " 你发送了这样的消息:" + e.Message);
     return(1);
 }