Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions nonebot_plugin_session/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,7 @@
"~feishu",
"~red",
"~discord",
"~qq",
"~satori",
},
)
4 changes: 3 additions & 1 deletion nonebot_plugin_session/adapters/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
from . import (
from . import ( # noqa F401
console,
discord,
feishu,
kaiheila,
onebot_v11,
onebot_v12,
qq,
qqguild,
red,
satori,
telegram,
)
90 changes: 90 additions & 0 deletions nonebot_plugin_session/adapters/qq.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
from typing import Optional

from ..const import SupportedPlatform
from ..extractor import SessionExtractor, register_session_extractor
from ..session import SessionLevel

try:
from nonebot.adapters.qq import (
AtMessageCreateEvent,
Bot,
C2CMessageCreateEvent,
DirectMessageCreateEvent,
Event,
GroupAtMessageCreateEvent,
MessageAuditEvent,
MessageCreateEvent,
MessageReactionEvent,
)

@register_session_extractor(Bot, Event)
class EventExtractor(SessionExtractor[Bot, Event]):
def extract_platform(self) -> str:
if isinstance(
self.event, (GroupAtMessageCreateEvent, C2CMessageCreateEvent)
):
return SupportedPlatform.qq
elif isinstance(
self.event,
(
MessageAuditEvent,
MessageReactionEvent,
MessageCreateEvent,
AtMessageCreateEvent,
DirectMessageCreateEvent,
),
):
return SupportedPlatform.qqguild

return SupportedPlatform.unknown

def extract_level(self) -> SessionLevel:
if isinstance(
self.event, (DirectMessageCreateEvent, C2CMessageCreateEvent)
):
return SessionLevel.LEVEL1
elif isinstance(self.event, GroupAtMessageCreateEvent):
return SessionLevel.LEVEL2
elif isinstance(
self.event,
(
MessageAuditEvent,
MessageReactionEvent,
MessageCreateEvent,
AtMessageCreateEvent,
),
):
return SessionLevel.LEVEL3

return SessionLevel.LEVEL0

def extract_id2(self) -> Optional[str]:
if isinstance(self.event, GroupAtMessageCreateEvent):
return self.event.group_id
elif isinstance(
self.event,
(
MessageAuditEvent,
MessageReactionEvent,
MessageCreateEvent,
AtMessageCreateEvent,
DirectMessageCreateEvent,
),
):
return self.event.channel_id

def extract_id3(self) -> Optional[str]:
if isinstance(
self.event,
(
MessageAuditEvent,
MessageReactionEvent,
MessageCreateEvent,
AtMessageCreateEvent,
DirectMessageCreateEvent,
),
):
return self.event.guild_id

except ImportError:
pass
36 changes: 36 additions & 0 deletions nonebot_plugin_session/adapters/satori.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from typing import Optional

from ..extractor import SessionExtractor, register_session_extractor
from ..session import SessionLevel

try:
from nonebot.adapters.satori import Bot, MessageEvent
from nonebot.adapters.satori.event import (
PrivateMessageCreatedEvent,
PublicMessageCreatedEvent,
)

@register_session_extractor(Bot, MessageEvent)
class EventExtractor(SessionExtractor[Bot, MessageEvent]):
def extract_platform(self) -> str:
return self.event.platform

def extract_level(self) -> SessionLevel:
if isinstance(self.event, PrivateMessageCreatedEvent):
return SessionLevel.LEVEL1
elif isinstance(self.event, PublicMessageCreatedEvent):
if self.event.guild is None:
return SessionLevel.LEVEL2
return SessionLevel.LEVEL3

return SessionLevel.LEVEL0

def extract_id2(self) -> Optional[str]:
return self.event.channel.id

def extract_id3(self) -> Optional[str]:
if self.event.guild is not None:
return self.event.guild.id

except ImportError:
pass
Loading