Esempio n. 1
0
 /// <summary>
 /// 初始化 <see cref="CQPrivateMessageEventArgs"/> 类的新实例
 /// </summary>
 /// <param name="api">酷Q的接口实例</param>
 /// <param name="log">酷Q的日志实例</param>
 /// <param name="id">事件id</param>
 /// <param name="type">事件类型</param>
 /// <param name="name">事件名称</param>
 /// <param name="function">事件函数名</param>
 /// <param name="priority">事件优先级</param>
 /// <param name="subType">消息子类型</param>
 /// <param name="msgId">消息ID</param>
 /// <param name="fromQQ">来源QQ</param>
 /// <param name="msg">消息内容</param>
 /// <param name="isRegex">是否为正则消息</param>
 public CQPrivateMessageEventArgs(CQApi api, CQLog log, int id, int type, string name, string function, uint priority, int subType, int msgId, long fromQQ, string msg, bool isRegex)
     : base(api, log, id, type, name, function, priority)
 {
     this.SubType = (CQPrviateMessageType)subType;
     this.FromQQ  = new QQ(api, fromQQ);
     this.Message = new QQMessage(api, msgId, msg, isRegex);
 }
 /// <summary>
 /// 初始化 <see cref="CQDiscussMessageEventArgs"/> 类的新实例
 /// </summary>
 /// <param name="id">事件Id</param>
 /// <param name="type">事件类型</param>
 /// <param name="name">事件名称</param>
 /// <param name="function">函数名称</param>
 /// <param name="priority">默认优先级</param>
 /// <param name="subType">子类型</param>
 /// <param name="msgId">消息Id</param>
 /// <param name="fromDiscuss">来源讨论组</param>
 /// <param name="fromQQ">来源QQ</param>
 /// <param name="msg">消息内容</param>
 /// <param name="isRegex">是否为正则消息</param>
 /// <param name="api">接口Api实例</param>
 public CQDiscussMessageEventArgs(int id, int type, string name, string function, uint priority, int subType, int msgId, long fromDiscuss, long fromQQ, string msg, bool isRegex, CQApi api)
     : base(id, type, name, function, priority)
 {
     this.SubType     = (CQDiscussMessageType)subType;
     this.Message     = new QQMessage(api, msgId, msg, isRegex);
     this.FromDiscuss = new Discuss(api, fromDiscuss);
     this.FromQQ      = new QQ(api, fromQQ);
 }
Esempio n. 3
0
        /// <summary>
        /// 撤回消息
        /// </summary>
        /// <param name="message">消息</param>
        /// <exception cref="ArgumentNullException">参数: message 为 null</exception>
        /// <returns>操作成功返回 <see langword="true"/>, 失败返回 <see langword="false"/></returns>
        public bool RemoveMessage(QQMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            return(this.RemoveMessage(message.Id));
        }
        /// <summary>
        /// 识别人形建造字符串
        /// </summary>
        /// <param name="receive_msg">输入的指令</param>
        /// <returns>表示建造结果的字符串</returns>
        private List <GFLElements> Action_MakeTdoll(QQMessage receive_msg)
        {
            //Simulator simulator = new Simulator();

            string[]           order = receive_msg.Text.Split();
            List <GFLElements> tdoll_info;

            if (order.Length == 2)  // 输入的指令为建造公式
            {
                try
                {
                    string     formula   = order[1];
                    List <int> resources = Tdoll_FormulaDistinguish(formula);

                    if (resources.Count == 4)
                    {
                        tdoll_info = simulator.BuildElement(resources, BUILD_NUM);
                    }
                    else
                    {
                        throw new ArgumentException("建造公式错误");
                    }
                }
                catch (FormatException e1)
                {
                    throw e1;
                }
                catch (ArgumentException e2)
                {
                    throw new ArgumentException("建造公式错误", e2);
                }
            }
            else if (order.Length == 5)     //输入的指令为建造资源
            {
                try
                {
                    tdoll_info = this.simulator.BuildElement(int.Parse(order[1]), int.Parse(order[2]),
                                                             int.Parse(order[3]), int.Parse(order[4]), BUILD_NUM);
                }
                catch (FormatException e1)
                {
                    throw e1;
                }
                catch (ArgumentException e2)
                {
                    throw new ArgumentException("非法资源数目", e2);
                }
            }
            else
            {
                throw new ArrayTypeMismatchException("建造指令形式错误");
            }

            return(tdoll_info);
        }
