예제 #1
0
 public override int ProcessGroupMemberIncrease(int subType, int sendTime, long fromGroup, long fromQq,
                                                long target)
 {
     CoolQApi.SendGroupMsg(fromGroup,
                           $"{CoolQCode.At(fromQq)}\r\n新人捐赠时间,一分也是情,一分也是爱\r\nhttp://git.oschina.net/yks/Newbe.CQP.Framework\r\n{CoolQCode.Image("image.jpg")}");
     return(base.ProcessGroupMemberIncrease(subType, sendTime, fromGroup, fromQq, target));
 }
        private void printOutput(QQInfo info)
        {
            long qqnum = info.qq;
            //截断输出内容,分段输出,防止其超过插件限制的字数
            int maxlen = 50;

            if (info.info.Length > maxlen)
            {
                info.info = info.info.Substring(0, maxlen) + "...";
            }
            if (info.isgroup)
            {
                CoolQApi.SendGroupMsg(qqnum, info.info);
            }
            else
            {
                CoolQApi.SendPrivateMsg(qqnum, info.info);
            }

            //for (int i = 0; i <= info.info.Length / maxlen; i++)
            //{
            //    string tmpstr = "";
            //    if (info.info.Length <= i * maxlen + maxlen)
            //    {
            //        tmpstr = info.info.Substring(i * maxlen, info.info.Length - i * maxlen);
            //    }
            //    else
            //    {
            //        tmpstr = info.info.Substring(i * maxlen, maxlen);
            //    }
            //    if (info.isgroup) CoolQApi.SendGroupMsg(qqnum, tmpstr);
            //    else CoolQApi.SendPrivateMsg(qqnum, tmpstr);
            //}
        }
예제 #3
0
        /// <summary>
        /// 处理群成员添加事件
        /// </summary>
        /// <param name="subType">事件类型。1为管理员已同意;2为管理员邀请</param>
        /// <param name="sendTime">事件发生时间的时间戳</param>
        /// <param name="fromGroup">事件来源群号</param>
        /// <param name="fromQq">事件来源QQ</param>
        /// <param name="target">被操作的QQ</param>
        /// <returns></returns>
        public override int ProcessGroupMemberIncrease(int subType, int sendTime, long fromGroup, long fromQq, long target)
        {
            //mainForm.displayMsg2("处理群成员添加事件:" + subType + "," + sendTime + "," + fromGroup + "," + fromQq + "," + target);
            if (!string.IsNullOrWhiteSpace(CacheData.BaseJson.NewerEnterQun))
            {
                string content = CacheData.BaseJson.NewerEnterQun.Replace("{@新用户}", CoolQCode.At(target));

                //成员添加后,进行@用户,外加欢迎与
                if (subType == 1)//账号为管理员,同意群员入群后触发
                {
                    //CoolQApi.SendGroupMsg(fromGroup, CoolQCode.At(target) + "欢迎加入我们的大家庭");
                    //mainForm.displayMsg2("---给用户发送欢迎语:"+ CoolQCode.At(target) + "欢迎加入我们的大家庭");
                    CoolQApi.SendGroupMsg(fromGroup, content);
                }
                else if (subType == 2)//群员邀请好友,好友同意并入群后触发
                {
                    //CoolQApi.SendGroupMsg(fromGroup, CoolQCode.At(fromQq) + "邀请" + CoolQCode.At(target) + "加入我们的大家庭,热烈欢迎");
                    //mainForm.displayMsg2("---给用户发送欢迎语:" + CoolQCode.At(fromQq) + "邀请" + CoolQCode.At(target) + "加入我们的大家庭,热烈欢迎");
                    CoolQApi.SendGroupMsg(fromGroup, content);
                }
            }



            return(base.ProcessGroupMemberIncrease(subType, sendTime, fromGroup, fromQq, target));
        }
        public override int ProcessGroupMessage(int subType, int sendTime, long fromGroup, long fromQq, string fromAnonymous, string msg, int font)
        {
            if (msg.Contains("debug"))
            {
                string[] cmd = msg.Split(' ');

                if (cmd[0] != "debug")
                {
                    return(1);
                }

                if (cmd[1] == "time")
                {
                    string send = "debug info:";
                    foreach (string key in RunTimeCfg.Keys)
                    {
                        ListenRunTimeConfig cfg = (ListenRunTimeConfig)RunTimeCfg[key];
                        if (cfg.QQGroups.Contains(fromGroup))
                        {
                            send += string.Format("\r\n{0}:{1}[{2}]", cfg.IdolName, cfg.UpdateTime.ToString(), key);
                        }
                        CoolQApi.SendGroupMsg(fromGroup, send);
                    }
                }

                if (cmd[1] == "restart")
                {
                    string key = cmd[2];
                    if (RunProject.ContainsKey(key))
                    {
                        RunProject.Remove(key);
                    }

                    Common.StartListenRoomTask(key);
                    CoolQApi.SendGroupMsg(fromGroup, key + "任务重建完毕,请查看酷Q日志配合time命令查看是否恢复任务");
                }
            }
            return(base.ProcessGroupMessage(subType, sendTime, fromGroup, fromQq, fromAnonymous, msg, font));
        }
