public static void SendTextMessage(MessageSourceType sourceType, string message, long?qq = null, long?toGroupNo = null) { switch (sourceType) { case MessageSourceType.Group: if (!toGroupNo.HasValue || toGroupNo <= 0) { return; } SendTextMessageToGroup(toGroupNo.Value, message); break; case MessageSourceType.Private: if (!qq.HasValue || qq <= 0) { return; } SendTextMessagePrivate(qq.Value, message); break; case MessageSourceType.Friend: if (!qq.HasValue || qq <= 0) { return; } SendTextMessageFriend(qq.Value, message); break; } }
public AllianceUserRequests(MessageSourceType msType) { if (msType == MessageSourceType.IsUser) { _cbName = "My Requests to alliacne"; } else if (msType == MessageSourceType.IsAlliance) { _cbName = "Requests to alliacne"; } }
public static void SendMessage(MessageSourceType sourceType, List <BaseMessage> messages, long?qq = null, long?toGroupNo = null) { var message = new Message(); switch (sourceType) { case MessageSourceType.Group: if (!toGroupNo.HasValue || toGroupNo <= 0) { return; } message.Type = MessageSourceType.Group; message.ToGroup = toGroupNo.Value; break; case MessageSourceType.Private: if (!qq.HasValue || qq <= 0) { return; } message.Type = MessageSourceType.Private; message.ToQQ = qq.Value; break; case MessageSourceType.Friend: if (!qq.HasValue || qq <= 0) { return; } message.Type = MessageSourceType.Friend; message.ToQQ = qq.Value; break; } message.Content.AddRange(messages); EventCenter.SendMessage(message); }
public static void SendImageMessage(MessageSourceType sourceType, string path, long?qq = null, long?toGroupNo = null) { var message = new Message(); switch (sourceType) { case MessageSourceType.Group: if (!toGroupNo.HasValue || toGroupNo <= 0) { return; } message.Type = MessageSourceType.Group; message.ToGroup = toGroupNo.Value; break; case MessageSourceType.Private: if (!qq.HasValue || qq <= 0) { return; } message.Type = MessageSourceType.Private; message.ToQQ = qq.Value; SendTextMessagePrivate(qq.Value, path); break; case MessageSourceType.Friend: if (!qq.HasValue || qq <= 0) { return; } message.Type = MessageSourceType.Friend; message.ToQQ = qq.Value; break; } message.AddImageMessage(path); PlatformManager.SendMessage(message); }
public override async System.Threading.Tasks.Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { var toGroup = 0L; var fromQQ = 0L; if (sourceType == MessageSourceType.Private) { fromQQ = qq.QQ; if (fromQQ != DataManager.Instance.AdminQQ) { MessageManager.SendTextMessage(sourceType, "不给看不给看!", fromQQ, toGroup); return; } } else if (sourceType == MessageSourceType.Group) { fromQQ = member.QQ; toGroup = member.GroupNumber; if (command.Any() && command.First() == "on") { if (member.QQ == DataManager.Instance.AdminQQ) { if (!DataManager.Instance.EnabledRandomImgNumbers.Contains(member.GroupNumber)) { DataManager.Instance.EnabledRandomImgNumbers.Add(member.GroupNumber); MessageManager.SendTextMessage(sourceType, "启用成功!", fromQQ, toGroup); DataManager.Instance.NoticeConfigUpdated(); return; } } } else if (command.Any() && command.First() == "off") { if (member.QQ == DataManager.Instance.AdminQQ) { if (DataManager.Instance.EnabledRandomImgNumbers.Contains(member.GroupNumber)) { DataManager.Instance.EnabledRandomImgNumbers.Remove(member.GroupNumber); MessageManager.SendTextMessage(sourceType, "禁用成功!", fromQQ, toGroup); DataManager.Instance.NoticeConfigUpdated(); return; } } } if (!DataManager.Instance.EnabledRandomImgNumbers.Contains(member.GroupNumber)) { MessageManager.SendTextMessage(sourceType, "这个群没启用这个功能,快去找开发者来开启", fromQQ, toGroup); return; } } else { return; } if (command.Count > 2) { MessageManager.SendTextMessage(sourceType, "Tag太多啦,一次最多只能查两个", fromQQ, toGroup); return; } var key = new Tuple <MessageSourceType, long>(sourceType, sourceType == MessageSourceType.Private ? fromQQ : toGroup); if (fromQQ != DataManager.Instance.AdminQQ) { if (_lastFetchTimeDic.ContainsKey(key)) { if (DateTime.Now.Subtract(_lastFetchTimeDic[key]).TotalSeconds < _intervalSeconds) { MessageManager.SendTextMessage(sourceType, "太频繁啦,每分钟只能出一张图", fromQQ, toGroup); return; } } } using (var client = new HttpClient()) { var url = "https://danbooru.donmai.us/posts/random.json"; var tag = string.Join("+", command); if ((command?.Count ?? 0) > 0) { url += $"?tags={tag}"; } var res = await client.GetAsync(url); if (res.StatusCode == System.Net.HttpStatusCode.NotFound) { MessageManager.SendTextMessage(sourceType, $"{tag}:\ntag写错了吗,没找到图呢", fromQQ, toGroup); return; } if (!res.IsSuccessStatusCode) { MessageManager.SendTextMessage(sourceType, $"{tag}:\n请求失败了QAQ", fromQQ, toGroup); return; } var strContent = await res.Content.ReadAsStringAsync(); var jsonRes = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(strContent, new { file_url = "", id = 0L, success = (bool?)null, is_banned = (bool?)null }); if (jsonRes.success.HasValue && !jsonRes.success.Value) { MessageManager.SendTextMessage(sourceType, $"{tag}:\ntag写错了吗,没找到图呢", fromQQ, toGroup); return; } if (jsonRes.is_banned.HasValue && jsonRes.is_banned.Value) { MessageManager.SendTextMessage(sourceType, $"{tag}:\nid:{jsonRes.id}\n这张图被作者要求下架了QAQ", fromQQ, toGroup); return; } try { var imgRes = await client.GetAsync(jsonRes.file_url); var img = System.Drawing.Image.FromStream(await imgRes.Content.ReadAsStreamAsync()); var fileName = jsonRes.file_url.Split('/').Last(); var dir = Path.Combine(Config.DataPath, "image"); var path = Path.Combine(dir, fileName); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } img.Save(path); MessageManager.SendTextMessage(sourceType, $"[CQ:image,file={fileName}]\n{tag}:\nhttps://danbooru.donmai.us/posts/{jsonRes.id}", fromQQ, toGroup); File.Delete(path); } catch (Exception e) { _logger.Error(e, $"download remote image failed, detail response: {Environment.NewLine}{Newtonsoft.Json.JsonConvert.SerializeObject(jsonRes)}"); throw; } if (fromQQ != DataManager.Instance.AdminQQ) { if (_lastFetchTimeDic.ContainsKey(key)) { _lastFetchTimeDic[key] = DateTime.Now; } else { _lastFetchTimeDic.Add(key, DateTime.Now); } } } return; }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { await Task.Yield(); Dictionary <string, string> descDic = null; if (sourceType == MessageSourceType.Group) { descDic = Config.GroupCommandDesc; } else if (sourceType == MessageSourceType.Private) { descDic = Config.PrivateCommandDesc; } else { return; } StringBuilder desc = new StringBuilder().AppendLine(string.Join("\n", descDic.Select(p => $"{p.Key}\t\t{p.Value}"))); if (DataManager.Instance.AdminQQ > 0) { desc.Append($"bug反馈请联系QQ:{DataManager.Instance.AdminQQ}"); } MessageManager.SendTextMessage(sourceType, desc.ToString(), qq: qq?.QQ, toGroupNo: member?.GroupNumber); }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { await Task.Yield(); var fromQQ = 0L; var toGroup = 0L; //var message = ""; if (sourceType != MessageSourceType.Group) { return; } fromQQ = member.QQ; toGroup = member.GroupNumber; var permit = member.PermitType; if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限忽略用户", fromQQ, toGroup); return; } if (!command.Any()) { return; } if (!long.TryParse(command[0], out var banQQ)) { return; } if (GroupIgnore.ContainsKey((member.GroupId, banQQ))) { UpdateGroupIgnore(member.GroupId, banQQ, false); MessageManager.SendTextMessage(MessageSourceType.Group, $"用户{banQQ}在群{member.GroupId}已解除忽略", fromQQ, toGroup); return; }
public static async Task Execute(string command, List <BaseMessage> originMessage, MessageSourceType sourceType, long?qqNo = null, long?groupNo = null) { UserInfo qq = null; Group group = null; if (qqNo.HasValue) { qq = UserManager.Get(qqNo.Value); } GroupMember member = null; if (qqNo.HasValue && groupNo.HasValue) { member = await GroupMemberManager.Get(qqNo.Value, groupNo.Value); if (member != null && (DataManager.Instance?.GroupIgnore?.ContainsKey((member.GroupNumber, member.QQ)) ?? false)) { return; } } if (!command.StartsWith(".") && !command.StartsWith("/")) { if (sourceType == MessageSourceType.Group) { ExecuteWithoutCommand(command, originMessage, sourceType, qq, member); } return; } var commandStr = command.Remove(0, 1); var commandList = Tools.TakeCommandParts(commandStr); var commandName = commandList.FirstOrDefault(); if (commandName == null) { return; } var manager = GetManagerByCommand(commandName); if (manager == null) { if (sourceType == MessageSourceType.Group) { ExecuteWithoutCommand(command, originMessage, sourceType, qq, member); } return; } commandList.RemoveAt(0); var args = commandList; if (sourceType == MessageSourceType.Group) { if (BanManager.QQBan.TryGetValue(member.QQ, out _)) { MessageManager.SendTextMessage(sourceType, "滚", member.QQ, member.GroupNumber); return; } else if (BanManager.GroupBan.TryGetValue((member.QQ, member.GroupNumber), out _)) { MessageManager.SendTextMessage(sourceType, "滚", member.QQ, member.GroupNumber); return; } } await manager.ExecuteAsync(args, originMessage, sourceType, qq, group, member); }
private static void ExecuteWithoutCommand(string message, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, GroupMember member) { var managerList = new List <Tuple <BaseManager, List <string> > >(); var randomRes = Random.Next(1, 101); if (member != null && RepeatManager.GroupRepeatConfig.ContainsKey(member.GroupNumber)) { var config = RepeatManager.GroupRepeatConfig[member.GroupNumber]; if (randomRes <= config.Percent) { managerList.Add(new Tuple <BaseManager, List <string> >(new RepeatManager(), new List <string> { "repeat", message })); } } if (member != null && ShaDiaoTuManager.GroupShaDiaoTuConfig.ContainsKey(member.GroupNumber)) { var config = ShaDiaoTuManager.GroupShaDiaoTuConfig[member.GroupNumber]; if (randomRes <= config.Percent) { managerList.Add(new Tuple <BaseManager, List <string> >(new ShaDiaoTuManager(), new List <string> { "shadiaotu" })); } } if (member != null && BakiManager.GroupBakiConfig.ContainsKey(member.GroupNumber)) { var config = BakiManager.GroupBakiConfig[member.GroupNumber]; if (randomRes <= config.Percent) { managerList.Add(new Tuple <BaseManager, List <string> >(new BakiManager(), new List <string> { "baki" })); } } if (managerList.Any()) { var choose = Random.Next(0, managerList.Count); var choosen = managerList[choose]; Task.Run(async() => { await choosen.Item1.ExecuteAsync(choosen.Item2, originMessage, sourceType, qq, null, member); }); } }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { await Task.Yield(); if (member == null) { return; } var permit = member.PermitType; if (permit == PermitType.None) { return; } string message = null; if (!long.TryParse(command.FirstOrDefault(), out var targetQQ)) { return; } var targetMember = await GroupMemberManager.Get(targetQQ, member.GroupId); if (targetMember == null) { return; } var originText = (originMessage.ElementAt(1) is TextMessage tm) ? tm.Text : null; if (originText == null) { return; } var index = originText.IndexOf(targetQQ.ToString(), StringComparison.Ordinal) + targetQQ.ToString().Length; var newNickName = originText.Length < index + 1 ? null : originText.Substring(index + 1); if (string.IsNullOrWhiteSpace(newNickName)) { DelNickName(targetMember, ref message); } else { SetNickName(targetMember, newNickName, ref message); } MessageManager.SendTextMessage(sourceType, message, member.QQ, member.GroupNumber); }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { var fromQQ = 0L; var toGroup = 0L; var message = ""; if (sourceType == MessageSourceType.Private) { fromQQ = qq.QQ; if (command.Count < 2) { MessageManager.SendTextMessage(MessageSourceType.Private, "你不说话我怎么知道你想让我帮你说什么0 0", fromQQ); return; } if (!long.TryParse(command[0], out toGroup)) { MessageManager.SendTextMessage(MessageSourceType.Private, "小夜看不明白你想把这段话发到哪", fromQQ); return; } var mem = await GroupMemberManager.Get(fromQQ, toGroup); message = mem.GroupName + string.Join(" ", command.Skip(1)); MessageManager.SendTextMessage(MessageSourceType.Group, message, fromQQ, toGroup); } else if (sourceType == MessageSourceType.Group) { fromQQ = member.QQ; toGroup = member.GroupNumber; if (!command.Any()) { MessageManager.SendTextMessage(MessageSourceType.Group, "你不说话我怎么知道你想让我帮你说什么0 0", fromQQ, toGroup); return; } message = member.GroupName + string.Join(" ", command); MessageManager.SendTextMessage(MessageSourceType.Group, message, fromQQ, toGroup); } }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { await Task.Yield(); var name = ""; if (sourceType == MessageSourceType.Group) { if (member == null) { return; } name = string.IsNullOrWhiteSpace(member.GroupName) ? qq.Name : member.GroupName; } else if (sourceType == MessageSourceType.Private) { if (qq == null) { return; } name = qq.Name; } var str = $"{name}的疯狂发作 - 临时症状:\n"; var insaneIndex = DiceManager.RollDice(_tempInsaneList.Count - 1); str += $"1d{_tempInsaneList.Count - 1}={insaneIndex}\n"; var duration = DiceManager.RollDice(10); if (insaneIndex == 9) { var fearIndex = DiceManager.RollDice(_fearList.Count - 1); str += string.Format($"症状=>{_tempInsaneList[insaneIndex]}", "1d10=" + duration, $"1d{_fearList.Count - 1}={fearIndex}", _fearList[fearIndex]); } else if (insaneIndex == 10) { var panicIndex = DiceManager.RollDice(_panicList.Count - 1); str += string.Format($"症状=>{_tempInsaneList[insaneIndex]}", "1d10=" + duration, $"1d{_panicList.Count - 1}={panicIndex}", _panicList[panicIndex]); } else { str += string.Format($"症状=>{_tempInsaneList[insaneIndex]}", "1d10=" + duration); } MessageManager.SendTextMessage(sourceType, str, qq?.QQ, member?.GroupNumber); }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { var fromQQ = 0L; var toGroup = 0L; //var message = ""; if (sourceType != MessageSourceType.Group) { return; } fromQQ = member.QQ; toGroup = member.GroupNumber; var permit = member.PermitType; if (!command.Any()) { if (!GroupShaDiaoTuConfig.TryGetValue(toGroup, out var config)) { MessageManager.SendTextMessage(MessageSourceType.Group, "当前群尚未开启沙雕图功能", fromQQ, toGroup); } else { MessageManager.SendTextMessage(MessageSourceType.Group, $"当前沙雕图概率:{config.Percent}%", fromQQ, toGroup); } return; } if (command[0].Equals("on", StringComparison.CurrentCultureIgnoreCase)) { if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限开启沙雕图功能", fromQQ, toGroup); return; } ShaDiaoTuConfig config; if (command.Count == 1) { config = new ShaDiaoTuConfig(); } else { if (int.TryParse(command[1], out var percent)) { config = new ShaDiaoTuConfig { Percent = percent > 100 ? 100 : percent }; } else { config = new ShaDiaoTuConfig(); } } UpdateGroupShaDiaoTuConfig(toGroup, config); MessageManager.SendTextMessage(MessageSourceType.Group, $"随机沙雕图已开启,发图概率:{config.Percent}%", fromQQ, toGroup); } else if (command[0].Equals("off", StringComparison.CurrentCultureIgnoreCase)) { if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限关闭沙雕图功能", fromQQ, toGroup); return; } UpdateGroupShaDiaoTuConfig(toGroup, null); MessageManager.SendTextMessage(MessageSourceType.Group, "随机沙雕图已关闭", fromQQ, toGroup); } else if (command[0].Equals("add", StringComparison.CurrentCultureIgnoreCase)) { if (!GroupShaDiaoTuConfig.ContainsKey(toGroup)) { MessageManager.SendTextMessage(MessageSourceType.Group, "先找人把功能打开啦", fromQQ, toGroup); return; } if (_lastTime.ContainsKey(fromQQ) && _lastTime[fromQQ] == DateTime.Today && fromQQ != DataManager.Instance.AdminQQ) { MessageManager.SendTextMessage(MessageSourceType.Group, "每人每天只能添加一张", fromQQ, toGroup); return; } var image = (ImageMessage)originMessage.Find(p => p is ImageMessage); if (image == null) { MessageManager.SendTextMessage(MessageSourceType.Group, "图呢0 0", fromQQ, toGroup); return; } //var img = command[1]; //var match = _imageGuid.Match(img); //if (!match.Groups["Guid"].Success) //{ // MessageManager.SendTextMessage(MessageSourceType.Group, "图呢0 0", fromQQ, toGroup); // return; //} //var fileName = match.Groups["Guid"].Value; //var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp", "image"); //var iniFileName = Path.Combine(path, Path.GetFileNameWithoutExtension(fileName) + ".ini"); //if (!File.Exists(iniFileName)) //{ // MessageManager.SendTextMessage(MessageSourceType.Group, "上传失败惹", fromQQ, toGroup); // return; //} //var fileText = File.ReadAllText(iniFileName); //var url = fileText.Split('\n').FirstOrDefault(p => p.StartsWith("url"))?.Substring(4); var url = image.Url; if (string.IsNullOrWhiteSpace(url)) { MessageManager.SendTextMessage(MessageSourceType.Group, "上传失败惹", fromQQ, toGroup); return; } using (var client = new HttpClient()) { var imgRes = await client.GetAsync(url); var imgItem = System.Drawing.Image.FromStream(await imgRes.Content.ReadAsStreamAsync()); var savedPath = Path.Combine(Config.ShaDiaoImagePath, Guid.NewGuid().ToString() + ".png"); if (!Directory.Exists(Config.ShaDiaoImagePath)) { Directory.CreateDirectory(Config.ShaDiaoImagePath); } imgItem.Save(savedPath); } MessageManager.SendTextMessage(MessageSourceType.Group, "上传成功", fromQQ, toGroup); if (!_lastTime.ContainsKey(fromQQ)) { _lastTime.Add(fromQQ, DateTime.Today); } else { _lastTime[fromQQ] = DateTime.Today; } } else if (command[0].Equals("shadiaotu", StringComparison.CurrentCultureIgnoreCase)) { var dir = Path.Combine(Config.DataPath, "沙雕图"); if (!Directory.Exists(dir)) { return; } var files = Directory.GetFiles(dir); if (!files.Any()) { return; } var fileName = files[_rand.Next(0, files.Length)]; MessageManager.SendImageMessage(sourceType, fileName, fromQQ, toGroup); } }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { await Task.Yield(); var name = ""; if (sourceType == MessageSourceType.Group) { if (member == null) { _logger.Debug("Jrrp group member is null"); return; } if (_disabledJrrpGroupNumbers.Contains(member.GroupNumber)) { return; } name = member.GroupName; } else if (sourceType == MessageSourceType.Private || sourceType == MessageSourceType.Friend) { if (qq == null) { _logger.Debug("Jrrp qq is null"); return; } name = qq.Name; } var isReroll = qq.ReRollStep == UserInfo.RerollStep.CanReroll; var rp = GetJrrp(qq, isReroll); switch (qq.ReRollStep) { case UserInfo.RerollStep.None: MessageManager.SendTextMessage(sourceType, name + "今天的人品值是:" + rp, qq: qq?.QQ, toGroupNo: member?.GroupNumber); return; case UserInfo.RerollStep.CanReroll: MessageManager.SendTextMessage(sourceType, name + "今天的人品不太好,确定要看的话就再来一次吧", qq: qq?.QQ, toGroupNo: member?.GroupNumber); return; case UserInfo.RerollStep.RerollFaild: if (rp == 1) { MessageManager.SendTextMessage(sourceType, $"……", qq: qq?.QQ, toGroupNo: member?.GroupNumber); } else { MessageManager.SendTextMessage(sourceType, name + $"今天的人品值只有:{rp}", qq: qq?.QQ, toGroupNo: member?.GroupNumber); } return; case UserInfo.RerollStep.RerollSuccess: MessageManager.SendTextMessage(sourceType, $"啊!对不起刚才是我失误了!{name}今天人品值应该是:{rp}", qq: qq?.QQ, toGroupNo: member?.GroupNumber); qq.ReRollStep = UserInfo.RerollStep.None; return; case UserInfo.RerollStep.RerollDevastated: if (rp == 1) { MessageManager.SendTextMessage(sourceType, $"……", qq: qq?.QQ, toGroupNo: member?.GroupNumber); } else { MessageManager.SendTextMessage(sourceType, $"都说了不想告诉你了嘛……{name}今天人品值只有:{rp}", qq: qq?.QQ, toGroupNo: member?.GroupNumber); } qq.ReRollStep = UserInfo.RerollStep.RerollFaild; return; } }
public override async System.Threading.Tasks.Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { var fromQQ = 0L; var toGroup = 0L; //var message = ""; if (sourceType != MessageSourceType.Group) { return; } var sourceMessageId = (originMessage?.FirstOrDefault() as SourceMessage)?.Id ?? default; var messages = new List <BaseMessage>(); messages.Add(new QuoteMessage(toGroup, fromQQ, sourceMessageId)); fromQQ = member.QQ; toGroup = member.GroupNumber; var permit = member.PermitType; if (originMessage.Count <= 2) { if (command[0].Equals("on", StringComparison.CurrentCultureIgnoreCase)) { if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限开启色图鉴定功能", fromQQ, toGroup); return; } UpdateGroupHentaiCheckConfig(toGroup, true); MessageManager.SendTextMessage(MessageSourceType.Group, "色图鉴定已开启", fromQQ, toGroup); return; } else if (command[0].Equals("off", StringComparison.CurrentCultureIgnoreCase)) { if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限关闭色图鉴定功能", fromQQ, toGroup); return; } UpdateGroupHentaiCheckConfig(toGroup, false); MessageManager.SendTextMessage(MessageSourceType.Group, "色图鉴定已关闭", fromQQ, toGroup); return; } else if (!GroupHentaiCheckConfig.TryGetValue(toGroup, out var config)) { MessageManager.SendTextMessage(MessageSourceType.Group, "当前群尚未色图鉴定功能", fromQQ, toGroup); return; } else { messages.Add(new TextMessage("图呢?")); MessageManager.SendMessage(sourceType, messages, fromQQ, toGroup); return; } } else { if (!(originMessage?.ElementAt(2) is ImageMessage im)) { messages.Add(new TextMessage("图呢?")); MessageManager.SendMessage(sourceType, messages, fromQQ, toGroup); return; } var imageUrl = im.Url; if (string.IsNullOrWhiteSpace(imageUrl)) { MessageManager.SendTextMessage(MessageSourceType.Group, "图片上传失败惹", fromQQ, toGroup); return; } var client = new RestClient(); client.Timeout = -1; var imageDownloadRequest = new RestRequest(imageUrl, Method.GET); var imgRes = await client.ExecuteAsync(imageDownloadRequest); if (!imgRes.IsSuccessful) { MessageManager.SendTextMessage(sourceType, "请求失败了QAQ", fromQQ, toGroup); return; } var savedPath = Path.Combine(Config.TempPath, Guid.NewGuid() + ".png"); var uploadRequest = new RestRequest("https://checkimage.querydata.org/api", Method.POST) { AlwaysMultipartFormData = true }; uploadRequest.AddFileBytes("image", imgRes.RawBytes, savedPath, contentType: imgRes.ContentType); var res = await client.ExecuteAsync(uploadRequest); if (!res.IsSuccessful) { MessageManager.SendTextMessage(sourceType, "请求失败了QAQ", fromQQ, toGroup); return; } var strContent = res.Content; var jsonRes = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(strContent, new List <HentaiCheckModel>()); if (jsonRes == null || !jsonRes.Any()) { MessageManager.SendTextMessage(sourceType, "请求失败了QAQ", fromQQ, toGroup); return; } var messageText = "没鉴定出来><"; var result = jsonRes.OrderByDescending(p => p.Probability).FirstOrDefault(); switch (result?.ClassName) { case "Drawing": case "Neutral": messageText = "这不是挺健全的嘛"; break; case "Hentai": messageText = "色疯辣!"; break; case "Sexy": messageText = "我超,太烧啦!"; break; case "P**n": messageText = "你完了,我这就叫狗管理来抓你"; break; } messages.Add(new TextMessage(messageText)); MessageManager.SendMessage(sourceType, messages, fromQQ, toGroup); } }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { await Task.Yield(); if (member == null) { return; } var newNickName = (originMessage.ElementAt(1) is TextMessage tm) && tm.Text?.Length > 3 ? tm.Text?.Substring(4) : null; string message = null; if (string.IsNullOrWhiteSpace(newNickName)) { DelNickName(member, ref message); } else { SetNickName(member, newNickName, ref message); } MessageManager.SendTextMessage(sourceType, message, member.QQ, member.GroupNumber); }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { await Task.Yield(); MessageManager.SendTextMessage(sourceType, "略略略😝", qq: qq?.QQ, toGroupNo: member?.GroupNumber); return; }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { await Task.Yield(); var fromQQ = 0L; var toGroup = 0L; //var message = ""; if (sourceType != MessageSourceType.Group) { return; } fromQQ = member.QQ; toGroup = member.GroupNumber; var permit = member.PermitType; if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限封禁用户", fromQQ, toGroup); return; } if (!command.Any()) { return; } if (!long.TryParse(command[0], out var banQQ)) { return; } if (command.Count > 1 && long.TryParse(command[1], out var banGroup)) { if (GroupBan.ContainsKey((banGroup, banQQ))) { UpdateGroupQQBan(banGroup, banQQ, false); MessageManager.SendTextMessage(MessageSourceType.Group, $"用户{banQQ}在群{banGroup}的封禁已被解除", fromQQ, toGroup); return; } else { UpdateGroupQQBan(banGroup, banQQ, true); MessageManager.SendTextMessage(MessageSourceType.Group, $"用户{banQQ}在群{banGroup}已被封禁", fromQQ, toGroup); return; } }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { await Task.Yield(); var fromQQ = 0L; var toGroup = 0L; //var message = ""; if (sourceType != MessageSourceType.Group) { return; } fromQQ = member.QQ; toGroup = member.GroupNumber; var permit = member.PermitType; if (!command.Any()) { if (!GroupBakiConfig.TryGetValue(toGroup, out var config)) { MessageManager.SendTextMessage(MessageSourceType.Group, "当前群尚未开启热狗图功能", fromQQ, toGroup); } else { MessageManager.SendTextMessage(MessageSourceType.Group, $"当前热狗人纯度:{config.Percent}%", fromQQ, toGroup); } return; } if (command[0].Equals("on", StringComparison.CurrentCultureIgnoreCase)) { if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限开启热狗图功能", fromQQ, toGroup); return; } BakiConfig config; if (command.Count == 1) { config = new BakiConfig(); } else { if (int.TryParse(command[1], out var percent)) { config = new BakiConfig { Percent = percent > 100 ? 100 : percent }; } else { config = new BakiConfig(); } } UpdateGroupBakiConfig(toGroup, config); MessageManager.SendTextMessage(MessageSourceType.Group, $"随机热狗图已开启,提升纯度概率:{config.Percent}%", fromQQ, toGroup); } else if (command[0].Equals("off", StringComparison.CurrentCultureIgnoreCase)) { if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限关闭热狗图功能", fromQQ, toGroup); return; } UpdateGroupBakiConfig(toGroup, null); MessageManager.SendTextMessage(MessageSourceType.Group, "随机热狗图已关闭", fromQQ, toGroup); } else if (command[0].Equals("baki", StringComparison.CurrentCultureIgnoreCase)) { var dir = Path.Combine(Config.DataPath, "Baki"); if (!Directory.Exists(dir)) { return; } var files = Directory.GetFiles(dir); if (!files.Any()) { return; } var fileName = files[_rand.Next(0, files.Length)]; MessageManager.SendImageMessage(sourceType, fileName, fromQQ, toGroup); } }
public abstract Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member);
public override async System.Threading.Tasks.Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { var fromQQ = 0L; var toGroup = 0L; //var message = ""; if (sourceType != MessageSourceType.Group) { return; } fromQQ = member.QQ; toGroup = member.GroupNumber; var permit = member.PermitType; if (!command.Any()) { if (!GroupTodayHistoryConfig.TryGetValue(toGroup, out var config)) { MessageManager.SendTextMessage(MessageSourceType.Group, "当前群尚未开启历史上的今天功能", fromQQ, toGroup); return; } } else { if (command[0].Equals("on", StringComparison.CurrentCultureIgnoreCase)) { if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限开启历史上的今天功能", fromQQ, toGroup); return; } UpdateGroupTodayHistoryConfig(toGroup, true); MessageManager.SendTextMessage(MessageSourceType.Group, "历史上的今天功能已开启", fromQQ, toGroup); return; } else if (command[0].Equals("off", StringComparison.CurrentCultureIgnoreCase)) { if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限关闭历史上的今天功能", fromQQ, toGroup); return; } UpdateGroupTodayHistoryConfig(toGroup, false); MessageManager.SendTextMessage(MessageSourceType.Group, "历史上的今天已关闭", fromQQ, toGroup); return; } } using (var client = new HttpClient()) { var url = "https://news.topurl.cn/api"; var res = await client.GetAsync(url); if (!res.IsSuccessStatusCode) { MessageManager.SendTextMessage(sourceType, "请求失败了QAQ", fromQQ, toGroup); return; } var strContent = await res.Content.ReadAsStringAsync(); var jsonRes = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(strContent, new { data = new { historyList = new List <TodayHistoryModel>() } }); if (!(jsonRes?.data?.historyList?.Any() ?? false)) { MessageManager.SendTextMessage(sourceType, "没找到数据捏", fromQQ, toGroup); return; } var news = jsonRes.data.historyList.Take(4).ToList(); var message = new List <string>(); news.ForEach(n => { message.Add($"{n.Event}"); }); MessageManager.SendTextMessage(sourceType, string.Join("\n", message), fromQQ, toGroup); } }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group groupNo, GroupMember member) { await Task.Yield(); throw new NotImplementedException(); }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { var sourceMessageId = (originMessage?.FirstOrDefault() as SourceMessage)?.Id ?? default; var messages = new List <BaseMessage>(); messages.Add(new QuoteMessage(member?.GroupNumber, qq?.QQ, sourceMessageId)); await Task.Yield(); if (command.Count < 1) { messages.Add(new TextMessage("不提问怎么帮你选0 0?")); MessageManager.SendMessage(sourceType, messages, qq?.QQ, member?.GroupNumber); return; } if (command.Count < 2) { messages.Add(new TextMessage("快把你打算的选择告诉我")); MessageManager.SendMessage(sourceType, messages, qq?.QQ, member?.GroupNumber); return; } var quest = command.First(); command.RemoveAt(0); var ansStr = string.Join(" ", command); var ans = ansStr.Split('|').ToList(); var res = Ask(ans); var message = $"关于[{quest}]:\n" + string.Join("\n", res.Select(p => $"{p.Quest}:{p.Percent}%")) + "\n" + $"小夜觉得{string.Join("、", GetMax(res).Select(p => p.Quest))}比较好"; messages.Add(new TextMessage(message)); MessageManager.SendMessage(sourceType, messages, qq?.QQ, member?.GroupNumber); }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { await Task.Yield(); var fromQQ = 0L; var toGroup = 0L; //var message = ""; if (sourceType != MessageSourceType.Group) { return; } fromQQ = member.QQ; toGroup = member.GroupNumber; var permit = member.PermitType; if (!command.Any()) { if (!GroupRepeatConfig.TryGetValue(toGroup, out var config)) { MessageManager.SendTextMessage(MessageSourceType.Group, "当前群尚未开启复读功能", fromQQ, toGroup); } else { MessageManager.SendTextMessage(MessageSourceType.Group, $"当前复读概率:{config.Percent}%", fromQQ, toGroup); } return; } if (command[0].Equals("on", StringComparison.CurrentCultureIgnoreCase)) { if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限开启复读功能", fromQQ, toGroup); return; } RepeatConfig config; if (command.Count == 1) { config = new RepeatConfig(); } else { if (int.TryParse(command[1], out var percent)) { config = new RepeatConfig { Percent = percent > 100 ? 100 : percent }; } else { config = new RepeatConfig(); } } UpdateGroupRepeatConfig(toGroup, config); MessageManager.SendTextMessage(MessageSourceType.Group, $"复读已开启,复读概率:{config.Percent}%", fromQQ, toGroup); } else if (command[0].Equals("off", StringComparison.CurrentCultureIgnoreCase)) { if (permit == PermitType.None) { MessageManager.SendTextMessage(MessageSourceType.Group, "只有群主或管理员才有权限关闭复读功能", fromQQ, toGroup); return; } UpdateGroupRepeatConfig(toGroup, null); MessageManager.SendTextMessage(MessageSourceType.Group, "复读已关闭", fromQQ, toGroup); } else if (command[0].Equals("repeat", StringComparison.CurrentCultureIgnoreCase) && command.Count > 1) { MessageManager.SendMessage(MessageSourceType.Group, originMessage, fromQQ, toGroup); } }
public override async Task ExecuteAsync(List <string> command, List <BaseMessage> originMessage, MessageSourceType sourceType, UserInfo qq, Group group, GroupMember member) { await Task.Yield(); if (sourceType != MessageSourceType.Private && sourceType != MessageSourceType.Friend) { return; } if (qq == null || qq.QQ != DataManager.Instance.AdminQQ) { return; } var firstCommand = command.FirstOrDefault(); if (firstCommand == null) { return; } switch (firstCommand.ToLower()) { case "say": { command.RemoveAt(0); if (command.Count < 2) { return; } var groupNumber = 0L; if (!long.TryParse(command.First(), out groupNumber)) { return; } command.RemoveAt(0); var message = string.Join(" ", command); MessageManager.SendTextMessage(MessageSourceType.Group, message, qq?.QQ, groupNumber); return; } case "rename": command.RemoveAt(0); if (command.Count < 1) { return; } var name = command[0]; DataManager.Instance.BotName = name; MessageManager.SendTextMessage(MessageSourceType.Friend, "改名成功", qq?.QQ); return; case "save": DataManager.Save(); MessageManager.SendTextMessage(MessageSourceType.Friend, "保存成功", qq?.QQ); return; } }