Esempio n. 5
0
        /// <summary>
        /// 私聊消息处理
        /// </summary>
        /// <param name="value">poll包中的value</param>
        private QQMessage ProcessPrivateMessage(Message.Result.Value value)
        {
            QQMessage message = new QQMessage();

            message.AccountType    = AccountType.Private;
            message.FriendID       = value.from_uin;
            message.MessageType    = MessageType.Receive;
            message.MessageContent = GetMessageText(value.content);

            //this.SendMessage(0, message.FriendID, "收到!QQ机器人正在处理,请稍等...");

            return(message);
        }
Esempio n. 6
0
        /// <summary>
        /// 讨论组消息处理
        /// </summary>
        /// <param name="value">poll包中的value</param>
        private QQMessage ProcessDisscussMessage(Message.Result.Value value)
        {
            QQMessage message = new QQMessage();

            message.AccountType    = AccountType.Discussion;
            message.DiscussionID   = value.did;
            message.FriendID       = value.send_uin;
            message.MessageType    = MessageType.Receive;
            message.MessageContent = GetMessageText(value.content);

            //this.SendMessage(2, message.DiscussionID, "收到!QQ机器人正在处理,请稍等...");

            return(message);
        }
Esempio n. 7
0
        /// <summary>
        /// 群聊消息处理
        /// </summary>
        /// <param name="value">poll包中的value</param>
        private QQMessage ProcessGroupMessage(Message.Result.Value value)
        {
            QQMessage message = new QQMessage();

            message.AccountType    = AccountType.Group;
            message.GroupID        = value.group_code;
            message.FriendID       = value.send_uin;
            message.MessageType    = MessageType.Receive;
            message.MessageContent = GetMessageText(value.content);

            //this.SendMessage(1, message.GroupID, "收到!QQ机器人正在处理,请稍等...");

            return(message);
        }
Esempio n. 8
0
        public static void ProcessMessageHandler(QQMessage message)
        {
            /*
             * string answer = TulingRobot.Answer(message.MessageContent);
             * if (message.AccountType == AccountType.Private)
             * {
             *  messageService.SendMessage(0, message.FriendID, answer);
             * }
             * else if (message.AccountType == AccountType.Group)
             * {
             *  messageService.SendMessage(1, message.GroupID, answer);
             * }
             * else if (message.AccountType == AccountType.Discussion)
             * {
             *  messageService.SendMessage(2, message.DiscussionID, answer);
             * }
             */

            RobotPool robotPool = RobotPool.NewInstance();
            IRobot    robot     = null;
            string    answer    = "";

            if (message.AccountType == AccountType.Private)
            {
                robot  = robotPool.ApplyOneAvailableRobot(RobotType.Private, message.FriendID);
                answer = robot.Consult(message.MessageContent);
                messageService.SendMessage(0, message.FriendID, answer);
            }
            else if (message.AccountType == AccountType.Group ||
                     message.AccountType == AccountType.Discussion)
            {
                robot  = robotPool.ApplyOneAvailableRobot(RobotType.Public, message.QQAccount);
                answer = robot.Consult(message.MessageContent);

                if (message.AccountType == AccountType.Group)
                {
                    messageService.SendMessage(1, message.GroupID, answer);
                }
                else
                {
                    messageService.SendMessage(2, message.DiscussionID, answer);
                }
            }

            System.Console.WriteLine("Receive one message");
            //Task.Run(() => MyQQDAL.AddOneMessage(message.QQAccount, message));
            MyQQDAL.AddOneMessage(message.QQAccount, message);
        }
 /// <summary>
 /// 初始化 <see cref="CQGroupMessageEventArgs"/> 类的新实例
 /// </summary>
 /// <param name="api">酷Q的接口实例</param>
 /// <param name="log">酷Q的日志实例</param>
 /// <param name="id">事件Id</param>
 /// <param name="type">事件类型</param>
 /// <param name="name">事件名称</param>
 /// <param name="function">函数名称</param>
 /// <param name="priority">默认优先级</param>
 /// <param name="subType">子类型</param>
 /// <param name="msgId">消息Id</param>
 /// <param name="fromGroup">来源群号</param>
 /// <param name="fromQQ">来源QQ</param>
 /// <param name="fromAnonymous">来源匿名</param>
 /// <param name="msg">消息内容</param>
 /// <param name="isRegex">是否正则消息</param>
 public CQGroupMessageEventArgs(CQApi api, CQLog log, int id, int type, string name, string function, uint priority, int subType, int msgId, long fromGroup, long fromQQ, string fromAnonymous, string msg, bool isRegex)
     : base(api, log, id, type, name, function, priority)
 {
     this.SubType         = (CQGroupMessageType)subType;
     this.Message         = new QQMessage(api, msgId, msg, isRegex);
     this.FromGroup       = new Group(api, fromGroup);
     this.FromQQ          = new QQ(api, fromQQ);
     this.IsFromAnonymous = fromQQ == 80000000 && !string.IsNullOrEmpty(fromAnonymous);
     if (this.IsFromAnonymous)
     {
         this.FromAnonymous = new GroupMemberAnonymousInfo(fromAnonymous);
     }
     else
     {
         this.FromAnonymous = null;
     }
 }
