Beispiel #1
0
        private void OnPrivateMessage(PrivateMessageEvent e)
        {
            if (!this.ListeningBehavior.HasFlag(ListeningBehavior.PrivateMessage))
            {
                return;
            }
            if (e.Message.Length == 0 || !e.Incoming)
            {
                return;
            }

            if (this.CommandPrefixes.Contains(e.Message[0]))
            {
                var player = e.Player;
                if (player == null)
                {
                    return;
                }

                var cmd    = new ParsedRequest(e.Message.Substring(1));
                var source = new PlayerInvokeSource(player, PlayerInvokeOrigin.PrivateMessage,
                                                    msg => Chat.Of(this.BotBits).PrivateMessage(player, msg));

                new CommandEvent(source, cmd)
                .RaiseIn(this.BotBits);
            }
        }
Beispiel #2
0
        private void MessageSorter(byte[] buffer, int start, int length, Socket clientSocket)
        {
            string            content  = Encoding.Default.GetString(buffer, 0, length);
            MessageDictionary messageD = new MessageDictionary(content);

            ShowMessage("从" + clientSocket.RemoteEndPoint.ToString() + "接收消息:" + content + "\n");
            CommandType command = (CommandType)Enum.Parse(typeof(CommandType), messageD[MesKeyStr.CommandType]);

            switch (command)
            {
            case CommandType.Login:
            {
                LoginEvent?.Invoke(this, new LoginEventArgs()
                    {
                        UserID        = messageD[MesKeyStr.UserID],
                        PassWord      = messageD[MesKeyStr.PassWord],
                        ReceiveSocket = clientSocket
                    });

                break;
            }

            case CommandType.Logout:
            {
                LogoutEvent?.Invoke(this, new User(messageD[MesKeyStr.UserID], messageD[MesKeyStr.NickName]));
                break;
            }

            case CommandType.SignUp:
            {
                SignUpEvent?.Invoke(this, new SignUpEventArgs(clientSocket, messageD[MesKeyStr.NickName], messageD[MesKeyStr.PassWord]));
                break;
            }

            case CommandType.GroupMessage:
            {
                GroupMessageEvent?.Invoke(this, messageD);
                break;
            }

            case CommandType.PrivateMessage:
            {
                PrivateMessageEvent?.Invoke(this, messageD);
                break;
            }

            case CommandType.UserJoin:
            case CommandType.UserQuit:
            case CommandType.LoginResult:
            case CommandType.SignUpResult:
            case CommandType.ServerDisconnect:
            case CommandType.Remove:
            {
                ShowMessage("收到错误的消息类型!");
                throw new Exception("收到错误的消息类型!");
            }
            }
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            cqhttp.Cyan.Logger.LogLevel = cqhttp.Cyan.Enums.Verbosity.INFO;
            CQApiClient cli = new CQHTTPClient(
                accessUrl: "http://127.0.0.1:5700",
                listen_port: 210
                );

            Group.Jobs.StartJobs(cli, 00000000);
            Private.Operation.LoadData();
            cli.OnEvent += (client, e) => {
                if (e is MessageEvent)
                {
                    string  text_message = getText((e as MessageEvent).message);
                    Command cmd;
                    try {
                        cmd = Parser.ParseCommand(text_message, (e as MessageEvent).sender.nickname);
                    } catch { return(new EmptyResponse()); }
                    if (e is GroupMessageEvent)
                    {
                        GroupMessageEvent ge = (e as GroupMessageEvent);
                        cmd.endPoint = (client, (ge.messageType, ge.group_id));
                        if (privateCommands.IndexOf(cmd.operation) != -1)
                        {
                            client.SendTextAsync(
                                cmd.endPoint.Item2, "请私聊调用这项功能"
                                );
                            client.SendTextAsync(
                                cqhttp.Cyan.Enums.MessageType.private_,
                                ge.sender.user_id, helpMsg
                                );
                        }
                        else
                        {
                            Group.Jobs.Handle(cmd);
                        }
                    }
                    else if (e is PrivateMessageEvent)
                    {
                        PrivateMessageEvent pe = (e as PrivateMessageEvent);
                        cmd.endPoint = (cli, (pe.messageType, pe.sender_id));
                        if (cmd.operation == "help")
                        {
                            cli.SendTextAsync(cmd.endPoint.Item2, helpMsg);
                            return(new EmptyResponse());
                        }
                        try {
                            Private.Operation.Handle(cmd).Wait();
                        } catch (AggregateException ee) {
                            throw ee.InnerException;
                        }
                    }
                }
                return(new EmptyResponse());
            };
            Console.ReadLine();
        }
