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(); }
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); } } } }
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); }
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(); }
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); } }