Skip to content

Commit

Permalink
✨ platform and self_id for Target
Browse files Browse the repository at this point in the history
  • Loading branch information
RF-Tar-Railt committed Jan 1, 2024
1 parent 9ef4e14 commit 170fb20
Show file tree
Hide file tree
Showing 21 changed files with 333 additions and 91 deletions.
5 changes: 2 additions & 3 deletions example/bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@


async def _():
from nonebot_plugin_alconna import Target, UniMessage, get_bot
from nonebot_plugin_alconna import Target, UniMessage

bot = get_bot(adapter=ONEBOT_V12Adapter, rand=True)
await UniMessage.image(path="test.png").send(Target("123456789"), bot)
await Target("123456789", platform=ONEBOT_V12Adapter.get_name()).send(UniMessage.image(path="test.png"))


if __name__ == "__main__":
Expand Down
1 change: 1 addition & 0 deletions src/nonebot_plugin_alconna/matcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -857,6 +857,7 @@ def waiter(cls, parameterless: Iterable[Any] | None = None):
参数:
parameterless: 非参数类型依赖列表
"""

def wrapper(func: _DependentCallable[R]):
return Waiter(func, cls.HANDLER_PARAM_TYPES, parameterless)

Expand Down
15 changes: 11 additions & 4 deletions src/nonebot_plugin_alconna/uniseg/adapters/ding.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, Union

from nonebot.adapters import Bot, Event, Message

Expand All @@ -19,13 +19,20 @@ def get_message_type(self):
def get_adapter(cls) -> str:
return "Ding"

def get_target(self, event: Event) -> Target:
def get_target(self, event: Event, bot: Union[Bot, None] = None) -> Target:
from nonebot.adapters.ding.event import MessageEvent, ConversationType

if isinstance(event, MessageEvent):
if event.conversationType == ConversationType.private:
return Target(event.senderId, private=True)
return Target(event.conversationId)
return Target(
event.senderId,
private=True,
platform=self.get_adapter(),
self_id=bot.self_id if bot else None,
)
return Target(
event.conversationId, platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
raise NotImplementedError

def get_message_id(self, event: Event) -> str:
Expand Down
21 changes: 17 additions & 4 deletions src/nonebot_plugin_alconna/uniseg/adapters/discord.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,29 @@ def get_message_id(self, event: Event) -> str:
assert isinstance(event, MessageEvent)
return str(event.message_id)

def get_target(self, event: Event) -> Target:
def get_target(self, event: Event, bot: Union[Bot, None] = None) -> Target:
from nonebot.adapters.discord.api.model import Channel
from nonebot.adapters.discord.event import MessageEvent, GuildMessageCreateEvent

if isinstance(event, MessageEvent):
if isinstance(event, GuildMessageCreateEvent):
return Target(str(event.channel_id), str(event.guild_id), channel=True)
return Target(str(event.channel_id), channel=True)
return Target(
str(event.channel_id),
str(event.guild_id),
channel=True,
platform=self.get_adapter(),
self_id=bot.self_id if bot else None,
)
return Target(
str(event.channel_id),
channel=True,
platform=self.get_adapter(),
self_id=bot.self_id if bot else None,
)
elif isinstance(event, Channel):
return Target(str(event.id), channel=True)
return Target(
str(event.id), channel=True, platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
raise NotImplementedError

@export
Expand Down
19 changes: 16 additions & 3 deletions src/nonebot_plugin_alconna/uniseg/adapters/dodo.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,29 @@ def get_message_type(self):

return Message

def get_target(self, event: Event) -> Target:
def get_target(self, event: Event, bot: Union[Bot, None] = None) -> Target:
from nonebot.adapters.dodo.event import Event as DoDoEvent

assert isinstance(event, DoDoEvent)
channel_id = getattr(event, "channel_id", None)
island_id = getattr(event, "island_source_id", None)
if channel_id:
return Target(channel_id, island_id or "", True)
return Target(
channel_id,
island_id or "",
True,
platform=self.get_adapter(),
self_id=bot.self_id if bot else None,
)
else:
return Target(event.user_id, island_id or "", True, True)
return Target(
event.user_id,
island_id or "",
True,
True,
platform=self.get_adapter(),
self_id=bot.self_id if bot else None,
)

def get_message_id(self, event: Event) -> str:
from nonebot.adapters.dodo.event import MessageEvent
Expand Down
13 changes: 10 additions & 3 deletions src/nonebot_plugin_alconna/uniseg/adapters/feishu.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,20 @@ def get_message_id(self, event: Event) -> str:
assert isinstance(event, MessageEvent)
return str(event.message_id)

def get_target(self, event: Event) -> Target:
def get_target(self, event: Event, bot: Union[Bot, None] = None) -> Target:
from nonebot.adapters.feishu.event import GroupMessageEvent, PrivateMessageEvent

if isinstance(event, GroupMessageEvent):
return Target(event.event.message.chat_id)
return Target(
event.event.message.chat_id, platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
elif isinstance(event, PrivateMessageEvent):
return Target(event.get_user_id(), private=True)
return Target(
event.get_user_id(),
private=True,
platform=self.get_adapter(),
self_id=bot.self_id if bot else None,
)
raise NotImplementedError

@export
Expand Down
8 changes: 5 additions & 3 deletions src/nonebot_plugin_alconna/uniseg/adapters/kook.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,13 @@ def get_message_id(self, event: Event) -> str:
assert isinstance(event, MessageEvent)
return str(event.msg_id)

def get_target(self, event: Event) -> Target:
def get_target(self, event: Event, bot: Union[Bot, None] = None) -> Target:
if group_id := getattr(event, "group_id", None):
return Target(str(group_id))
return Target(str(group_id), platform=self.get_adapter(), self_id=bot.self_id if bot else None)
if user_id := getattr(event, "user_id", None):
return Target(str(user_id), private=True)
return Target(
str(user_id), private=True, platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
raise NotImplementedError

@export
Expand Down
50 changes: 39 additions & 11 deletions src/nonebot_plugin_alconna/uniseg/adapters/mirai.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def get_message_type(self):

return MessageChain

def get_target(self, event: Event) -> Target:
def get_target(self, event: Event, bot: Union[Bot, None] = None) -> Target:
from nonebot.adapters.mirai2.event import (
BotMuteEvent,
GroupMessage,
Expand All @@ -41,25 +41,53 @@ def get_target(self, event: Event) -> Target:
)

if isinstance(event, FriendMessage):
return Target(str(event.sender.id), private=True)
return Target(
str(event.sender.id),
private=True,
platform=self.get_adapter(),
self_id=bot.self_id if bot else None,
)
elif isinstance(event, GroupMessage):
return Target(str(event.sender.group.id))
return Target(
str(event.sender.group.id), platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
elif isinstance(event, (BotMuteEvent, BotUnmuteEvent)):
return Target(str(event.operator.group.id))
return Target(
str(event.operator.group.id),
platform=self.get_adapter(),
self_id=bot.self_id if bot else None,
)
elif isinstance(event, (MemberMuteEvent, MemberUnmuteEvent)):
return Target(str(event.member.group.id))
return Target(
str(event.member.group.id), platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
elif isinstance(event, (BotJoinGroupEvent, BotLeaveEventActive, BotLeaveEventKick)):
return Target(str(event.group.id))
return Target(
str(event.group.id), platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
elif isinstance(event, (MemberJoinEvent, MemberLeaveEventKick, MemberLeaveEventQuit)):
return Target(str(event.member.group.id))
return Target(
str(event.member.group.id), platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
elif isinstance(event, MemberStateChangeEvent):
return Target(str(event.member.group.id))
return Target(
str(event.member.group.id), platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
elif isinstance(event, GroupStateChangeEvent):
return Target(str(event.group.id))
return Target(
str(event.group.id), platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
elif isinstance(event, FriendRecallEvent):
return Target(str(event.author_id), private=True)
return Target(
str(event.author_id),
private=True,
platform=self.get_adapter(),
self_id=bot.self_id if bot else None,
)
elif isinstance(event, GroupRecallEvent):
return Target(str(event.group.id))
return Target(
str(event.group.id), platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
raise NotImplementedError

def get_message_id(self, event: Event) -> str:
Expand Down
6 changes: 4 additions & 2 deletions src/nonebot_plugin_alconna/uniseg/adapters/ntchat.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@ def get_message_type(self):
def get_adapter(cls) -> str:
return "ntchat"

def get_target(self, event: Event) -> Target:
def get_target(self, event: Event, bot: Union[Bot, None] = None) -> Target:
from_wxid = getattr(event, "from_wxid", None)
room_wxid = getattr(event, "room_wxid", "")
if from_wxid:
return Target(from_wxid, room_wxid)
return Target(
from_wxid, room_wxid, platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
raise NotImplementedError

def get_message_id(self, event: Event) -> str:
Expand Down
8 changes: 5 additions & 3 deletions src/nonebot_plugin_alconna/uniseg/adapters/onebot11.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,13 @@ def get_message_type(self):
def get_adapter(cls) -> str:
return "OneBot V11"

def get_target(self, event: Event) -> Target:
def get_target(self, event: Event, bot: Union[Bot, None] = None) -> Target:
if group_id := getattr(event, "group_id", None):
return Target(str(group_id))
return Target(str(group_id), platform=self.get_adapter(), self_id=bot.self_id if bot else None)
if user_id := getattr(event, "user_id", None):
return Target(str(user_id), private=True)
return Target(
str(user_id), private=True, platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
raise NotImplementedError

def get_message_id(self, event: Event) -> str:
Expand Down
20 changes: 15 additions & 5 deletions src/nonebot_plugin_alconna/uniseg/adapters/onebot12.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,26 @@ def get_message_type(self):
def get_adapter(cls) -> str:
return "OneBot V12"

def get_target(self, event: Event) -> Target:
def get_target(self, event: Event, bot: Union[Bot, None] = None) -> Target:
if channel_id := getattr(event, "channel_id", None):
guild_id = getattr(event, "guild_id", None)
return Target(str(channel_id), str(guild_id) if guild_id else "", channel=True)
return Target(
str(channel_id),
str(guild_id) if guild_id else "",
channel=True,
platform=self.get_adapter(),
self_id=bot.self_id if bot else None,
)
if guild_id := getattr(event, "guild_id", None):
return Target(str(guild_id), channel=True)
return Target(
str(guild_id), channel=True, platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
if group_id := getattr(event, "group_id", None):
return Target(str(group_id))
return Target(str(group_id), platform=self.get_adapter(), self_id=bot.self_id if bot else None)
if user_id := getattr(event, "user_id", None):
return Target(str(user_id), private=True)
return Target(
str(user_id), private=True, platform=self.get_adapter(), self_id=bot.self_id if bot else None
)
raise NotImplementedError

def get_message_id(self, event: Event) -> str:
Expand Down
Loading

0 comments on commit 170fb20

Please sign in to comment.