Esempio n. 10
0
        private void ProcessMessage(string data)
        {
            Message poll = (Message)JsonConvert.DeserializeObject(data, typeof(Message));

            if (poll.retcode != 0)
            {
                ProcessMessageError(poll);
            }
            else if (poll.result != null && poll.result.Count > 0)
            {
                QQMessage message = new QQMessage();

                for (int i = 0; i < poll.result.Count; i++)
                {
                    switch (poll.result[i].poll_type)
                    {
                    case "kick_message":
                        ProcessMessageFlag = false;
                        //MessageBox.Show(poll.result[i].value.reason);
                        break;

                    case "message":
                        message = ProcessPrivateMessage(poll.result[i].value);
                        break;

                    case "group_message":
                        message = ProcessGroupMessage(poll.result[i].value);
                        break;

                    case "discu_message":
                        message = ProcessDisscussMessage(poll.result[i].value);
                        break;

                    default:
                        break;
                    }
                }

                if (ProcessMessageAction != null)
                {
                    message.QQAccount = this.smartQQ.QQAccount;
                    Task.Run(() => ProcessMessageAction(message));
                    //ProcessMessageAction(message);
                }
            }
        }
Esempio n. 11
0
        /// <summary>
        /// 机器人签到功能
        /// </summary>
        /// <param name="qq"></param>
        /// <param name="group"></param>
        void CheckIn(QQMessage qqMessage)
        {
            int coins = Random.Next(Config.CheckInMinCoins, Config.CheckInMaxCoins + 1);

            switch (MySqlHelper.ExecuteScalar($"select checkin ({qqMessage.QQ}, {coins})"))
            {
            case 1:
                qqMessage.Reply("今日已签到");
                break;

            case 2:
            case 3:
                qqMessage.Reply($"签到成功,金币加{coins}");
                break;

            default:
                throw new NotImplementedException();
            }
        }
Esempio n. 12
0
 public static void RevokeHImage(this QQMessage message, int delay)
 {
     if (message.IsSuccess)
     {
         if (delay > 0)
         {
             new Task(() =>
             {
                 try
                 {
                     Thread.Sleep(delay * 1000);
                     message.RemoveMessage();
                 }
                 catch (Exception ex)
                 {
                 }
             }).Start();
         }
     }
 }
