From 0aaaa86c24115037414ae49c7ea74c4421be7977 Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Sun, 20 Mar 2022 19:36:24 +0800
Subject: [PATCH 01/84] update func sig
---
src/plugins/nonebot_bison/post.py | 23 ++++++++++++-----------
src/plugins/nonebot_bison/send.py | 4 +++-
tests/test_send.py | 19 +++++++++----------
3 files changed, 24 insertions(+), 22 deletions(-)
diff --git a/src/plugins/nonebot_bison/post.py b/src/plugins/nonebot_bison/post.py
index d7c1cad..ceca521 100644
--- a/src/plugins/nonebot_bison/post.py
+++ b/src/plugins/nonebot_bison/post.py
@@ -24,7 +24,7 @@ class Post:
pics: list[Union[str, bytes]] = field(default_factory=list)
extra_msg: list[Message] = field(default_factory=list)
- _message: Optional[list] = None
+ _message: Optional[list[Message]] = None
def _use_pic(self):
if not self.override_use_pic is None:
@@ -107,10 +107,10 @@ class Post:
self.pics = self.pics[matrix[0] * matrix[1] :]
self.pics.insert(0, target_io.getvalue())
- async def generate_messages(self):
+ async def generate_messages(self) -> list[Message]:
if self._message is None:
await self._pic_merge()
- msgs = []
+ msg_segments: list[MessageSegment] = []
text = ""
if self.text:
if self._use_pic():
@@ -123,20 +123,21 @@ class Post:
if self.target_name:
text += " {}".format(self.target_name)
if self._use_pic():
- msgs.append(await parse_text(text))
+ msg_segments.append(await parse_text(text))
if not self.target_type == "rss" and self.url:
- msgs.append(MessageSegment.text(self.url))
+ msg_segments.append(MessageSegment.text(self.url))
else:
if self.url:
text += " \n详情: {}".format(self.url)
- msgs.append(MessageSegment.text(text))
+ msg_segments.append(MessageSegment.text(text))
for pic in self.pics:
- # if isinstance(pic, bytes):
- # pic = 'base64://' + base64.b64encode(pic).decode()
- # msgs.append(Message("[CQ:image,file={url}]".format(url=pic)))
- msgs.append(MessageSegment.image(pic))
+ msg_segments.append(MessageSegment.image(pic))
if self.compress:
- msgs = [reduce(lambda x, y: x.append(y), msgs, Message())]
+ msgs = [reduce(lambda x, y: x.append(y), msg_segments, Message())]
+ else:
+ msgs = list(
+ map(lambda msg_segment: Message([msg_segment]), msg_segments)
+ )
msgs.extend(self.extra_msg)
self._message = msgs
assert len(self._message) > 0, f"message list empty, {self}"
diff --git a/src/plugins/nonebot_bison/send.py b/src/plugins/nonebot_bison/send.py
index 31f31f0..b744926 100644
--- a/src/plugins/nonebot_bison/send.py
+++ b/src/plugins/nonebot_bison/send.py
@@ -64,7 +64,9 @@ async def _send_msgs_dispatch(
await _do_send(bot, user, user_type, msg)
-async def send_msgs(bot: Bot, user, user_type: Literal["private", "group"], msgs: list):
+async def send_msgs(
+ bot: Bot, user, user_type: Literal["private", "group"], msgs: list[Message]
+):
if not plugin_config.bison_use_pic_merge or user_type == "private":
for msg in msgs:
await _send_msgs_dispatch(bot, user, user_type, msg)
diff --git a/tests/test_send.py b/tests/test_send.py
index dd2c089..20f5b98 100644
--- a/tests/test_send.py
+++ b/tests/test_send.py
@@ -1,13 +1,11 @@
-import asyncio
-
import pytest
from nonebug import App
@pytest.mark.asyncio
async def test_send_no_queue(app: App):
- import nonebot
from nonebot.adapters.onebot.v11.bot import Bot
+ from nonebot.adapters.onebot.v11.message import Message
from nonebot_bison.plugin_config import plugin_config
from nonebot_bison.send import send_msgs
@@ -16,16 +14,16 @@ async def test_send_no_queue(app: App):
bot = ctx.create_bot(base=Bot)
assert isinstance(bot, Bot)
ctx.should_call_api(
- "send_group_msg", {"group_id": "1233", "message": "msg1"}, True
+ "send_group_msg", {"group_id": "1233", "message": Message("msg1")}, True
)
ctx.should_call_api(
- "send_group_msg", {"group_id": "1233", "message": "msg2"}, True
+ "send_group_msg", {"group_id": "1233", "message": Message("msg2")}, True
)
ctx.should_call_api(
- "send_private_msg", {"user_id": "666", "message": "priv"}, True
+ "send_private_msg", {"user_id": "666", "message": Message("priv")}, True
)
- await send_msgs(bot, "1233", "group", ["msg1", "msg2"])
- await send_msgs(bot, "666", "private", ["priv"])
+ await send_msgs(bot, "1233", "group", [Message("msg1"), Message("msg2")])
+ await send_msgs(bot, "666", "private", [Message("priv")])
assert ctx.wait_list.empty()
@@ -33,9 +31,10 @@ async def test_send_no_queue(app: App):
async def test_send_queue(app: App):
import nonebot
from nonebot.adapters.onebot.v11.bot import Bot
+ from nonebot.adapters.onebot.v11.message import Message
from nonebot_bison import send
from nonebot_bison.plugin_config import plugin_config
- from nonebot_bison.send import LAST_SEND_TIME, do_send_msgs, send_msgs
+ from nonebot_bison.send import do_send_msgs, send_msgs
async with app.test_api() as ctx:
new_bot = ctx.create_bot(base=Bot)
@@ -48,7 +47,7 @@ async def test_send_queue(app: App):
"send_group_msg", {"group_id": "1233", "message": "test msg"}, True
)
await bot.call_api("send_group_msg", group_id="1233", message="test msg")
- await send_msgs(bot, "1233", "group", ["msg"])
+ await send_msgs(bot, "1233", "group", [Message("msg")])
ctx.should_call_api(
"send_group_msg", {"group_id": "1233", "message": "msg"}, True
)
From 0a11499317eb1d6f3da103f0611c5f93f2ef34bc Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Sun, 20 Mar 2022 19:57:25 +0800
Subject: [PATCH 02/84] use legacy call method
---
src/plugins/nonebot_bison/send.py | 34 +++++++++++++++-------
tests/test_send.py | 48 ++++++++++++-------------------
2 files changed, 43 insertions(+), 39 deletions(-)
diff --git a/src/plugins/nonebot_bison/send.py b/src/plugins/nonebot_bison/send.py
index b744926..e157d40 100644
--- a/src/plugins/nonebot_bison/send.py
+++ b/src/plugins/nonebot_bison/send.py
@@ -80,14 +80,28 @@ async def send_msgs(
group_bot_info = await bot.get_group_member_info(
group_id=user, user_id=int(bot.self_id), no_cache=True
) # 调用api获取群内bot的相关参数
- forward_msg = Message(
- [
- MessageSegment.node_custom(
- group_bot_info["user_id"],
- nickname=group_bot_info["card"] or group_bot_info["nickname"],
- content=msg,
- )
- for msg in msgs
- ]
- )
+ # forward_msg = Message(
+ # [
+ # MessageSegment.node_custom(
+ # group_bot_info["user_id"],
+ # nickname=group_bot_info["card"] or group_bot_info["nickname"],
+ # content=msg,
+ # )
+ # for msg in msgs
+ # ]
+ # )
+ # FIXME: Because of https://github.com/nonebot/adapter-onebot/issues/9
+
+ forward_msg = [
+ {
+ "type": "node",
+ "data": {
+ "name": group_bot_info["card"] or group_bot_info["nickname"],
+ "uin": group_bot_info["user_id"],
+ "content": msg,
+ },
+ }
+ for msg in msgs
+ ]
+
await _send_msgs_dispatch(bot, user, "group-forward", forward_msg)
diff --git a/tests/test_send.py b/tests/test_send.py
index 20f5b98..14bd71e 100644
--- a/tests/test_send.py
+++ b/tests/test_send.py
@@ -1,4 +1,5 @@
import pytest
+from nonebot.adapters.onebot.v11.message import Message
from nonebug import App
@@ -58,6 +59,14 @@ async def test_send_queue(app: App):
assert ctx.wait_list.empty()
+def gen_node(id, name, content: Message):
+ return {"type": "node", "data": {"name": name, "uin": id, "content": content}}
+
+
+def _merge_messge(nodes):
+ return nodes
+
+
@pytest.mark.asyncio
async def test_send_merge_no_queue(app: App):
from nonebot.adapters.onebot.v11.bot import Bot
@@ -102,15 +111,8 @@ async def test_send_merge_no_queue(app: App):
{"group_id": 633, "user_id": 8888, "no_cache": True},
{"user_id": 8888, "card": "admin", "nickname": "adminuser"},
)
- merged_message = Message(
- [
- MessageSegment.node_custom(
- user_id=8888, nickname="admin", content=message[1]
- ),
- MessageSegment.node_custom(
- user_id=8888, nickname="admin", content=message[2]
- ),
- ]
+ merged_message = _merge_messge(
+ [gen_node(8888, "admin", message[1]), gen_node(8888, "admin", message[2])]
)
ctx.should_call_api(
"send_group_forward_msg",
@@ -135,17 +137,11 @@ async def test_send_merge_no_queue(app: App):
{"group_id": 633, "user_id": 8888, "no_cache": True},
{"user_id": 8888, "card": None, "nickname": "adminuser"},
)
- merged_message = Message(
+ merged_message = _merge_messge(
[
- MessageSegment.node_custom(
- user_id=8888, nickname="adminuser", content=message[1]
- ),
- MessageSegment.node_custom(
- user_id=8888, nickname="adminuser", content=message[2]
- ),
- MessageSegment.node_custom(
- user_id=8888, nickname="adminuser", content=message[3]
- ),
+ gen_node(8888, "adminuser", message[1]),
+ gen_node(8888, "adminuser", message[2]),
+ gen_node(8888, "adminuser", message[3]),
]
)
ctx.should_call_api(
@@ -197,17 +193,11 @@ async def test_send_merge2_no_queue(app: App):
{"group_id": 633, "user_id": 8888, "no_cache": True},
{"user_id": 8888, "card": "admin", "nickname": "adminuser"},
)
- merged_message = Message(
+ merged_message = _merge_messge(
[
- MessageSegment.node_custom(
- user_id=8888, nickname="admin", content=message[0]
- ),
- MessageSegment.node_custom(
- user_id=8888, nickname="admin", content=message[1]
- ),
- MessageSegment.node_custom(
- user_id=8888, nickname="admin", content=message[2]
- ),
+ gen_node(8888, "admin", message[0]),
+ gen_node(8888, "admin", message[1]),
+ gen_node(8888, "admin", message[2]),
]
)
ctx.should_call_api(
From 42a4727c7e9729367aa6fad0a0b9327df72a8aa1 Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Mon, 21 Mar 2022 16:20:20 +0800
Subject: [PATCH 03/84] remove browser in ci
---
.circleci/main.yml | 6 +-
tests/platforms/static/arknights-detail-807 | 24 +++++
tests/platforms/static/arknights_list_-1.json | 91 +++++++++++++++++++
tests/platforms/test_arknights.py | 60 ++++++++++++
4 files changed, 178 insertions(+), 3 deletions(-)
create mode 100644 tests/platforms/static/arknights-detail-807
create mode 100644 tests/platforms/static/arknights_list_-1.json
diff --git a/.circleci/main.yml b/.circleci/main.yml
index 0e5e293..fa7e421 100644
--- a/.circleci/main.yml
+++ b/.circleci/main.yml
@@ -159,9 +159,9 @@ jobs:
# - run: sed -e '41,45d' -i pyproject.toml
- python/install-packages:
pkg-manager: poetry
- - run:
- name: Install browser
- command: poetry run playwright install-deps && poetry run playwright install chromium
+ # - run:
+ # name: Install browser
+ # command: poetry run playwright install-deps && poetry run playwright install chromium
- run:
name: Coverage test
command: poetry run pytest --cov-report html --cov-report xml --cov=./src/plugins/nonebot_bison --junitxml=test-results/junit.xml
diff --git a/tests/platforms/static/arknights-detail-807 b/tests/platforms/static/arknights-detail-807
new file mode 100644
index 0000000..5ae6e2e
--- /dev/null
+++ b/tests/platforms/static/arknights-detail-807
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+ 公告
+
+
+
+
+
+
diff --git a/tests/platforms/static/arknights_list_-1.json b/tests/platforms/static/arknights_list_-1.json
new file mode 100644
index 0000000..c149349
--- /dev/null
+++ b/tests/platforms/static/arknights_list_-1.json
@@ -0,0 +1,91 @@
+{
+ "focusAnnounceId": "816",
+ "announceList": [
+ {
+ "announceId": "809",
+ "title": "冰原信使系列\n新装限时上架",
+ "isWebUrl": true,
+ "webUrl": "https://ak.hycdn.cn/announce/IOS/announcement/809_1640060505.html",
+ "day": 21,
+ "month": 12,
+ "group": "ACTIVITY"
+ },
+ {
+ "announceId": "810",
+ "title": "寒武纪系列\n限时复刻上架",
+ "isWebUrl": true,
+ "webUrl": "https://ak.hycdn.cn/announce/IOS/announcement/810_1640060511.html",
+ "day": 21,
+ "month": 12,
+ "group": "ACTIVITY"
+ },
+ {
+ "announceId": "806",
+ "title": "跨年欢庆·回首\n限时寻访说明",
+ "isWebUrl": true,
+ "webUrl": "https://ak.hycdn.cn/announce/IOS/announcement/806_1639379808.html",
+ "day": 14,
+ "month": 12,
+ "group": "ACTIVITY"
+ },
+ {
+ "announceId": "802",
+ "title": "「制作组通讯」\n#15期",
+ "isWebUrl": true,
+ "webUrl": "https://ak.hycdn.cn/announce/IOS/announcement/802_1638871766.html",
+ "day": 8,
+ "month": 12,
+ "group": "SYSTEM"
+ },
+ {
+ "announceId": "97",
+ "title": "新人寻访特惠\n必得六星干员",
+ "isWebUrl": true,
+ "webUrl": "https://ak.hycdn.cn/announce/IOS/announcement/97_1606379786.html",
+ "day": 30,
+ "month": 4,
+ "group": "ACTIVITY"
+ },
+ {
+ "announceId": "95",
+ "title": "通关特定关卡\n赠送专属时装",
+ "isWebUrl": true,
+ "webUrl": "https://ak.hycdn.cn/announce/IOS/announcement/95_1606379781.html",
+ "day": 30,
+ "month": 4,
+ "group": "ACTIVITY"
+ },
+ {
+ "announceId": "192",
+ "title": "《明日方舟》\n公测开启说明",
+ "isWebUrl": true,
+ "webUrl": "https://ak.hycdn.cn/announce/IOS/announcement/192_1606379744.html",
+ "day": 30,
+ "month": 4,
+ "group": "SYSTEM"
+ },
+ {
+ "announceId": "98",
+ "title": "《明日方舟》\n公平运营申明",
+ "isWebUrl": true,
+ "webUrl": "https://ak.hycdn.cn/announce/IOS/announcement/98_1638970453.html",
+ "day": 30,
+ "month": 4,
+ "group": "SYSTEM"
+ },
+ {
+ "announceId": "94",
+ "title": "常驻活动介绍",
+ "isWebUrl": true,
+ "webUrl": "https://ak.hycdn.cn/announce/IOS/announcement/94_1606379757.html",
+ "day": 30,
+ "month": 4,
+ "group": "ACTIVITY"
+ }
+ ],
+ "extra": {
+ "enable": false,
+ "name": "额外活动"
+ }
+}
+
diff --git a/tests/platforms/test_arknights.py b/tests/platforms/test_arknights.py
index cd55501..7b3f386 100644
--- a/tests/platforms/test_arknights.py
+++ b/tests/platforms/test_arknights.py
@@ -18,6 +18,11 @@ def arknights_list_0():
return get_json("arknights_list_0.json")
+@pytest.fixture(scope="module")
+def arknights_list__1():
+ return get_json("arknights_list_-1.json")
+
+
@pytest.fixture(scope="module")
def arknights_list_1():
return get_json("arknights_list_1.json")
@@ -36,6 +41,61 @@ def monster_siren_list_1():
@pytest.mark.asyncio
@respx.mock
async def test_fetch_new(
+ arknights,
+ dummy_user_subinfo,
+ arknights_list_0,
+ arknights_list__1,
+ monster_siren_list_0,
+ monster_siren_list_1,
+):
+ ak_list_router = respx.get(
+ "https://ak-conf.hypergryph.com/config/prod/announce_meta/IOS/announcement.meta.json"
+ )
+ detail_router = respx.get(
+ "https://ak.hycdn.cn/announce/IOS/announcement/807_1640060583.html"
+ )
+ version_router = respx.get(
+ "https://ak-conf.hypergryph.com/config/prod/official/IOS/version"
+ )
+ preannouncement_router = respx.get(
+ "https://ak-conf.hypergryph.com/config/prod/announce_meta/IOS/preannouncement.meta.json"
+ )
+ monster_siren_router = respx.get("https://monster-siren.hypergryph.com/api/news")
+ ak_list_router.mock(return_value=Response(200, json=arknights_list__1))
+ detail_router.mock(
+ return_value=Response(200, text=get_file("arknights-detail-807"))
+ )
+ version_router.mock(
+ return_value=Response(200, json=get_json("arknights-version-0.json"))
+ )
+ preannouncement_router.mock(
+ return_value=Response(200, json=get_json("arknights-pre-0.json"))
+ )
+ monster_siren_router.mock(return_value=Response(200, json=monster_siren_list_0))
+ target = ""
+ res = await arknights.fetch_new_post(target, [dummy_user_subinfo])
+ assert ak_list_router.called
+ assert len(res) == 0
+ assert not detail_router.called
+ mock_data = arknights_list_0
+ ak_list_router.mock(return_value=Response(200, json=mock_data))
+ res3 = await arknights.fetch_new_post(target, [dummy_user_subinfo])
+ assert len(res3[0][1]) == 1
+ assert detail_router.called
+ post = res3[0][1][0]
+ assert post.target_type == "arknights"
+ assert post.text == ""
+ assert post.url == ""
+ assert post.target_name == "明日方舟游戏内公告"
+ assert len(post.pics) == 1
+ # assert(post.pics == ['https://ak-fs.hypergryph.com/announce/images/20210623/e6f49aeb9547a2278678368a43b95b07.jpg'])
+ print(res3[0][1])
+ r = await post.generate_messages()
+
+
+@pytest.mark.render
+@respx.mock
+async def test_send_with_render(
arknights,
dummy_user_subinfo,
arknights_list_0,
From ce866395231eb080816fc5dc485de0cd14eba3ee Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Mon, 21 Mar 2022 16:34:03 +0800
Subject: [PATCH 04/84] fix cut message bug
---
src/plugins/nonebot_bison/post.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/plugins/nonebot_bison/post.py b/src/plugins/nonebot_bison/post.py
index ceca521..39af55f 100644
--- a/src/plugins/nonebot_bison/post.py
+++ b/src/plugins/nonebot_bison/post.py
@@ -141,7 +141,7 @@ class Post:
msgs.extend(self.extra_msg)
self._message = msgs
assert len(self._message) > 0, f"message list empty, {self}"
- return self._message
+ return self._message.copy()
def __str__(self):
return "type: {}\nfrom: {}\ntext: {}\nurl: {}\npic: {}".format(
From 21186aa030b79d8fd5149e92271f38a3c28d4f33 Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Mon, 21 Mar 2022 16:34:32 +0800
Subject: [PATCH 05/84] Revert "fix cut message bug"
This reverts commit ce866395231eb080816fc5dc485de0cd14eba3ee.
---
src/plugins/nonebot_bison/post.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/plugins/nonebot_bison/post.py b/src/plugins/nonebot_bison/post.py
index 39af55f..ceca521 100644
--- a/src/plugins/nonebot_bison/post.py
+++ b/src/plugins/nonebot_bison/post.py
@@ -141,7 +141,7 @@ class Post:
msgs.extend(self.extra_msg)
self._message = msgs
assert len(self._message) > 0, f"message list empty, {self}"
- return self._message.copy()
+ return self._message
def __str__(self):
return "type: {}\nfrom: {}\ntext: {}\nurl: {}\npic: {}".format(
From 1fe04ddb994ab757405db846df682a06142d6284 Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Mon, 21 Mar 2022 16:39:17 +0800
Subject: [PATCH 06/84] fix bug
---
src/plugins/nonebot_bison/send.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/nonebot_bison/send.py b/src/plugins/nonebot_bison/send.py
index e157d40..4651ed2 100644
--- a/src/plugins/nonebot_bison/send.py
+++ b/src/plugins/nonebot_bison/send.py
@@ -71,6 +71,7 @@ async def send_msgs(
for msg in msgs:
await _send_msgs_dispatch(bot, user, user_type, msg)
return
+ msgs = msgs.copy()
if plugin_config.bison_use_pic_merge == 1:
await _send_msgs_dispatch(bot, user, "group", msgs.pop(0))
if msgs:
From a4b61277a19f54b25f66990f665a4af0a3dffba0 Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
<66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Mon, 21 Mar 2022 20:54:17 +0000
Subject: [PATCH 07/84] auto update by pre-commit hooks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
updates:
- [github.com/pre-commit/mirrors-prettier: v2.5.1 → v2.6.0](https://github.com/pre-commit/mirrors-prettier/compare/v2.5.1...v2.6.0)
---
.pre-commit-config.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 6796996..e0fa605 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -16,7 +16,7 @@ repos:
- id: black
- repo: https://github.com/pre-commit/mirrors-prettier
- rev: v2.5.1
+ rev: v2.6.0
hooks:
- id: prettier
types_or: [markdown, ts, tsx]
From 183f3191e837067279d5db75d229cf2fe40908ca Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Sun, 20 Mar 2022 11:20:23 +0800
Subject: [PATCH 08/84] update ci file
---
.circleci/main.yml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/.circleci/main.yml b/.circleci/main.yml
index fa7e421..5928a18 100644
--- a/.circleci/main.yml
+++ b/.circleci/main.yml
@@ -90,13 +90,13 @@ workflows:
filters:
tags:
ignore: /.*/
- tag: ${CIRCLE_BRANCH}
+ tag: ${CIRCLE_BRANCH//\//-}
cache_from: '$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:${CIRCLE_BRANCH}'
- docker/publish:
<<: *docker-push
dockerfile: docker/Dockerfile_with_frontend_sentry
name: "docker/publish-sentry"
- tag: sentry,${CIRCLE_TAG}-sentry
+ tag: sentry,${CIRCLE_TAG//\//-}-sentry
cache_from: '$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:sentry'
- docker/publish:
<<: *docker-push
@@ -107,7 +107,7 @@ workflows:
only: [main, dev]
tags:
ignore: /.*/
- tag: ${CIRCLE_BRANCH}-sentry
+ tag: ${CIRCLE_BRANCH//\//-}-sentry
cache_from: '$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:${CIRCLE_BRANCH}-sentry'
jobs:
From d3ef63bf37c0d90234a1f45336105c9855a29b70 Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Tue, 22 Mar 2022 20:42:25 +0800
Subject: [PATCH 09/84] move scheduler register place
---
src/plugins/nonebot_bison/scheduler.py | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/src/plugins/nonebot_bison/scheduler.py b/src/plugins/nonebot_bison/scheduler.py
index 8a1d638..307c0b5 100644
--- a/src/plugins/nonebot_bison/scheduler.py
+++ b/src/plugins/nonebot_bison/scheduler.py
@@ -17,6 +17,18 @@ scheduler = AsyncIOScheduler(timezone="Asia/Shanghai")
@get_driver().on_startup
async def _start():
+ for platform_name, platform in platform_manager.items():
+ if platform.schedule_type in ["cron", "interval", "date"]:
+ logger.info(
+ f"start scheduler for {platform_name} with {platform.schedule_type} {platform.schedule_kw}"
+ )
+ scheduler.add_job(
+ fetch_and_send,
+ platform.schedule_type,
+ **platform.schedule_kw,
+ args=(platform_name,),
+ )
+
scheduler.configure({"apscheduler.timezone": "Asia/Shanghai"})
scheduler.start()
@@ -65,19 +77,6 @@ async def fetch_and_send(target_type: str):
)
-for platform_name, platform in platform_manager.items():
- if platform.schedule_type in ["cron", "interval", "date"]:
- logger.info(
- f"start scheduler for {platform_name} with {platform.schedule_type} {platform.schedule_kw}"
- )
- scheduler.add_job(
- fetch_and_send,
- platform.schedule_type,
- **platform.schedule_kw,
- args=(platform_name,),
- )
-
-
class CustomLogHandler(LoguruHandler):
def filter(self, record: logging.LogRecord):
return record.msg != (
From 8931cf016fe7f1eef66e93bb47e255cf74662313 Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Thu, 24 Mar 2022 13:40:36 +0800
Subject: [PATCH 10/84] update docs
---
docs/usage/README.md | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/docs/usage/README.md b/docs/usage/README.md
index 24a8be0..5c51a1e 100644
--- a/docs/usage/README.md
+++ b/docs/usage/README.md
@@ -88,7 +88,7 @@ sidebar: auto
1. 安装 pip 包`nonebot-bison`
2. 在`bot.py`中导入插件`nonebot_bison`
-### 自动安装
+#### 使用 nb-cli 安装
使用`nb-cli`执行:`nb plugin install nonebot_bison`
@@ -111,6 +111,9 @@ sidebar: auto
默认`True`
- `BISON_OUTER_URL`: 从外部访问服务器的地址,默认为`http://localhost:8080/bison`,如果你的插件部署
在服务器上,建议配置为`http://<你的服务器ip>:8080/bison`
+ ::: warning
+ 如果需要从外网或者 Docker 容器外访问后台页面,请确保`HOST=0.0.0.0`
+ :::
- `BISON_FILTER_LOG`: 是否过滤来自`nonebot`的 warning 级以下的 log,如果你的 bot 只运行了这个插件可以考虑
开启,默认关
- `BISON_USE_QUEUE`: 是否用队列的方式发送消息,降低发送频率,默认开
@@ -167,9 +170,7 @@ sidebar: auto
#### 私聊机器人进行配置(需要 SUPERUER 权限)
-- 添加订阅:`管理-添加订阅`
-- 查询订阅:`管理-查询订阅`
-- 删除订阅:`管理-删除订阅`
+请私聊 bot`群管理`
### 所支持平台的 uid
From e4c8a5a065df4bc209f888d40011efec5cd65a2b Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
<66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Mon, 28 Mar 2022 18:19:08 +0000
Subject: [PATCH 11/84] auto update by pre-commit hooks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
updates:
- [github.com/pre-commit/mirrors-prettier: v2.6.0 → v2.6.1](https://github.com/pre-commit/mirrors-prettier/compare/v2.6.0...v2.6.1)
---
.pre-commit-config.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index e0fa605..5ee0120 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -16,7 +16,7 @@ repos:
- id: black
- repo: https://github.com/pre-commit/mirrors-prettier
- rev: v2.6.0
+ rev: v2.6.1
hooks:
- id: prettier
types_or: [markdown, ts, tsx]
From 858c4cad7f65e554999342560034d1c52f1ec721 Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Thu, 31 Mar 2022 12:24:41 +0800
Subject: [PATCH 12/84] =?UTF-8?q?-=20=E4=BD=BF=E7=94=A8=E4=BA=86=E6=96=B0?=
=?UTF-8?q?=E7=9A=84=E5=9C=A8=E7=A7=81=E8=81=8A=E4=B8=AD=E8=BF=9B=E8=A1=8C?=
=?UTF-8?q?=E7=BE=A4=E7=AE=A1=E7=90=86=E7=9A=84=E6=96=B9=E5=BC=8F=EF=BC=9A?=
=?UTF-8?q?=E4=BB=8E`=E7=AE=A1=E7=90=86-*`=E6=9B=BF=E6=8D=A2=E4=B8=BA`?=
=?UTF-8?q?=E7=BE=A4=E7=AE=A1=E7=90=86`=E5=91=BD=E4=BB=A4=20-=20=E9=BB=98?=
=?UTF-8?q?=E8=AE=A4=E5=85=B3=E9=97=AD=E8=87=AA=E5=8A=A8=E9=87=8D=E5=8F=91?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=20-=20=E6=B7=BB=E5=8A=A0=E4=BA=86=20[?=
=?UTF-8?q?=E6=8E=A8=E9=80=81=E6=B6=88=E6=81=AF=E5=90=88=E5=B9=B6=E8=BD=AC?=
=?UTF-8?q?=E5=8F=91=E5=8A=9F=E8=83=BD](https://nonebot-bison.vercel.app/u?=
=?UTF-8?q?sage/#%E9%85%8D%E7%BD%AE)=20-=20=E6=B7=BB=E5=8A=A0=E4=BA=86`?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=A2=E9=98=85`=E5=91=BD=E4=BB=A4?=
=?UTF-8?q?=E4=BA=8B=E4=BB=B6=E7=9A=84=E4=B8=AD=E9=80=94=E5=8F=96=E6=B6=88?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=20-=20=E4=BC=98=E5=8C=96=E4=BA=86`=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=E8=AE=A2=E9=98=85`=E5=91=BD=E4=BB=A4=E7=9A=84?=
=?UTF-8?q?=E8=81=8A=E5=A4=A9=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 16 ++++++++++++++++
pyproject.toml | 2 +-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 916d729..b9ed3db 100644
--- a/README.md
+++ b/README.md
@@ -28,8 +28,18 @@
支持的平台:
- 微博
+ - 图文
+ - 视频
+ - 纯文字
- Bilibili
+ - 视频
+ - 图文
+ - 专栏
+ - 转发
+ - 纯文字
- RSS
+ - 富文本转换为纯文本
+ - 提取出所有图片
- 明日方舟
- 塞壬唱片新闻
- 游戏内公告
@@ -37,6 +47,8 @@
- 网易云音乐
- 歌手发布新专辑
- 电台更新
+- FF14
+ - 游戏公告
## 功能
@@ -68,6 +80,10 @@ yarn && yarn build
`COMMAND_START=["/"]`则应发送`/添加订阅`
3. 微博漏订阅了
微博更新了新的风控措施,某些含有某些关键词的微博会获取不到。
+4. 无法使用后台管理页面
+ 1. 确认自己正确配置了 nonebot 的端口,如果在远程或容器外访问网页请确保`HOST=0.0.0.0`
+ 2. 确认自己的云服务器的防火墙配置正确
+ 3. 确认自己使用了正确的方法安装插件
## 参与开发
diff --git a/pyproject.toml b/pyproject.toml
index 1c9bf56..3bfb5d6 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "nonebot-bison"
-version = "0.5.0"
+version = "0.5.1"
description = "Subscribe message from social medias"
authors = ["felinae98 "]
license = "MIT"
From e7d5018481095c46d86be4d8c58c9650130d7320 Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Thu, 31 Mar 2022 12:44:51 +0800
Subject: [PATCH 13/84] update circleci
---
.circleci/main.yml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.circleci/main.yml b/.circleci/main.yml
index 5928a18..0505087 100644
--- a/.circleci/main.yml
+++ b/.circleci/main.yml
@@ -213,5 +213,6 @@ jobs:
name: Publish to Github Release
command: |
go install github.com/tcnksm/ghr@latest
- ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${CIRCLE_TAG} ./dist
+ ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} \
+ -delete ${CIRCLE_TAG} -n ${CIRCLE_TAG} -b $(git log --format=%B -n 1 $CIRCLE_SHA1) ./dist
From 60484979ce8fbbfe1f59769860bce6360c01a502 Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
<66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Mon, 4 Apr 2022 18:47:13 +0000
Subject: [PATCH 14/84] auto update by pre-commit hooks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
updates:
- [github.com/psf/black: 22.1.0 → 22.3.0](https://github.com/psf/black/compare/22.1.0...22.3.0)
- [github.com/pre-commit/mirrors-prettier: v2.6.1 → v2.6.2](https://github.com/pre-commit/mirrors-prettier/compare/v2.6.1...v2.6.2)
---
.pre-commit-config.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 5ee0120..f44d077 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -11,12 +11,12 @@ repos:
- id: isort
- repo: https://github.com/psf/black
- rev: 22.1.0
+ rev: 22.3.0
hooks:
- id: black
- repo: https://github.com/pre-commit/mirrors-prettier
- rev: v2.6.1
+ rev: v2.6.2
hooks:
- id: prettier
types_or: [markdown, ts, tsx]
From 6410b5c3ca1d2b20b16dd35d8a346b64e98ead53 Mon Sep 17 00:00:00 2001
From: Azide
Date: Tue, 12 Apr 2022 00:16:15 +0800
Subject: [PATCH 15/84] =?UTF-8?q?=E5=A2=9E=E6=B7=BB=E5=85=B3=E4=BA=8E?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=A2=E9=98=85=E5=91=BD=E4=BB=A4=E4=B8=AD?=
=?UTF-8?q?=E4=B8=AD=E6=AD=A2=E8=AE=A2=E9=98=85=E7=9A=84=E7=9B=B8=E5=85=B3?=
=?UTF-8?q?=E6=96=87=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/usage/README.md | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/docs/usage/README.md b/docs/usage/README.md
index 5c51a1e..4caefa8 100644
--- a/docs/usage/README.md
+++ b/docs/usage/README.md
@@ -152,25 +152,33 @@ sidebar: auto
所有命令都需要@bot 触发
- 添加订阅(仅管理员和群主和 SUPERUSER):`添加订阅`
+ ::: tip 关于中止订阅
+ 对于[**v0.5.1**](https://github.com/felinae98/nonebot-bison/releases/tag/v0.5.1)及以上的版本中,已经为`添加订阅`命令添加了中止订阅的功能。
+ 在添加订阅命令的~~几乎~~各个阶段,都可以向 Bot 发送`取消`消息来中止订阅过程(需要订阅发起者本人发送)
+ :::
- 查询订阅:`查询订阅`
- 删除订阅(仅管理员和群主和 SUPERUSER):`删除订阅`
#### 私聊机器人获取后台地址
`后台管理`,之后点击返回的链接
-如果你是 superuser,那么你可以管理所有群的订阅;如果你是 bot 所在的群的其中部分群的管理,
-你可以管理你管理的群里的订阅;如果你不是任意一个群的管理,那么 bot 将会报错。
+如果你是 superuser,那么你可以管理所有群的订阅;
+如果你是 bot 所在的群的其中部分群的管理,你可以管理你管理的群里的订阅;
+如果你不是任意一个群的管理,那么 bot 将会报错。
::: tip
可以和 bot 通过临时聊天触发
:::
::: warning
-网页的身份鉴别机制全部由 bot 返回的链接确定,所以这个链接并不能透露给别人。
+网页的身份鉴别机制全部由 bot 返回的链接确定,所以这个链接并不能透露给别人。
并且链接会过期,所以一段时间后需要重新私聊 bot 获取新的链接。
:::
#### 私聊机器人进行配置(需要 SUPERUER 权限)
请私聊 bot`群管理`
+::: tip 关于中止订阅
+与普通的[`添加订阅`](#在本群中进行配置)命令一样,在`群管理`命令中使用的`添加订阅`命令也可以使用`取消`来中止订阅过程
+:::
### 所支持平台的 uid
From 167d5771418ec8fd300ff80188ff7b1bbf45819f Mon Sep 17 00:00:00 2001
From: felinae98 <731499577@qq.com>
Date: Sat, 30 Apr 2022 00:46:52 +0800
Subject: [PATCH 16/84] fix #47, fix weibo fulltext
---
.pre-commit-config.yaml | 2 +-
CHANGELOG.md | 5 ++
.../nonebot_bison/platform/bilibili.py | 2 +-
src/plugins/nonebot_bison/platform/weibo.py | 2 +-
.../static/weibo_detail_4645748019299849 | 82 +++++++++----------
.../static/weibo_detail_4649031014551911 | 75 +++++++++--------
6 files changed, 85 insertions(+), 83 deletions(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index e0fa605..37f536e 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -11,7 +11,7 @@ repos:
- id: isort
- repo: https://github.com/psf/black
- rev: 22.1.0
+ rev: 22.3.0
hooks:
- id: black
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8f68581..5e835f2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -71,3 +71,8 @@
- 添加了 [推送消息合并转发功能](https://nonebot-bison.vercel.app/usage/#%E9%85%8D%E7%BD%AE)
- 添加了`添加订阅`命令事件的中途取消功能
- 优化了`添加订阅`命令的聊天处理逻辑
+
+## [0.5.2]
+
+- 修复了微博获取全文时接口失效的问题
+- 修复了 bilibili 空列表时的报错
diff --git a/src/plugins/nonebot_bison/platform/bilibili.py b/src/plugins/nonebot_bison/platform/bilibili.py
index 5ff3cc1..ad21a8a 100644
--- a/src/plugins/nonebot_bison/platform/bilibili.py
+++ b/src/plugins/nonebot_bison/platform/bilibili.py
@@ -47,7 +47,7 @@ class Bilibili(NewMessage):
)
res_dict = json.loads(res.text)
if res_dict["code"] == 0:
- return res_dict["data"]["cards"]
+ return res_dict["data"].get("cards")
else:
return []
diff --git a/src/plugins/nonebot_bison/platform/weibo.py b/src/plugins/nonebot_bison/platform/weibo.py
index 2e9f46b..bcd0995 100644
--- a/src/plugins/nonebot_bison/platform/weibo.py
+++ b/src/plugins/nonebot_bison/platform/weibo.py
@@ -130,7 +130,7 @@ class Weibo(NewMessage):
)
try:
full_json_text = re.search(
- r'"status": ([\s\S]+),\s+"hotScheme"', res.text
+ r'"status": ([\s\S]+),\s+"call"', res.text
).group(1)
info = json.loads(full_json_text)
except:
diff --git a/tests/platforms/static/weibo_detail_4645748019299849 b/tests/platforms/static/weibo_detail_4645748019299849
index ae3819d..f216ea8 100644
--- a/tests/platforms/static/weibo_detail_4645748019299849
+++ b/tests/platforms/static/weibo_detail_4645748019299849
@@ -15,7 +15,7 @@
-
+
@@ -30,15 +30,23 @@
-
+