コード例 #1
0
ファイル: Program.cs プロジェクト: fengyeju/Daylily
        static void Main(string[] args)
        {
            Subscribe newPlugin = new Subscribe
            {
                //UnsubscribeMapper = "pw384",
                //SubscribeMapper = "rustbell",
                //SubscribeMapper = "UnitedWeSin",
                SubscribeMapper = "yf_bmp",
                //SubscribeMapper = "pw384",
                //List = true
            };

            newPlugin.OnInitialized(new StartupConfig(null, null, new StartupConfig.Metadata()));
            CoolQRouteMessage cm = CoolQRouteMessage.Parse(new CoolQGroupMessageApi
            {
                GroupId = 123456788,
                UserId  = 2241521134,
                Message = "SB",
            });

            Logger.Success("收到:" + newPlugin.OnMessageReceived(new CoolQ.CoolQScopeEventArgs
            {
                RouteMessage = cm
            }).Message);
            Console.ReadKey();
        }
コード例 #2
0
        private void DispatchMessage(CoolQMessageApi coolQMessageApi)
        {
            CoolQIdentity cqIdentity;

            switch (coolQMessageApi)
            {
            case CoolQPrivateMessageApi privateMsg:
                cqIdentity = new CoolQIdentity(privateMsg.UserId, MessageType.Private);
                RunNext <CoolQPrivateMessageApi>(cqIdentity);
                break;

            case CoolQDiscussMessageApi discussMsg:
                cqIdentity = new CoolQIdentity(discussMsg.DiscussId, MessageType.Discuss);
                RunNext <CoolQDiscussMessageApi>(cqIdentity);
                break;

            case CoolQGroupMessageApi groupMsg:
                cqIdentity = new CoolQIdentity(groupMsg.GroupId, MessageType.Group);
                RunNext <CoolQGroupMessageApi>(cqIdentity);
                break;

            default:
                throw new ArgumentException();
            }

            SessionList[cqIdentity].LockMsg = false;

            void RunNext <T>(CoolQIdentity id) where T : CoolQMessageApi
            {
                while (SessionList[id].MsgQueue.TryDequeue(out object current))
                {
                    var currentMsg = (T)current;
                    try
                    {
                        CoolQRouteMessage coolQRouteMessage = CoolQRouteMessage.Parse(currentMsg);
                        HandleMessage(new CoolQScopeEventArgs
                        {
                            DisabledApplications = new List <ApplicationPlugin>(),
                            RouteMessage         = coolQRouteMessage
                        });
                    }
                    catch (Exception ex)
                    {
                        Logger.Exception(ex);
                    }
                }
            }
        }
コード例 #3
0
        public override bool Message_Received(object sender, MessageEventArgs args)
        {
            bool          handled   = false;
            var           originObj = (CoolQMessageApi)args.ParsedObject;
            CoolQIdentity identity;

            switch (originObj)
            {
            case CoolQPrivateMessageApi privateMsg:
                identity = new CoolQIdentity(privateMsg.UserId, MessageType.Private);
                break;

            case CoolQDiscussMessageApi discussMsg:
                identity = new CoolQIdentity(discussMsg.DiscussId, MessageType.Discuss);
                break;

            case CoolQGroupMessageApi groupMsg:
                identity = new CoolQIdentity(groupMsg.GroupId, MessageType.Group);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            if (!SessionList.ContainsKey(identity))
            {
                SessionList.Add(identity, new Session(identity));
            }
            if (SessionList[identity].MsgQueue.Count < SessionList[identity].MsgLimit) // 允许缓存n条,再多的丢弃
            {
                SessionList[identity].MsgQueue.Enqueue(originObj);
            }
            else if (!SessionList[identity].LockMsg)
            {
                SessionList[identity].LockMsg = true;
                SendMessageAsync(CoolQRouteMessage.Parse(originObj).ToSource(originObj.Message));
            }

            if (!SessionList[identity].TryRun(() => DispatchMessage(originObj)))
            {
                Logger.Info("当前已有" + SessionList[identity].MsgQueue.Count + "条消息在" + identity + "排队");
            }

            return(handled);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: fengyeju/Daylily
        static void Main(string[] args)
        {
            // 引用添加项目Daylily.Common
            Panda newPlugin = new Panda();

            newPlugin.OnInitialized(new Bot.StartupConfig(null, null, new Bot.StartupConfig.Metadata()));
            CoolQRouteMessage cm = CoolQRouteMessage.Parse(new CoolQGroupMessageApi
            {
                GroupId = 123456788,
                UserId  = 2241521134,
                Message = "SB",
            });

            Logger.Success("收到:" + newPlugin.OnMessageReceived(new CoolQ.CoolQScopeEventArgs
            {
                RouteMessage = cm
            }).Message);
            Console.ReadKey();
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: wusir2001/Daylily
        static void Main(string[] args)
        {
            Roll newPlugin = new Roll();

            newPlugin.OnInitialized(new StartupConfig(null, null, new StartupConfig.Metadata()));
            while (true)
            {
                var msg = Console.ReadLine();
                CoolQRouteMessage cm = CoolQRouteMessage.Parse(new CoolQGroupMessageApi
                {
                    GroupId = 123456788,
                    UserId  = 2241521134,
                    Message = msg,
                });

                Logger.Raw("回复:" + newPlugin.OnMessageReceived(new Daylily.CoolQ.CoolQScopeEventArgs
                {
                    RouteMessage = cm
                }).RawMessage);
            }
        }