예제 #5
0
        /// <summary>
        /// 处理群消息方法
        /// </summary>
        /// <param name="obj"></param>
        private void DealWithGroupMessage(object obj)
        {
            try
            {
                object[] paramaters = (object[])obj;

                long   fromGroup = (long)paramaters[2];
                long   fromQq    = (long)paramaters[3];
                string msg       = (string)paramaters[5];

                if (!m_QQdics.ContainsKey(fromGroup))
                {
                    //获取群成员 需要api权限160
                    List <GroupMemberInfo> memebers = CoolQApi.GetGroupMemberList(fromGroup).Model.ToList();
                    m_QQdics.Add(fromGroup, memebers.Select(t => t.Number).ToList());
                }

                List <long> qqList = CheckHasAtQQ(m_QQdics[fromGroup], msg);

                if (qqList.Count > 0)
                {
                    //禁言部分
                    if (msg.Contains("禁言") || msg.Contains("闭嘴") || msg.Contains("别说话") || msg.Contains("让你说话了么") || msg.Contains("ShutUp"))
                    {
                        foreach (var targetqq in qqList)
                        {
                            //全体成员跳过
                            if (targetqq == -1)
                            {
                                continue;
                            }

                            //对该机器人
                            if (targetqq == CoolQApi.GetLoginQQ())
                            {
                                CoolQApi.SendGroupMsg(fromGroup, CoolQCode.At(fromQq) + " 小逼,想禁言我?找死是吧!3分钟不谢!");
                                CoolQApi.SetGroupBan(fromGroup, fromQq, 180);
                                break;
                            }

                            //成功概率1/3
                            bool success = m_Rand.Next(4200) % 3 == 1;
                            if (success)
                            {
                                CoolQApi.SendGroupMsg(fromGroup, CoolQCode.At(fromQq) + "对" + CoolQCode.At(targetqq) + "释放了禁言术! 成功了!  " + CoolQCode.At(targetqq) + "被禁言3分钟!");
                                CoolQApi.SetGroupBan(fromGroup, targetqq, 180);
                            }
                            else
                            {
                                CoolQApi.SendGroupMsg(fromGroup, CoolQCode.At(fromQq) + "对" + CoolQCode.At(targetqq) + "释放了禁言术! 但是什么都没有发生!");
                            }
                        }
                    }
                    //踢出群部分
                    if (msg.Contains("滚") || msg.Contains("KickOut") || msg.Contains("踢了") || msg.Contains("飞踢") || msg.Contains("ThaiKick"))
                    {
                        foreach (var targetqq in qqList)
                        {
                            //全体成员跳过
                            if (targetqq == -1)
                            {
                                continue;
                            }
                            //对该机器人
                            if (targetqq == CoolQApi.GetLoginQQ())
                            {
                                CoolQApi.SendGroupMsg(fromGroup, CoolQCode.At(fromQq) + " 小逼,想踢我?找死是吧!翻滚吧!");
                                CoolQApi.SetGroupKick(fromGroup, fromQq, false);
                                break;
                            }
                            //成功概率1/5
                            bool success = m_Rand.Next(4200) % 5 == 1;
                            if (success)
                            {
                                CoolQApi.SendGroupMsg(fromGroup, CoolQCode.At(fromQq) + "狠狠踢了" + CoolQCode.At(targetqq) + "一脚! " + CoolQCode.At(targetqq) + "飞了好远,直到飞出了群");
                                CoolQApi.SetGroupKick(fromGroup, targetqq, false);
                            }
                            else
                            {
                                CoolQApi.SendGroupMsg(fromGroup, CoolQCode.At(fromQq) + "想要狠狠踢" + CoolQCode.At(targetqq) + "一脚,结果没有踢着,把脚崴了。好惨!");
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                CoolQApi.AddLog(1, CoolQLogLevel.Error, e.Message);
            }
        }
예제 #6
0
        public void GetLive()
        {
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri("https://plive.48.cn/livesystem/api/live/v1/memberLivePage"));
                req.Method    = "POST";
                req.UserAgent = "kd listen";
                req.Headers.Add("token", "0");

                JObject rss = new JObject(
                    new JProperty("lastTime", 0),
                    new JProperty("limit", 20),
                    new JProperty("groupId", 0),
                    new JProperty("memberId", 0),
                    new JProperty("type", 1),
                    new JProperty("giftUpdTime", 1490857731000)
                    );

                #region 数据请求 返回strResult:string
                string postJson = rss.ToString();
                byte[] bytes    = Encoding.UTF8.GetBytes(postJson);

                req.ContentType   = "application/json";
                req.ContentLength = bytes.Length;

                Stream reqstream = req.GetRequestStream();
                reqstream.Write(bytes, 0, bytes.Length);

                HttpWebResponse response      = (HttpWebResponse)req.GetResponse();
                Stream          streamReceive = response.GetResponseStream();
                Encoding        encoding      = Encoding.UTF8;

                StreamReader streamReader = new StreamReader(streamReceive, encoding);
                string       strResult    = streamReader.ReadToEnd();

                streamReceive.Dispose();
                streamReader.Dispose();
                #endregion

                JObject json = JObject.Parse(strResult);
                if ((int)json["status"] == 200)
                {
                    IEnumerable <JToken> datas = json.SelectTokens("$.content.liveList[*]");
                    foreach (JToken liveInfo in datas)
                    {
                        if (LiveMsgCache.ContainsKey(liveInfo["liveId"]))
                        {
                            break;
                        }
                        //懒得想算法了,直接很粗暴的按的字分割了
                        //title字段师xxx的直播间/电台,所以上面的idcache就直接看看有没有这个键,有的话直接推送了
                        string[] name = liveInfo["title"].ToString().Split(new string[] { "的" }, StringSplitOptions.RemoveEmptyEntries);
                        if (MemberIdCache.ContainsKey(name[0]))
                        {
                            File.AppendAllText("LiveError.log", "捕获:" + liveInfo["liveId"] + "\r\n");
                            LiveMsgCache.Add(liveInfo["liveId"], 1);
                            CoolQApi.SendGroupMsg(long.Parse(MemberIdCache[name[0]].ToString()), "直播提醒:\r\n你的小偶像" + name[0] + "开了一个" + name[1] + "\r\n请尽量打开口袋48观看!\r\n不方便的同学可以使用KD for PC(非官方)观看或打开网址登陆:https://h5.48.cn/2017appshare/memberLiveShare/index.html?id=" + liveInfo["liveId"]);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                File.AppendAllText("LiveError.log", ex.ToString() + "\r\n" + ex.StackTrace + ex.Data + "\r\n");
            }
        }
예제 #7
0
        public void GetRoomMsg(ListenConfig listenConfig)
        {
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri("https://pjuju.48.cn/imsystem/api/im/v1/member/room/message/chat"));
                req.Method    = "POST";
                req.UserAgent = "okhttp/3.4.1";

                JObject rss = new JObject(
                    new JProperty("roomId", listenConfig.KDRoomId),
                    new JProperty("lastTime", 0),
                    new JProperty("limit", 10)
                    );

                string postJson = rss.ToString();
                byte[] bytes    = Encoding.UTF8.GetBytes(postJson);

                req.ContentType   = "application/json";
                req.ContentLength = bytes.Length;

                Stream reqstream = req.GetRequestStream();
                reqstream.Write(bytes, 0, bytes.Length);

                HttpWebResponse response      = (HttpWebResponse)req.GetResponse();
                Stream          streamReceive = response.GetResponseStream();
                Encoding        encoding      = Encoding.UTF8;

                StreamReader streamReader = new StreamReader(streamReceive, encoding);
                string       strResult    = streamReader.ReadToEnd();

                streamReceive.Dispose();
                streamReader.Dispose();


                JObject json = JObject.Parse(strResult);
                if ((int)json["status"] == 200)
                {
                    IEnumerable <JToken> datas = json.SelectTokens("$.content.data[*]");

                    //记录本次最大时间戳
                    long tmpTime = 0;

                    foreach (JToken msgs in datas)
                    {
                        //历史最后时间戳比对
                        if ((long)msgs["msgTime"] > listenConfig.Lasttime)
                        {
                            //本次消息时间
                            if ((long)msgs["msgTime"] > tmpTime)
                            {
                                tmpTime = (long)msgs["msgTime"];
                            }
                            JObject msg = JObject.Parse(msgs["extInfo"].ToString());
                            //首次运行,直接退出循环
                            if (listenConfig.First)
                            {
                                break;
                            }
                            if ((long)msgs["msgTime"] < listenConfig.Lasttime)
                            {
                                break;
                            }
                            switch (msg["messageObject"].ToString())
                            {
                            case "deleteMessage":
                                //CQ.SendGroupMessage(qqGroup,"你的小偶像删除了一条口袋房间的消息");
                                break;

                            case "text":
                                CoolQApi.SendGroupMsg(listenConfig.QQGroup, String.Format("口袋房间:\r\n{0}:{1}\r\n发送时间:{2}", msg["senderName"].ToString(), msg["text"].ToString(), msgs["msgTimeStr"].ToString()));
                                break;

                            case "image":
                                JObject img         = JObject.Parse(msgs["bodys"].ToString());
                                string  imgFilename = GetImage(img["url"].ToString());
                                if (imgFilename == "")
                                {
                                    return;
                                }
                                CoolQApi.SendGroupMsg(listenConfig.QQGroup, String.Format("口袋房间:\r\n{0}:\r\n{1}", msg["senderName"].ToString(), CoolQCode.Image(imgFilename)));
                                break;

                            case "faipaiText":
                                CoolQApi.SendGroupMsg(listenConfig.QQGroup, String.Format("口袋房间:\r\n翻牌辣!{3}:{4}\r\n{0} 回复:{1}\r\n被翻牌的大佬不来集资一发吗?" + listenConfig.HitYouText + " \r\n发送时间:{2}", msg["senderName"].ToString(), msg["messageText"].ToString(), msgs["msgTimeStr"].ToString(), msg["faipaiName"].ToString(), msg["faipaiContent"].ToString()));
                                break;

                            case "audio":
                                JObject audio         = JObject.Parse(msgs["bodys"].ToString());
                                string  audioFilename = GetAudio(audio["url"].ToString(), audio["ext"].ToString());
                                if (audioFilename == "")
                                {
                                    return;
                                }
                                CoolQApi.SendGroupMsg(listenConfig.QQGroup, String.Format("口袋房间:\r\n{0}:\r\n{1}", msg["senderName"].ToString(), CoolQCode.ShareRecord(audioFilename)));
                                break;

                            case "videoRecord":
                                JObject video = JObject.Parse(msgs["bodys"].ToString());
                                CoolQApi.SendGroupMsg(listenConfig.QQGroup, string.Format("{0}发送了一个视频,请点击下面链接查看\r\n地址:{1}", msg["senderName"].ToString(), video["url"].ToString()));
                                break;

                            default:
                                CoolQApi.SendGroupMsg(listenConfig.QQGroup, "你的小偶像有一条新消息,TeemoBot无法支持该类型消息,请打开口袋48查看~~并向开发反馈下~谢谢~");
                                break;
                            }
                        }
                    }
                    if (tmpTime != 0)
                    {
                        listenConfig.Lasttime = tmpTime;
                    }
                }
                if (listenConfig.First)
                {
                    listenConfig.First = false;
                }
            }
            catch (Exception ex)
            {
                File.AppendAllText("error.log", DateTime.Now.ToString() + "\r\n" + ex.ToString() + "\r\n" + ex.StackTrace + "\r\n");
            }
        }
예제 #8
0
        /// <summary>
        /// 处理群聊消息
        /// </summary>
        /// <param name="subType">消息类型,目前固定为1</param>
        /// <param name="sendTime">消息发送时间的时间戳</param>
        /// <param name="fromGroup">消息来源群号</param>
        /// <param name="fromQq">发送此消息的QQ号码</param>
        /// <param name="fromAnonymous">发送此消息的匿名用户</param>
        /// <param name="msg">消息内容</param>
        /// <param name="font">消息所使用字体</param>
        /// <returns></returns>
        public override int ProcessGroupMessage(int subType, int sendTime, long fromGroup, long fromQq, string fromAnonymous, string msg, int font)
        {
            MyDictionaryUtil <long, int> myDictionaryUtil = new MyDictionaryUtil <long, int>();
            int result = myDictionaryUtil.GetValue(CacheData.BaseJson.CheckedQQQun, fromGroup);
            //说明用户回复的是指定的关键词
            string replayContent2 = null;

            if (result == 1)//监控此群
            {
                try
                {
                    replayContent2 = CacheData.BaseJson.Keys[msg + "-##-1-##-1"];
                    CoolQApi.SendGroupMsg(fromGroup, replayContent2);
                    return(base.ProcessGroupMessage(subType, sendTime, fromGroup, fromQq, fromAnonymous, msg, font));
                }
                catch (KeyNotFoundException ke)
                {
                    try
                    {
                        replayContent2 = CacheData.BaseJson.Keys[msg + "-##-1-##-0"];
                        CoolQApi.SendGroupMsg(fromGroup, replayContent2);
                        return(base.ProcessGroupMessage(subType, sendTime, fromGroup, fromQq, fromAnonymous, msg, font));
                    }
                    catch (KeyNotFoundException ke2)
                    {
                    }
                }
            }
            result = myDictionaryUtil.GetValue(CacheData.MovieConfig.CheckedQQQun, fromGroup);
            if (result == 1)
            {
                //
                string contentStr = msg.Trim();
                bool   b          = true;
                if (CacheData.MovieConfig.IsNeed)
                {
                    string at = CoolQCode.At(CoolQApi.GetLoginQQ());
                    if (msg.StartsWith(at))//需@机器人触发指令
                    {
                        contentStr = contentStr.Replace(at, "");
                        contentStr = contentStr.Trim();
                    }
                    else
                    {
                        b = false;
                    }
                }

                if (b)
                {
                    if (contentStr.StartsWith(CacheData.MovieConfig.SearchCommand))
                    {
                        String url = "";
                        try
                        {
                            string searchContent = contentStr.Substring(1);
                            if (string.IsNullOrWhiteSpace(searchContent))
                            {
                                //CoolQApi.SendPrivateMsg(fromQQ, "请输入要搜索的内容,例如:搜黑豹");
                                //CoolQApi.SendPrivateMsg(fromQQ, CacheData.MovieConfig.NoSearchedMovie);
                                replayContent2 = CacheData.MovieConfig.NoSearchedMovieInQun;
                                replayContent2 = replayContent2.Replace("{@用户}", CoolQCode.At(fromQq));
                                CoolQApi.SendGroupMsg(fromGroup, replayContent2);
                                return(base.ProcessGroupMessage(subType, sendTime, fromGroup, fromQq, fromAnonymous, msg, font));
                            }
                            else
                            {
                                //CoolQApi.SendPrivateMsg(fromQQ, "正在寻找资源,请稍等...");
                                List <KunyunInfo> list = KuYunSearch.Search(searchContent, CacheData.MovieConfig.ConvertLinkIndex);
                                if (list == null || list.Count == 0)
                                {
                                    //CoolQApi.SendPrivateMsg(fromQQ, "暂时未找到此资源");
                                    string temp = CacheData.MovieConfig.NoSearchedMovieInQun;
                                    temp = temp.Replace("{@用户}", CoolQCode.At(fromQq));
                                    CoolQApi.SendGroupMsg(fromGroup, temp);


                                    return(base.ProcessGroupMessage(subType, sendTime, fromGroup, fromQq, fromAnonymous, msg, font));
                                }
                                else if (list.Count == 1)//说明找到了具体电影的链接
                                {
                                    string        replayContent = CacheData.MovieConfig.HaveSearchedMovieInQun;
                                    StringBuilder sb            = new StringBuilder(" ");
                                    foreach (KunyunInfo k in list)
                                    {
                                        replayContent = replayContent.Replace("{电影名}", k.name);
                                        foreach (MovieInfo2 res in k.url)
                                        {
                                            if (k.resourceTYpe == 1)//m3u8
                                            {
                                                sb.Append(res.MovieName + "  " + MyLinkCoverter.CovertUrlInSuoIm(res.Url, true) + Environment.NewLine);
                                            }
                                            else//直接观看链接
                                            {
                                                sb.Append(res.MovieName + "  " + MyLinkCoverter.CovertUrlInSuoIm(res.Url, false) + Environment.NewLine);
                                            }
                                        }
                                    }
                                    replayContent = replayContent.Replace("{电影链接}", sb.ToString());
                                    replayContent = replayContent.Replace("{@用户}", CoolQCode.At(fromQq));
                                    CoolQApi.SendGroupMsg(fromGroup, replayContent);
                                    return(base.ProcessGroupMessage(subType, sendTime, fromGroup, fromQq, fromAnonymous, msg, font));
                                }
                                else//说明找到了相关的好几个电影
                                {
                                    StringBuilder sb = new StringBuilder("我找到了多个相关资源,请保持搜索格式,聊天回复以下具体某个资源获取观影链接:" + Environment.NewLine);
                                    foreach (KunyunInfo k in list)
                                    {
                                        sb.Append(CacheData.MovieConfig.SearchCommand + k.name + Environment.NewLine);
                                    }
                                    CoolQApi.SendGroupMsg(fromGroup, sb.ToString());
                                    return(base.ProcessGroupMessage(subType, sendTime, fromGroup, fromQq, fromAnonymous, msg, font));
                                }
                            }
                        }
                        catch (Exception e2)
                        {
                            //CoolQApi.SendPrivateMsg(fromQQ, "小喵出现问题,请过会再来尝试");
                            MyLogUtil.ErrToLog("接收群聊信息后处理过程出现异常,原因:" + e2);
                            return(base.ProcessGroupMessage(subType, sendTime, fromGroup, fromQq, fromAnonymous, msg, font));
                        }
                    }
                }
            }

            //mainForm.displayMsg2("处理群聊消息:" + subType + "," + sendTime + "," + fromGroup + "," + fromQq + "," + fromAnonymous + "," + msg + "," + font);

            return(base.ProcessGroupMessage(subType, sendTime, fromGroup, fromQq, fromAnonymous, msg, font));
        }