mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2026-05-13 20:38:39 +08:00
Merge branch 'main' into next
This commit is contained in:
+246
@@ -0,0 +1,246 @@
|
||||
{
|
||||
"data": {
|
||||
"cards": [
|
||||
{
|
||||
"desc": {
|
||||
"type": 2
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc": {
|
||||
"type": 1
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc": {
|
||||
"type": 8
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": "明日方舟"
|
||||
},
|
||||
{
|
||||
"topic_name": "风笛"
|
||||
},
|
||||
{
|
||||
"topic_name": "琴柳"
|
||||
},
|
||||
{
|
||||
"topic_name": "风暴瞭望"
|
||||
},
|
||||
{
|
||||
"topic_name": "轮换池"
|
||||
},
|
||||
{
|
||||
"topic_name": "打卡挑战"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc": {
|
||||
"type": 2
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc": {
|
||||
"type": 1
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": "明日方舟"
|
||||
},
|
||||
{
|
||||
"topic_name": "饼学大厦"
|
||||
},
|
||||
{
|
||||
"topic_name": "可露希尔的秘密档案"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc": {
|
||||
"type": 1
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": "罗德岛相簿"
|
||||
},
|
||||
{
|
||||
"topic_name": "可露希尔的秘密档案"
|
||||
},
|
||||
{
|
||||
"topic_name": "罗德岛闲逛部"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc": {
|
||||
"type": 8
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": "明日方舟"
|
||||
},
|
||||
{
|
||||
"topic_name": "轮换学"
|
||||
},
|
||||
{
|
||||
"topic_name": "常驻标准寻访"
|
||||
},
|
||||
{
|
||||
"topic_name": "轮换池"
|
||||
},
|
||||
{
|
||||
"topic_name": "打卡挑战"
|
||||
},
|
||||
{
|
||||
"topic_name": "舟游"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc": {
|
||||
"type": 2
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": "明日方舟"
|
||||
},
|
||||
{
|
||||
"topic_name": "饼学大厦"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc": {
|
||||
"type": 4
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc": {
|
||||
"type": 1
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": "明日方舟"
|
||||
},
|
||||
{
|
||||
"topic_name": "饼学大厦"
|
||||
},
|
||||
{
|
||||
"topic_name": "罗德岛相簿"
|
||||
},
|
||||
{
|
||||
"topic_name": "可露希尔的秘密档案"
|
||||
},
|
||||
{
|
||||
"topic_name": "罗德岛闲逛部"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc": {
|
||||
"type": 1
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": "明日方舟"
|
||||
},
|
||||
{
|
||||
"topic_name": "饼学大厦"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc": {
|
||||
"type": 1
|
||||
},
|
||||
"display": {
|
||||
"topic_info": {
|
||||
"topic_details": [
|
||||
{
|
||||
"topic_name": "明日方舟"
|
||||
},
|
||||
{
|
||||
"topic_name": "饼学大厦"
|
||||
},
|
||||
{
|
||||
"topic_name": "罗德岛相簿"
|
||||
},
|
||||
{
|
||||
"topic_name": "可露希尔的秘密档案"
|
||||
},
|
||||
{
|
||||
"topic_name": "罗德岛闲逛部"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
[
|
||||
{
|
||||
"case": {
|
||||
"post_tags": [
|
||||
"111",
|
||||
"222",
|
||||
"333",
|
||||
"444"
|
||||
],
|
||||
"subscribed_tags": [
|
||||
"222"
|
||||
],
|
||||
"banned_tags": [
|
||||
"555"
|
||||
]
|
||||
},
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"case": {
|
||||
"post_tags": [
|
||||
"111",
|
||||
"222",
|
||||
"333",
|
||||
"444"
|
||||
],
|
||||
"subscribed_tags": [],
|
||||
"banned_tags": [
|
||||
"555"
|
||||
]
|
||||
},
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"case": {
|
||||
"post_tags": [
|
||||
"111",
|
||||
"222",
|
||||
"333",
|
||||
"444"
|
||||
],
|
||||
"subscribed_tags": [],
|
||||
"banned_tags": [
|
||||
"444"
|
||||
]
|
||||
},
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"case": {
|
||||
"post_tags": [
|
||||
"111",
|
||||
"222",
|
||||
"333",
|
||||
"444"
|
||||
],
|
||||
"subscribed_tags": [
|
||||
"222"
|
||||
],
|
||||
"banned_tags": []
|
||||
},
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"case": {
|
||||
"post_tags": [
|
||||
"111",
|
||||
"222",
|
||||
"333",
|
||||
"444"
|
||||
],
|
||||
"subscribed_tags": [],
|
||||
"banned_tags": []
|
||||
},
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"case": {
|
||||
"post_tags": [
|
||||
"111",
|
||||
"222",
|
||||
"333",
|
||||
"444"
|
||||
],
|
||||
"subscribed_tags": ["111","555","666"],
|
||||
"banned_tags": []
|
||||
},
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"case": {
|
||||
"post_tags": [
|
||||
"111",
|
||||
"222",
|
||||
"333",
|
||||
"444"
|
||||
],
|
||||
"subscribed_tags": ["111","555"],
|
||||
"banned_tags": ["333"]
|
||||
},
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"case": {
|
||||
"post_tags": [
|
||||
"111",
|
||||
"222",
|
||||
"333",
|
||||
"444"
|
||||
],
|
||||
"subscribed_tags": ["111","333"],
|
||||
"banned_tags": ["111"]
|
||||
},
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"case": {
|
||||
"post_tags": [
|
||||
"111",
|
||||
"222",
|
||||
"333",
|
||||
"444"
|
||||
],
|
||||
"subscribed_tags": ["222"],
|
||||
"banned_tags": ["555","333"]
|
||||
},
|
||||
"result": true
|
||||
}
|
||||
]
|
||||
@@ -98,3 +98,33 @@ async def test_parse_target(bilibili: "Bilibili"):
|
||||
await bilibili.parse_target(
|
||||
"https://www.bilibili.com/video/BV1qP4y1g738?spm_id_from=333.999.0.0"
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def post_list():
|
||||
return get_json("bilibili_fake_dy_list.json")["data"]["cards"]
|
||||
|
||||
|
||||
# 测试新tag机制的平台推送情况
|
||||
@pytest.mark.asyncio
|
||||
async def test_filter_user_custom(bilibili, post_list):
|
||||
|
||||
only_banned_tags = ["~可露希尔的秘密档案"]
|
||||
res0 = await bilibili.filter_user_custom(post_list, [], only_banned_tags)
|
||||
assert len(res0) == 8
|
||||
|
||||
only_subscribed_tags = ["可露希尔的秘密档案"]
|
||||
res1 = await bilibili.filter_user_custom(post_list, [], only_subscribed_tags)
|
||||
assert len(res1) == 4
|
||||
|
||||
multi_subs_tags_1 = ["可露希尔的秘密档案", "罗德岛相簿"]
|
||||
res2 = await bilibili.filter_user_custom(post_list, [], multi_subs_tags_1)
|
||||
assert len(res2) == 4
|
||||
|
||||
multi_subs_tags_2 = ["罗德岛相簿", "风暴瞭望"]
|
||||
res3 = await bilibili.filter_user_custom(post_list, [], multi_subs_tags_2)
|
||||
assert len(res3) == 4
|
||||
|
||||
multi_subs_tags_3 = ["明日方舟", "~饼学大厦"]
|
||||
res4 = await bilibili.filter_user_custom(post_list, [], multi_subs_tags_3)
|
||||
assert len(res4) == 2
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
import pytest
|
||||
from nonebug.app import App
|
||||
|
||||
from .utils import get_json
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def test_cases():
|
||||
return get_json("tag_cases.json")
|
||||
|
||||
|
||||
# 测试正反tag的判断情况
|
||||
@pytest.mark.asyncio
|
||||
async def test_filter_user_custom_tag(app: App, test_cases):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
|
||||
bilibili = platform_manager["bilibili"]
|
||||
for case in test_cases:
|
||||
res = bilibili.is_banned_post(**case["case"])
|
||||
assert res == case["result"]
|
||||
|
||||
|
||||
# 测试正反tag的分离情况
|
||||
@pytest.mark.asyncio
|
||||
async def test_tag_separator(app: App):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
|
||||
bilibili = platform_manager["bilibili"]
|
||||
tags = ["~111", "222", "333", "~444", "555"]
|
||||
res = bilibili.tag_separator(tags)
|
||||
assert res[0] == ["222", "333", "555"]
|
||||
assert res[1] == ["111", "444"]
|
||||
@@ -1,3 +1,5 @@
|
||||
from email import message
|
||||
|
||||
import pytest
|
||||
import respx
|
||||
from httpx import Response
|
||||
@@ -151,12 +153,20 @@ async def test_add_with_target(app: App, init_scheduler):
|
||||
)
|
||||
ctx.receive_event(bot, event_5_ok)
|
||||
ctx.should_call_send(event_5_ok, Message(BotReply.add_reply_on_tags), True)
|
||||
event_6 = fake_group_message_event(
|
||||
event_6_more_info = fake_group_message_event(
|
||||
message=Message("详情"), sender=fake_admin_user
|
||||
)
|
||||
ctx.receive_event(bot, event_6_more_info)
|
||||
ctx.should_call_send(
|
||||
event_6_more_info, BotReply.add_reply_on_tags_need_more_info, True
|
||||
)
|
||||
ctx.should_rejected()
|
||||
event_6_ok = fake_group_message_event(
|
||||
message=Message("全部标签"), sender=fake_admin_user
|
||||
)
|
||||
ctx.receive_event(bot, event_6)
|
||||
ctx.receive_event(bot, event_6_ok)
|
||||
ctx.should_call_send(
|
||||
event_6, BotReply.add_reply_subscribe_success("明日方舟Arknights"), True
|
||||
event_6_ok, BotReply.add_reply_subscribe_success("明日方舟Arknights"), True
|
||||
)
|
||||
ctx.should_finished()
|
||||
subs = await config.list_subscribe(10000, "group")
|
||||
|
||||
+3
-2
@@ -99,7 +99,7 @@ class BotReply:
|
||||
|
||||
@staticmethod
|
||||
def add_reply_on_id_input_search():
|
||||
search_url = "https://nonebot-bison.vercel.app/usage/#%E6%89%80%E6%94%AF%E6%8C%81%E5%B9%B3%E5%8F%B0%E7%9A%84-uid"
|
||||
search_url = "https://nonebot-bison.netlify.app/usage/#%E6%89%80%E6%94%AF%E6%8C%81%E5%B9%B3%E5%8F%B0%E7%9A%84-uid"
|
||||
search_title = "Bison所支持的平台UID"
|
||||
search_content = "查询相关平台的uid格式或获取方式"
|
||||
search_image = "https://s3.bmp.ovh/imgs/2022/03/ab3cc45d83bd3dd3.jpg"
|
||||
@@ -144,5 +144,6 @@ class BotReply:
|
||||
add_reply_on_id_input_error = "id输入错误"
|
||||
add_reply_on_target_parse_input_error = "不能从你的输入中提取出id,请检查你输入的内容是否符合预期"
|
||||
add_reply_on_platform_input_error = "平台输入错误"
|
||||
add_reply_on_tags = '请输入要订阅的tag,订阅所有tag输入"全部标签"'
|
||||
add_reply_on_tags = '请输入要订阅/屏蔽的tag(不含#号)\n多个tag请使用空格隔开\n具体规则回复"详情"'
|
||||
add_reply_on_tags_need_more_info = '订阅tag直接输入tag内容\n订阅所有tag输入"全部标签"\n屏蔽tag请在tag名称前添加~号\n详见https://nonebot-bison.netlify.app/usage/#平台订阅标签-tag'
|
||||
add_reply_abort = "已中止订阅"
|
||||
|
||||
Reference in New Issue
Block a user