Skip to content

Commit 2d1682b

Browse files
committed
✨ support Gewechat
resolve #90
1 parent 3ff2632 commit 2d1682b

File tree

9 files changed

+444
-15
lines changed

9 files changed

+444
-15
lines changed

pdm.lock

Lines changed: 136 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ dev = [
6262
"nonebot-adapter-telegram>=0.1.0b18",
6363
"nonebot-adapter-kritor>=0.3.2",
6464
"nonebot-adapter-tailchat>=0.1.0b12",
65+
"nonebot-adapter-gewechat==0.4.6",
66+
"nonebot-adapter-wxmp>=0.1.8",
6567
"nonebot-plugin-filehost>=1.1.1",
6668
"nonebot-plugin-send-anything-anywhere>=0.7.1",
6769
"pytest-sugar>=1.0.0",
@@ -70,7 +72,6 @@ dev = [
7072
"pyyaml>=6.0.1",
7173
"fix-future-annotations>=0.5.0",
7274
# "nonebot-adapter-heybox>=0.1.1; python_version >= \"3.11\"",
73-
# "nonebot-adapter-wxmp>=0.1.4; python_version >= \"3.10\"",
7475
]
7576
test = [
7677
"nonebug>=0.4.3",
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from nonebot_plugin_alconna.uniseg.loader import BaseLoader
2+
from nonebot_plugin_alconna.uniseg.constraint import SupportAdapter
3+
4+
5+
class Loader(BaseLoader):
6+
def get_adapter(self) -> SupportAdapter:
7+
return SupportAdapter.gewechat
8+
9+
def get_builder(self):
10+
from .builder import GeWeChatMessageBuilder
11+
12+
return GeWeChatMessageBuilder()
13+
14+
def get_exporter(self):
15+
from .exporter import GeWeChatMessageExporter
16+
17+
return GeWeChatMessageExporter()
18+
19+
def get_fetcher(self):
20+
from .target import GeWeChatTargetFetcher
21+
22+
return GeWeChatTargetFetcher()
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from nonebot.adapters.gewechat.message import MessageSegment # type: ignore
2+
3+
from nonebot_plugin_alconna.uniseg.constraint import SupportAdapter
4+
from nonebot_plugin_alconna.uniseg.builder import MessageBuilder, build
5+
from nonebot_plugin_alconna.uniseg.segment import At, Text, AtAll, Emoji, Hyper, Image
6+
7+
8+
class GeWeChatMessageBuilder(MessageBuilder):
9+
@classmethod
10+
def get_adapter(cls) -> SupportAdapter:
11+
return SupportAdapter.gewechat
12+
13+
@build("text")
14+
def text(self, seg: "MessageSegment"):
15+
return Text(seg.data["text"])
16+
17+
@build("at")
18+
def at(self, seg: "MessageSegment"):
19+
return At("user", seg.data["wxid"])
20+
21+
@build("at_all")
22+
def at_all(self, seg: "MessageSegment"):
23+
return AtAll()
24+
25+
@build("image")
26+
def image(self, seg: "MessageSegment"):
27+
return Image(url=seg.data["imgUrl"])
28+
29+
@build("emoji")
30+
def emoji(self, seg: "MessageSegment"):
31+
return Emoji(id=seg.data["emojiMd5"])
32+
33+
@build("xml")
34+
def xml(self, seg: "MessageSegment"):
35+
return Hyper("xml", seg.data["xml"])
36+
37+
# async def extract_reply(self, event: Event, bot: Bot):
38+
# from nonebot.adapters.gewechat.event import QuoteMessageEvent
39+
#
40+
# if isinstance(event, QuoteMessageEvent):
41+
# return Reply(event.original_message, origin=event) # type: ignore
42+
# return None

0 commit comments

Comments
 (0)