private async ValueTask <EventResult <BaseMsgQuickOperation> > Handler(BaseMessageEventArgs args, IOneBotApi api) { if (args.RawMessage.Equals(_globalService.BiliSetting.HotCos.Command, StringComparison.CurrentCultureIgnoreCase)) { var result = await BiliApi.GetCosHotAsync(); if (result.Any()) { _logger.LogDebug("{Command}数量:{Count}", _globalService.BiliSetting.HotCos.Command, result.Length); var cqCodes = new List <CQCode>(); var tasks = result.Select(url => Task.Run(async() => { try { cqCodes.Add(await CQHelper.Image(url, CQFileType.Base64)); } catch (Exception e) { _logger.LogWarning("[SendImage]下载图片失败:{Url}\r\nError: {Error}", e.ToString(), url); } })); await Task.WhenAll(tasks); return(1, cqCodes.ToArray()); } } return(null); }
private async ValueTask <EventResult <BaseMsgQuickOperation> > Handler(BaseMessageEventArgs args, IOneBotApi api) { long?groupId = null; long?userId = null; if (args is GroupMsgEventArgs groupArgs) { groupId = groupArgs.GroupId; } else { userId = args.UserId; } if (args.RawMessage.Equals(_globalService.YandeSetting.HotImg.Command, StringComparison.CurrentCultureIgnoreCase)) { var(data, rating) = await _yandeService.Value.GetHotImgAsync(_globalService.YandeSetting.HotImg.Rating); var replay = CQCode.CQImage("base64://" + Convert.ToBase64String(data)); return(1, replay); } foreach (var customTags in _globalService.YandeSetting.CustomTags) { if (args.RawMessage.Equals(customTags.Command, StringComparison.CurrentCultureIgnoreCase)) { var page = await _yandeService.Value.GetTagsPageAsync(customTags.Tag); for (var i = 0; i < customTags.Count; i++) { var _ = Task.Run(async() => { var(data, rating) = await _yandeService.Value.GetImageByTagsAsync(customTags.Tag, page, customTags.Rating); await api.SendMsg(userId, groupId, new[] { CQCode.CQImage("base64://" + Convert.ToBase64String(data)) }); }); } return(1); } } return(null); }
private void OnLogicMessagedRaised(object sender, BaseMessageEventArgs e) { ResultMessages.Document.Blocks.Add(new Paragraph(new Run(e.Message))); ResultMessages.ScrollToEnd(); }