Esempio n. 13
0
        /// <summary>
        /// SauceNao调用
        /// </summary>
        /// <param name="cqcode">图片CQ码</param>
        /// <param name="e"></param>
        public static void SauceNao_Call(CQCode cqcode, CQGroupMessageEventArgs e)
        {
            string url = "https://saucenao.com/search.php?output_type=2&api_key=56faa0cddf50860330a295e0c331be7c4b4c021f&db=999&numres=3&url=";

            url += CommonHelper.GetImageURL(cqcode.ToSendString());
            using (HttpWebClient http = new HttpWebClient()
            {
                TimeOut = 10000,
                Encoding = Encoding.UTF8,
                Proxy = MainSave.Proxy,
                AllowAutoRedirect = true,
            })
            {
                try
                {
                    Directory.CreateDirectory(MainSave.ImageDirectory + "SauceNaotemp");
                    var result = JsonConvert.DeserializeObject <SauceNao_Result.SauceNAO>(http.DownloadString(url));
                    if (result == null || result.results == null || result.results.Count == 0)
                    {
                        e.CQLog.Info("SauceNao识图", "拉取结果失败,建议重试");
                        e.FromGroup.SendGroupMessage("诶嘿,网络出了点小差~");
                        return;
                    }
                    e.CQLog.Info("SauceNao识图", "结果获取成功,正在拉取缩略图");
                    int count = 1;
                    result.results = result.results.Take(1).ToList();
                    string str = result.ToString();
                    foreach (var item in result.results)
                    {
                        try
                        {
                            string filename = Guid.NewGuid().ToString().ToString();
                            http.DownloadFile(item.header.thumbnail, $@"{MainSave.ImageDirectory}\SauceNaotemp\{filename}.jpg");
                            str = str.Replace($"{{{count}}}", CQApi.CQCode_Image($@"\SauceNaotemp\{filename}.jpg").ToSendString());
                        }
                        catch
                        {
                            str = str.Replace($"{{{count}}}", item.header.thumbnail);
                        }
                        finally { count++; }
                    }
                    e.FromGroup.SendGroupMessage(str);
                    List <int> ls = result.results.Where(x => x.data.pixiv_id.HasValue).Select(x => x.data.pixiv_id.Value).ToList();
                    if (ls.Count != 0)
                    {
                        e.FromGroup.SendGroupMessage("有Pixiv图片信息,尝试拉取原图...");
                        foreach (var item in ls)
                        {
                            try
                            {
                                http.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
                                if (!File.Exists($@"{MainSave.ImageDirectory}\LoliconPic\${item}.jpg"))
                                {
                                    dynamic jObject   = JObject.Parse(http.UploadString("https://api.pixiv.cat/v1/generate", $"p={item}"));
                                    string  pixiv_url = string.Empty;
                                    try
                                    {
                                        var urllist = jObject.original_urls_proxy;
                                        pixiv_url = urllist[0];
                                        e.FromGroup.SendGroupMessage("此图为多P图片,选择第一P下载");
                                        MainSave.CQLog.Info("SauceNao识图", "此图为多P图片,选择第一P下载");
                                    }
                                    catch
                                    {
                                        pixiv_url = jObject.Value <string>("original_url_proxy");
                                    }
                                    if (!Directory.Exists($@"{MainSave.ImageDirectory}\LoliconPic"))
                                    {
                                        Directory.CreateDirectory($@"{MainSave.ImageDirectory}\LoliconPic");
                                    }
                                    http.DownloadFile(pixiv_url, $@"{MainSave.ImageDirectory}\LoliconPic\{item}.jpg");
                                    MainSave.CQLog.Info("SauceNao识图", $"pid={item}的图片下载成功,尝试发送");
                                }
                                QQMessage staues = e.FromGroup.SendGroupMessage(CQApi.CQCode_Image($@"\LoliconPic\{item}.jpg"));
                            }
                            catch (Exception exc)
                            {
                                e.FromGroup.SendGroupMessage($"pid={item}的图片拉取失败,错误信息:{exc.Message}");
                            }
                        }
                    }
                }
                catch (Exception exc)
                {
                    e.CQLog.Info("SauceNao搜图", $"搜索失败,错误信息:{exc.Message}在{exc.StackTrace}");
                    e.FromGroup.SendGroupMessage($"拉取失败,错误信息:{exc.Message}");
                }
                try
                {
                    string path = $@"{MainSave.ImageDirectory}\SauceNaotemp";
                    if (Directory.Exists(path))
                    {
                        Directory.Delete(path, true);
                    }
                }
                catch { }
            }
        }
