public static int Event_pluginStop() { QLAPI.CoUninitialize(); QLAPI.Api_SendLog("Debug", "已停止", 0, ac); DataManager.Stop(); return(0); }
public static UserInfo Get(long qqNo) { string result = QLAPI.Api_GetQQInfo(qqNo.ToString(), QLMain.ac); //QLAPI.Api_SendLog("Debug", "Api_GetQQInfo:"+result, 0, QLMain.ac); if (string.IsNullOrEmpty(result)) { return(null); } var info = JsonConvert.DeserializeObject <JsonModel <QQJsonModel> >(result); var qq = info.Result.buddy.info_list[0]; var qqInfo = new QQ(); qqInfo.Id = qq.uin; qqInfo.Nick = qq.nick; qqInfo.Sex = (Sex)qq.gender; var user = Users.Find(p => p.QQ == qqNo); if (user != null) { user.Nick = qqInfo.Nick; user.Sex = qqInfo.Sex; } else { Users.Add(new UserInfo(qqInfo)); } return(user); }
public override async Task ExecuteAsync(List <string> command, EventSourceType sourceType, UserInfo qq, Group group, GroupMember member) { if (sourceType != EventSourceType.Private) { return; } QLAPI.Api_SendPraise(qq.QQ.ToString(), QLMain.ac); MessageManager.Send(sourceType, "赞了赞了!", qq?.QQ); }
public static int Event_GetNewMsg(int type, string GroupID, string FromQQ, string Msg, string MsgID) { QLAPI.Api_SendLog("收到信息", string.Format("type:{0},GroupID:{1},FromQQ:{2},Msg:{3},MsgID:{4}", type, GroupID, FromQQ, Msg, MsgID), 0, ac); if (Msg.IndexOf("s") > -1) { QLAPI.Api_SendMsg(type, GroupID, FromQQ, "您发送了带有s的字符串", ac); } return(MSG_CONTINUE); // MSG_INTERCEPT 代表拦截消息不传递到下一个插件,插件的优先级可以通过拖拽插件列表来调整 }
public static int Event_pluginStart() { QLAPI.CoInitialize(0); QLAPI.Api_SendLog("Debug", "已启动", 0, ac); try { CommandCenter.ReloadManagers(); DataManager.Init(); } catch (Exception e) { QLAPI.Api_SendLog("Error", e.Message + e.StackTrace, 0, ac); } return(0); }
public static void ReloadManagers() { QLAPI.Api_SendLog("debug", "ReloadingManager", 0, QLMain.ac); //只能拿到直接继承的派生类,有需要的时候再改 var managerTypes = Assembly.GetExecutingAssembly().GetTypes() .Where(p => p.BaseType == typeof(BaseManager)).ToList(); QLAPI.Api_SendLog("debug", $"found {managerTypes.Count} managers", 0, QLMain.ac); var managerWithCommands = managerTypes.Select(p => new { Type = p, CommandList = p.GetCustomAttributes <CommandAttribute>().ToList() }).Where(p => p.CommandList.Any()).ToList(); managerWithCommands.ForEach(p => { p.CommandList.ForEach(q => { Managers.Add(q.Command, p.Type); }); }); QLAPI.Api_SendLog("debug", $"found {managerWithCommands.Count}", 0, QLMain.ac); }
public override async Task ExecuteAsync(List <string> command, EventSourceType sourceType, UserInfo qq, Group group, GroupMember member) { var name = ""; if (sourceType == EventSourceType.Group) { if (member == null) { QLAPI.Api_SendLog("debug", "Jrrp group member is null", 0, QLMain.ac); return; } if (_disabledJrrpGroupNumbers.Contains(member.GroupNumber)) { return; } name = member.GroupName; } else if (sourceType == EventSourceType.Private || sourceType == EventSourceType.Friend) { if (qq == null) { QLAPI.Api_SendLog("debug", "Jrrp qq is null", 0, QLMain.ac); return; } name = qq.Name; } var isReroll = qq.ReRollStep == UserInfo.RerollStep.CanReroll; var rp = GetJrrp(qq, isReroll); switch (qq.ReRollStep) { case UserInfo.RerollStep.None: MessageManager.Send(sourceType, name + "今天的人品值是:" + rp, qq: qq?.QQ, toGroupNo: member?.GroupNumber); return; case UserInfo.RerollStep.CanReroll: MessageManager.Send(sourceType, name + "今天的人品不太好,确定要看的话就再来一次吧", qq: qq?.QQ, toGroupNo: member?.GroupNumber); return; case UserInfo.RerollStep.RerollFaild: if (rp == 1) { MessageManager.Send(sourceType, $"……", qq: qq?.QQ, toGroupNo: member?.GroupNumber); } else { MessageManager.Send(sourceType, name + $"今天的人品值只有:{rp}", qq: qq?.QQ, toGroupNo: member?.GroupNumber); } return; case UserInfo.RerollStep.RerollSuccess: MessageManager.Send(sourceType, $"啊!对不起刚才是我失误了!{name}今天人品值应该是:{rp}", qq: qq?.QQ, toGroupNo: member?.GroupNumber); qq.ReRollStep = UserInfo.RerollStep.None; return; case UserInfo.RerollStep.RerollDevastated: if (rp == 1) { MessageManager.Send(sourceType, $"……", qq: qq?.QQ, toGroupNo: member?.GroupNumber); } else { MessageManager.Send(sourceType, $"都说了不想告诉你了嘛……{name}今天人品值只有:{rp}", qq: qq?.QQ, toGroupNo: member?.GroupNumber); } qq.ReRollStep = UserInfo.RerollStep.RerollFaild; return; } }
public static GroupMember Get(long qq, long groupNo) { var member = GroupMembers.Find(p => p.QQ == qq && p.GroupId == groupNo); if (member != null) { return(member); } string result = QLAPI.Api_GetGroupMemberList(groupNo.ToString(), false, QLMain.ac); //QLAPI.Api_SendLog("Debug", "Api_GetGroupMemberList:" + result, 0, QLMain.ac); if (string.IsNullOrEmpty(result)) { return(null); } var info = JsonConvert.DeserializeObject <GroupMemberJsonModel>(result); if (!info.members.ContainsKey(qq.ToString())) { return(null); } info.members.Select(p => new { QQ = p.Key, member = p.Value }).ToList().ForEach(p => { var basemember = new PirateZombie.SDK.BaseModel.GroupMember(); basemember.GroupId = groupNo; basemember.QQId = long.Parse(p.QQ); //member.Nick = binary.ReadString_Ex(_defaultEncoding); var memberInfo = info.members[p.QQ]; var card = Regex.Unescape((memberInfo.cd ?? memberInfo.nk).Replace(" ", " ")); basemember.Card = card; //member.Sex = (Sex)binary.ReadInt32_Ex(); //member.Age = binary.ReadInt32_Ex(); //member.Area = binary.ReadString_Ex(_defaultEncoding); //member.JoiningTime = binary.ReadInt32_Ex().ToDateTime(); //member.LastDateTime = binary.ReadInt32_Ex().ToDateTime(); //member.Level = binary.ReadString_Ex(_defaultEncoding); basemember.PermitType = info.owner == basemember.QQId ? PermitType.Holder : (info.adm != null && info.adm.Any() && info.adm.Contains(basemember.QQId) ? PermitType.Manage : PermitType.None); //member.BadRecord = binary.ReadInt32_Ex() == 1; //member.SpecialTitle = binary.ReadString_Ex(_defaultEncoding); //member.SpecialTitleDurationTime = binary.ReadInt32_Ex().ToDateTime(); //member.CanModifiedCard = binary.ReadInt32_Ex() == 1; //#endregion //var gm = _groupMembers.Find(p => p.QQ == qq && p.GroupNumber == groupNo); //if (gm == null) //{ // gm = new GroupMember(member); // _groupMembers.Add(gm); //} //else //{ // gm.Copy(member); //} member = new GroupMember(basemember); GroupMembers.Add(member); }); member = GroupMembers.Find(p => p.QQ == qq && p.GroupId == groupNo); return(member); }
public static int Event_Initialization() { QLAPI.init();//初始化API,不可删除 QLAPI.Api_SendLog("Debug", "成功", 0, ac); return(0); }
public static int Event_GetNewMsg(int type, string GroupID, string FromQQ, string Msg, string MsgID) { QLAPI.Api_SendLog("收到信息", string.Format("type:{0},GroupID:{1},FromQQ:{2},Msg:{3},MsgID:{4}", type, GroupID, FromQQ, Msg, MsgID), 0, ac); //if (Msg.IndexOf("s") > -1) //{ // QLAPI.Api_SendMsg(type, GroupID, FromQQ, "您发送了带有s的字符串", ac); //} EventSourceType?source = null; switch (type) { case 1: source = EventSourceType.Friend; break; case 2: source = EventSourceType.Group; break; case 3: case 5: break; case 4: source = EventSourceType.Discuss; break; case 6: source = EventSourceType.Private; break; } if (source.HasValue) { long?qq = null; long?groupId = null; if (long.TryParse(FromQQ, out var tqq)) { qq = tqq; } if (long.TryParse(GroupID, out var tgroupId)) { groupId = tgroupId; } try { CommandCenter.Execute(Msg, source.Value, qq, groupId); } catch (Exception e) { QLAPI.Api_SendLog("Error", e.Message + e.StackTrace, 0, QLMain.ac); } } else { QLAPI.Api_SendLog("Error", "不支持的消息来源类型", 0, QLMain.ac); } return(MSG_CONTINUE); // MSG_INTERCEPT 代表拦截消息不传递到下一个插件,插件的优先级可以通过拖拽插件列表来调整 }
public static int Event_pluginStop() { QLAPI.CoUninitialize(); return(0); }
public static int Event_pluginStart() { QLAPI.CoInitialize(0); return(0); }
public static void SendFriend(long qq, string message) { QLAPI.Api_SendMsg(EventSourceType.Friend.ToInt(), null, qq.ToString(), message, QLMain.ac); }
public static void SendToGroup(long groupNo, string message) { QLAPI.Api_SendMsg(EventSourceType.Group.ToInt(), groupNo.ToString(), null, message, QLMain.ac); }