Beispiel #4
0
 public static int RecvicetPrivateMessage(IntPtr intPtr)
 {
     if (Common.unityContainer.IsRegistered <IRecvicetPrivateMessage>())
     {
         PrivateMessageEvent data = new PrivateMessageEvent();
         data = (PrivateMessageEvent)Marshal.PtrToStructure(intPtr, typeof(PrivateMessageEvent));
         //string content = Marshal.PtrToStringAnsi(data.MessageContent);
         Common.unityContainer.Resolve <IRecvicetPrivateMessage>().RecvicetPrivateMsg(data);
         return((int)EventMessageEnum.Ignore);
     }
     return((int)EventMessageEnum.Ignore);
 }
Beispiel #5
0
 protected virtual void OnPrivateMessage(RemoteServer server, PrivateMessageEventArgs args)
 {
     PrivateMessageEvent?.Invoke(server, args);
     if (args.Sent)
     {
         PrivateMessageSentEvent?.Invoke(server, args);
     }
     else
     {
         PrivateMessageReceivedEvent?.Invoke(server, args);
     }
 }
Beispiel #6
0
        private void On(PrivateMessageEvent e)
        {
            if (e.Incoming == false)
            {
                var username = e.Player.Username;
                var message  = $"/pm {username} {e.Message}";

                var channel = this.GetChatChannel(username);
                if (channel.LastSent == message)
                {
                    channel.LastReceived = message;
                }
            }
        }
Beispiel #7
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);
        }
Beispiel #8
0
        public static int RecvicetPrivateMessage(ref PrivateMessageEvent sMsg)
        {
            API.MyQQ = sMsg.ThisQQ;
            long MessageRandom = 0;
            uint MessageReq    = 0;

            if (SqliHelper.CheckDataExsit("中级权限", "QQID", sMsg.SenderQQ.ToString()) == false)            //如果不在中级权限里不反馈
            {
                if (sMsg.SenderQQ != sMsg.ThisQQ)
                {
                }
            }
            if (sMsg.SenderQQ != sMsg.ThisQQ)
            {
                if (sMsg.MessageContent.Contains("[pic,hash="))
                {
                    MatchCollection matches = Regex.Matches(sMsg.MessageContent, "\\[pic,hash.*?\\]", RegexOptions.Multiline | RegexOptions.IgnoreCase);

                    foreach (Match match in matches)
                    {
                        API.GetImageLink(sMsg.ThisQQ, sMsg.SenderQQ, 0, match.Value);
                    }
                }
                else if (sMsg.MessageContent.Contains("取好友列表"))
                {
                    API.GetFriendLists(sMsg.ThisQQ, sMsg.SenderQQ);
                }
                else if (sMsg.MessageContent.Contains("查询好友信息"))
                {
                    API.GetFriendData(sMsg.ThisQQ, sMsg.SenderQQ);
                }
                else if (sMsg.MessageContent == "取钱包")
                {
                    var ret = API.GetQQWalletPersonalInformationEvent(sMsg.ThisQQ);
                    API.SendPrivateMsg(PInvoke.plugin_key, sMsg.ThisQQ, sMsg.SenderQQ, ret, ref MessageRandom, ref MessageReq);
                }
                else
                {
                    //复读机
                    //API.SendPrivateMsg(PInvoke.plugin_key,sMsg.ThisQQ, sMsg.SenderQQ, sMsg.SenderQQ.ToString() + "发送了这样的消息:" + sMsg.MessageContent, ref MessageRandom, ref MessageReq);
                }
            }
            return(0);
        }
