Skip to content

Commit

Permalink
fix(qqstatplugin): #日历 目标个人QQ号
Browse files Browse the repository at this point in the history
  • Loading branch information
yiyungent committed Apr 17, 2022
1 parent 78af9b2 commit e9cf3a1
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 22 deletions.
52 changes: 34 additions & 18 deletions plugins/QQStatPlugin/Controllers/CalendarController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,10 @@ public async Task<ActionResult> Get([FromQuery] string memeberUin = "", [FromQue
}

[HttpGet]
public async Task<BaseResponseModel> EChartsOption(string memeberUin = "", string groupUin = "")
public async Task<BaseResponseModel> EChartsOption([FromQuery] string memeberUin = "", [FromQuery] string groupUin = "")
{
Console.WriteLine($"{nameof(CalendarController)}.{nameof(EChartsOption)} {nameof(memeberUin)}:{memeberUin} {nameof(groupUin)}:{groupUin}");

BaseResponseModel responseModel = new BaseResponseModel();

// 1:00 + 1 = 2:00
Expand Down Expand Up @@ -84,35 +86,49 @@ public async Task<BaseResponseModel> EChartsOption(string memeberUin = "", strin
var messageList = DbContext.QueryAllMessage();

Dictionary<string, int> keyValuePairs = new Dictionary<string, int>();
foreach (var item in messageList)
if (!string.IsNullOrEmpty(memeberUin) && uint.TryParse(memeberUin, out uint mUin))
{
if (!string.IsNullOrEmpty(memeberUin) && uint.TryParse(memeberUin, out uint mUin))
// 个人
foreach (var item in messageList)
{
// 某人
if (keyValuePairs.ContainsKey(item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd")))
if (item.QQUin == memeberUin)
{
keyValuePairs[item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd")] += 1;
}
else
{
keyValuePairs.Add(item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd"), 1);
if (keyValuePairs.ContainsKey(item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd")))
{
keyValuePairs[item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd")] += 1;
}
else
{
keyValuePairs.Add(item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd"), 1);
}
}
}
else if (!string.IsNullOrEmpty(groupUin) && uint.TryParse(groupUin, out uint gUin))
}
else if (!string.IsNullOrEmpty(groupUin) && uint.TryParse(groupUin, out uint gUin))
{
// 群
foreach (var item in messageList)
{
// 某群
if (keyValuePairs.ContainsKey(item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd")))
if (item.GroupUin == groupUin)
{
keyValuePairs[item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd")] += 1;
}
else
{
keyValuePairs.Add(item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd"), 1);
if (keyValuePairs.ContainsKey(item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd")))
{
keyValuePairs[item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd")] += 1;
}
else
{
keyValuePairs.Add(item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd"), 1);
}
}
}
else
}
else
{
// 全部
foreach (var item in messageList)
{
// 全部
if (keyValuePairs.ContainsKey(item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd")))
{
keyValuePairs[item.CreateTime.ToDateTime13().ToString("yyyy-MM-dd")] += 1;
Expand Down
16 changes: 14 additions & 2 deletions plugins/QQStatPlugin/QQStatPlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,19 @@ public void OnGroupMessage((Bot s, GroupMessageEvent e) obj, string message, str
Controllers.CalendarController.CreateTime = DateTime.Now;

// 下方获取当前群聊
string imageUrl = $"{settingsModel.ScreenshotUrl}{settingsModel.BaseUrl}/Plugins/QQStatPlugin/Calendar?groupUin={groupUin.ToString()}";
string urlParam = $"{settingsModel.BaseUrl}/Plugins/QQStatPlugin/Calendar?groupUin={groupUin.ToString()}";
string targetMemberUinStr = message.Replace("#日历", "")?.Trim();
if (uint.TryParse(targetMemberUinStr, out uint targetMemberUin))
{
// 仅此人 日历
urlParam += $"&memeberUin={targetMemberUin}";
}
// 注意: url 编码, 这样才能正确传参
urlParam = System.Web.HttpUtility.UrlEncode(urlParam, System.Text.Encoding.UTF8);
// 加个time 防止缓存
// ScreenshotUrl: xxx.com?url=
string imageUrl = $"{settingsModel.ScreenshotUrl}{urlParam}&time={DateTime.Now.ToTimeStamp13()}";

Console.WriteLine(imageUrl);
try
{
Expand All @@ -94,7 +106,7 @@ public void OnGroupMessage((Bot s, GroupMessageEvent e) obj, string message, str
catch (Exception ex)
{
obj.s.SendGroupMessage(groupUin, "发送 日历 图片失败");
obj.s.SendGroupMessage(groupUin, imageUrl);
//obj.s.SendGroupMessage(groupUin, imageUrl);

Console.WriteLine("发送 日历 图片失败");
Console.WriteLine(ex.ToString());
Expand Down
4 changes: 3 additions & 1 deletion plugins/QQStatPlugin/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@

> 需要设置 `BaseUrl`, `ScreenshotUrl`, `ScreenshotUrl` 保持默认即可
> `AdminGroups` 群范围内, 群管理员/群主 发送 `#日历` , 获取本群 日历图, 若发送失败, 则发送图片链接, 图片链接在一个小时后失效
> `AdminGroups` 群范围内, 群管理员/群主 发送 `#日历` , 获取本群 日历图
或者发送 `#日历 目标个人QQ号`, 获取此人 在机器人收集的 **所有群聊** 数据形成的日历, 不限本群


## 其它
Expand Down
1 change: 0 additions & 1 deletion plugins/QQStatPlugin/wwwroot/calendar.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
method: "get",
url: "/api/Plugins/QQStatPlugin/Calendar/EChartsOption",
params: {
token: "{{token}}",
memeberUin: "{{memeberUin}}",
groupUin: "{{groupUin}}"
},
Expand Down

0 comments on commit e9cf3a1

Please sign in to comment.