Esempio n. 14
0
        public void DiscussMessage(object sender, CQDiscussMessageEventArgs e)
        {
            if (CoolRepeater.DisabledGroups.Contains(e.FromDiscuss.Id))
            {
                return;
            }
            if (!CoolRepeater.EnabledGroups.Contains(e.FromDiscuss.Id))
            {
                return;
            }

            if (CoolRepeater.IgnorePicture &&
                e.Message.CQCodes.FirstOrDefault(c => c.Function == Native.Sdk.Cqp.Enum.CQFunction.Image) != null)
            {
                return;
            }

            var noContentMessage  = new QQMessage(e.CQApi, -1, string.Empty);
            var groupLastMessages = CoolRepeater.GroupLastMessages;

            if (!groupLastMessages.ContainsKey($"D{e.FromDiscuss.Id}"))
            {
                groupLastMessages.Add($"D{e.FromDiscuss.Id}", new Tuple <long, QQMessage>(e.FromQQ.Id, noContentMessage));
            }

            var groupMessageSenders = CoolRepeater.GropuMessageSenders;

            if (!groupMessageSenders.ContainsKey($"D{e.FromDiscuss.Id}"))
            {
                groupMessageSenders.Add($"D{e.FromDiscuss.Id}", new HashSet <long>());
            }

            var groupRepeatedMessage = CoolRepeater.GroupRepeatedMessages;

            if (!groupRepeatedMessage.ContainsKey($"D{e.FromDiscuss.Id}"))
            {
                groupRepeatedMessage.Add($"D{e.FromDiscuss.Id}", noContentMessage);
            }

            var lastMessage  = groupLastMessages[$"D{e.FromDiscuss.Id}"];
            var senders      = groupMessageSenders[$"D{e.FromDiscuss.Id}"];
            var lastRepeated = groupRepeatedMessage[$"D{e.FromDiscuss.Id}"];

            if (e.Message.Text != lastMessage.Item2.Text)
            {
                groupLastMessages[$"D{e.FromDiscuss.Id}"] = new Tuple <long, QQMessage>(e.FromQQ.Id, e.Message);
                senders.Clear();
                return;
            }
            else
            {
                senders.Add(e.FromQQ.Id);
            }

            if (lastRepeated.Text == e.Message.Text)
            {
                senders.Clear();
                return;
            }

            if (senders.Count >= (CoolRepeater.RepeatThreshold - 1))
            {
                var repeatString = e.Message.ToSendString();
                foreach (var s in CoolRepeater.BlockWords)
                {
                    if (repeatString.Contains(s))
                    {
                        senders.Clear();
                        return;
                    }
                }

                if ((decimal) new Random().NextDouble() <= CoolRepeater.RepeatProbability)
                {
                    if (CoolRepeater.GreaterChancesMoreRepeat)
                    {
                        senders.Clear();
                    }
                    return;
                }

                e.CQApi.SendDiscussMessage(e.FromDiscuss, repeatString);
                groupRepeatedMessage[$"D{e.FromDiscuss.Id}"] = e.Message;
                senders.Clear();
            }
        }
Esempio n. 15
0
        public static void SendHimages(this string command, bool fAllowR18, Action RecordLimit, Action RecordCD, Func <object, QQMessage> SendMessage, Action <QQMessage> RevokeHimage)
        {
            string strGetHttpResponse;

            if (RobotInfo.UserHImageCmd.Contains(command))
            {
                strGetHttpResponse = $@"https://api.lolicon.app/setu/?{ (RobotInfo.Size1200 ? "size1200=true" : "") }";
            }
            else
            {
                //分割请求接口所需的参数
                long   lImgCount = 1;
                string keyword   = "";
                string size1200  = "";
                string strR18    = "0";

                #region -- R18 --
                Regex rxR18 = new Regex(RobotInfo.HImageR18Cmd);
                foreach (Match mchR18 in rxR18.Matches(command))
                {
                    strR18  = "1";
                    command = command.Replace(mchR18.Value, ""); //无论是否允许R18都现将命令中的R18移除, 避免和数量混淆
                }
                if (!fAllowR18)                                  //如果不允许R18
                {
                    strR18 = "0";
                }
                #endregion -- R18 --

                #region -- 色图数量 -- ;
                string strCount = command.GetRege(RobotInfo.HImageBeginCmd, RobotInfo.HImageCountCmd, RobotInfo.HImageUnitCmd);

                if (!long.TryParse(strCount, out lImgCount) && !string.IsNullOrEmpty(strCount))
                {
                    lImgCount = strCount.Chinese2Num();
                }

                if (string.IsNullOrEmpty(strCount))
                {
                    lImgCount = 1;
                }

                if (lImgCount == 0)
                {
                    return;
                }
                if (lImgCount > 10)
                {
                    lImgCount = 10;
                }

                #endregion -- 色图数量 --

                #region -- 关键词 --
                string strKeyword = command.GetRege(RobotInfo.HImageUnitCmd, RobotInfo.HImageKeywordCmd, RobotInfo.HImageEndCmd);

                if (!string.IsNullOrWhiteSpace(strKeyword))
                {
                    if (strKeyword.EndsWith("的"))
                    {
                        strKeyword = strKeyword.Substring(0, strKeyword.Length - 1);
                    }
                    keyword = "&keyword=" + strKeyword;
                }
                #endregion -- 关键词 --

                if (RobotInfo.Size1200)
                {
                    size1200 = "&size1200=true";
                }

                strGetHttpResponse = $@"https://api.lolicon.app/setu/?num={lImgCount}&r18={strR18}{keyword}{size1200}";
            }

            string resultValue = DataHelper.GetHttpResponse(strGetHttpResponse);

            JObject jo = (JObject)JsonConvert.DeserializeObject(resultValue);
            JToken  jt = jo["data"];

            if (jo["code"].ToString() == "1")
            {
                SendMessage(RobotInfo.NoResult);
                return;
            }

            IEnumerable <ImageUrl> enumImg = jt.Select(i => new ImageUrl(i["p"].ToString(), i["pid"].ToString(), RobotInfo.Accelerate ? RobotInfo.AccelerateUrl + i["url"].ToString() : i["url"].ToString()));

            if (enumImg == null)
            {
                return;
            }

            StringBuilder sbAddress = new StringBuilder();
            foreach (var item in enumImg)
            {
                sbAddress.AppendLine(@"https://www.pixiv.net/artworks/" + item.ID + $" (p{item.P})");
            }

            if (string.IsNullOrEmpty(sbAddress.ToString()))
            {
                return;
            }

            QQMessage msgUrl = SendMessage(sbAddress.ToString());

            if (msgUrl.IsSuccess && RobotInfo.LimitType == "Frequency")
            {
                RecordLimit?.Invoke();
            }

            RecordCD?.Invoke();

            foreach (var pair in enumImg)
            {
                string imgPath = pair.ID + "_" + pair.P + ".png";
                if (!File.Exists(imgPath) || new FileInfo(imgPath).Length == 0)
                {
                    string strImageSafeName = Path.Combine(Application.StartupPath, "data", "image", imgPath);
                    Image  img = Image.FromStream(WebRequest.Create(pair.URL).GetResponse().GetResponseStream());
                    img.Save(strImageSafeName);
                    img.Dispose();
                    RuntimeHelper.DownloadedImagesName.Add(strImageSafeName);
                }

                QQMessage msgImg;
                if (RobotInfo.AntiShielding)
                {
                    Bitmap temp = new Bitmap(Path.Combine(Application.StartupPath, "data", "image", imgPath));
                    Bitmap bmp  = new Bitmap(temp);
                    temp.Dispose();

                    bmp.AntiShielding();

                    string antiPath         = pair.ID + "_" + pair.P + "_AntiShielding" + ".png";
                    string strImageSafeName = Path.Combine(Application.StartupPath, "data", "image", antiPath);
                    bmp.Save(strImageSafeName);

                    msgImg = SendMessage(CQApi.CQCode_Image(antiPath));

                    if (msgImg.IsSuccess && RobotInfo.LimitType == "Count")
                    {
                        RecordLimit?.Invoke();
                    }

                    if (RobotInfo.LimitType == "Frequency")
                    {
                        RecordLimit?.Invoke();
                    }

                    try
                    {
                        File.Delete(strImageSafeName);
                    }
                    catch
                    {
                        RuntimeHelper.DownloadedImagesName.Add(strImageSafeName);
                    }
                }
                else
                {
                    msgImg = SendMessage(CQApi.CQCode_Image(imgPath));
                }

                RevokeHimage?.Invoke(msgImg);
            }
        }