Beispiel #9
0
 public static void InvokePrivateMessageEvent(PrivateMessageEventArgs args)
 {
     PrivateMessageEvent?.Invoke(args);
 }
        public void RecvicetPrivateMsg(PrivateMessageEvent e)
        {
            //if (e.ThisQQ == e.SenderQQ)
            //{
            //    return;
            //}
            //Common.xlzAPI.OutLog("我输出的日志");
            //Common.xlzAPI.SendPrivateMessage(e.ThisQQ, e.SenderQQ, "欢迎使用小栗子SDK");
            //Common.xlzAPI.RecviceImage(e.MessageContent, e.ThisQQ, e.SenderQQ);
            //Common.xlzAPI.GetFriendList(e.ThisQQ);
            //List<SDK.Model.GroupInfo> groupInfos = Common.xlzAPI.Getgrouplist(e.ThisQQ);
            //if (groupInfos != null)
            //{
            //    Common.xlzAPI.GetgroupMemberlist(e.ThisQQ, groupInfos[0].GroupID);
            //}
            //Common.xlzAPI.GetAdministratorList(e.ThisQQ,535107725);
            //Common.xlzAPI.GetgroupMemberlist(e.ThisQQ, 535107725);
            //Common.xlzAPI.GetFriendInfoEvent(e.ThisQQ, 414725048);
            //Common.xlzAPI.CreateGroupFolderEvent(e.ThisQQ, 247681297, "小栗子");
            //Common.xlzAPI.SendFreeGiftEvent(e.ThisQQ, 247681297, 414725048, SDK.Enum.FreeGiftEnum.Gift_280);
            //Common.xlzAPI.GetGroupFileListEvent(e.ThisQQ, 480325208,"");
            //string imagepath = System.Environment.CurrentDirectory + "\\上传好友图片.png";
            //string piccode = Common.xlzAPI.UploadGroupImage(e.ThisQQ, 480325208, imagepath, false);
            //if (e.MessageContent.Contains("转发"))
            //{
            //    Common.xlzAPI.SendPrivateMessage(e.ThisQQ, e.MessageGroupQQ, e.MessageContent);
            //}
            //for (int i = 0; i < 600; i++)
            //{

            //    //SDK.Core.API aPI = new SDK.Core.API();
            //    //aPI.SendPrivateMessage(e.ThisQQ, e.SenderQQ, "VDXXH-QDN62-K2MTB-G2P88-Q7B86\r\n无法安装此密钥\r\n0xC004F025 \r\n2020/09/05 17:57:29(UTC+8)");
            //    //aPI.SendPrivateMessage(e.ThisQQ, e.SenderQQ, i.ToString());
            //    //System.Threading.Thread.Sleep(200);
            //    Common.xlzAPI.SendPrivateMessage(e.ThisQQ, e.SenderQQ, "VDXXH-QDN62-K2MTB-G2P88-Q7B86\r\n无法安装此密钥\r\n0xC004F025 \r\n2020/09/05 17:57:29(UTC+8)");
            //    Common.xlzAPI.SendPrivateMessage(e.ThisQQ, e.SenderQQ, i.ToString());
            //    System.Threading.Thread.Sleep(200);
            //}
            //Common.xlzAPI.GetGroupMemberBriefInfoEvent(e.ThisQQ, 480325208);247681297
            //string cookies = Common.xlzAPI.GetWebCookiesEvent(e.ThisQQ, "https://h5.qzone.qq.com/mqzone/index", "549000929", "5");
            string picpath = System.Environment.CurrentDirectory + "\\图片.png";

            if (e.MessageContent.Equals("发送群公告"))
            {
                if (File.Exists(picpath))
                {
                    string ret = Common.xlzAPI.SetAnnouncementEvent(e.ThisQQ, 247681297, "小栗子发公告", "测试发公告", picpath, null, true, true, true, true, true);
                }
            }
            //if (e.MessageContent.Contains("[Shake,name="))
            //{
            //    string Shakepath = System.Environment.CurrentDirectory + "\\Shake.txt";
            //    using (FileStream fs = new FileStream(Shakepath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            //    {
            //        fs.Position = fs.Length;
            //        using (StreamWriter sw = new StreamWriter(fs))
            //        {
            //            sw.WriteLine(e.MessageContent);
            //            sw.Close();
            //        }
            //        fs.Close();
            //    }
            //}
            if (e.MessageContent.Equals("取钱包"))
            {
                Common.xlzAPI.GetQQWalletPersonalInformationEvent(e.ThisQQ);
            }
            if (e.MessageContent.Equals("删成员"))
            {
                Common.xlzAPI.DelGroupMemberByBatch(e.ThisQQ, 480325208, new List <long>()
                {
                    2403875843, 2261002716
                }, false);
            }
            if (e.MessageContent.Equals("简略"))
            {
                Common.xlzAPI.GetGroupMemberBriefInfoEvent(e.ThisQQ, 480325208);
            }
            picpath = System.Environment.CurrentDirectory + "\\logo.png";
            if (e.MessageContent.Equals("发图"))
            {
                Common.xlzAPI.SendFriendImage(e.ThisQQ, e.SenderQQ, picpath, false);
            }
        }
Beispiel #11
0
 private void OnNextPrivateMessageEvent(PrivateMessageEvent obj)
 {
     Log(Json(obj), LogLevel.Information);
 }