Esempio n. 16
0
 /// <summary>
 /// 当群成员离开本群
 /// </summary>
 /// <param name="e"></param>
 /// <returns></returns>
 public override QMEventHandlerTypes OnGroupMemberLeave(QMGroupMemberDecreaseEventArgs e)
 {
     QQMessage.Reply(e.FromQQ, e.FromGroup, "离开了本群:" + e.FromQQ);
     return(base.OnGroupMemberLeave(e));
 }
Esempio n. 17
0
 /// <summary>
 /// 群员修改了群名片
 /// </summary>
 /// <param name="e"></param>
 /// <returns></returns>
 public override QMEventHandlerTypes OnGroupMemberCardChange(QMGroupMemberCardChangeEventArgs e)
 {
     QQMessage.Reply(e.FromQQ, e.FromGroup, "修改了名片:" + e.NewCard);
     return(base.OnGroupMemberCardChange(e));
 }
Esempio n. 18
0
 /// <summary>
 /// 当新人进群提示输出
 /// </summary>
 /// <param name="e"></param>
 /// <returns></returns>
 public override QMEventHandlerTypes OnGroupMemberBeAllowAdd(QMGroupMemberIncreaseEventArgs e)
 {
     QQMessage.Reply(e.FromQQ, e.FromGroup, "欢迎新人进群:么么哒:");
     return(base.OnGroupMemberBeAllowAdd(e));
 }
Esempio n. 19
0
        /// <summary>
        /// 金币查询
        /// </summary>
        /// <param name="qq"></param>
        /// <param name="group"></param>
        void Coins(QQMessage qqMessage)
        {
            int coins = Convert.ToInt32(MySqlHelper.ExecuteScalar($"select coins from checkin where qq = {qqMessage.QQ}"));

            qqMessage.Reply($"你目前拥有{coins}枚金币");
        }