Skip to content

Commit

Permalink
✨ version 0.2.0
Browse files Browse the repository at this point in the history
update proto types & permission from role
  • Loading branch information
RF-Tar-Railt committed May 12, 2024
1 parent d52bb8c commit 64dab54
Show file tree
Hide file tree
Showing 12 changed files with 118 additions and 21 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -159,3 +159,4 @@ cython_debug/
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/
/example/
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "nonebot-adapter-kritor"
version = "0.1.1"
version = "0.2.0"
description = "Nonebot Adapter for Kritor Protocol"
authors = [
{name = "rf_tar_railt", email = "[email protected]"},
Expand Down
2 changes: 1 addition & 1 deletion src/nonebot/adapters/kritor/bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -387,7 +387,7 @@ async def send(
message=str(message),
**kwargs,
)
return SendMessageResponse(message_id=resp.message_id, message_time=resp.time)
return SendMessageResponse(message_id=resp.message_id, message_time=resp.message_time)
if isinstance(message, str):
message = Message(message)
elif isinstance(message, MessageSegment):
Expand Down
10 changes: 10 additions & 0 deletions src/nonebot/adapters/kritor/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from pydantic import Field, BaseModel

from .protos.kritor.common import Scene
from .protos.kritor.common import Role as ProtoRole
from .protos.kritor.common import Sender as ProtoSender
from .protos.kritor.common import Contact as ProtoContact

Expand Down Expand Up @@ -62,14 +63,23 @@ class Nearby(Contact):
]


class Role(IntEnum):
UNKNOWN = 0
MEMBER = 1
ADMIN = 2
OWNER = 3


class Sender(BaseModel):
uid: str
uin: Optional[int] = None
nick: Optional[str] = None
role: Optional[Role] = None

def dump(self) -> ProtoSender:
return ProtoSender(
uid=self.uid,
uin=self.uin,
nick=self.nick,
role=ProtoRole(self.role.value) if self.role else None,
)
78 changes: 78 additions & 0 deletions src/nonebot/adapters/kritor/permission.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
from nonebot.permission import Permission

from .model import Role
from .event import TempMessage, GroupMessage, MessageEvent, FriendMessage, StrangerMessage


async def _private(event: MessageEvent) -> bool:
return isinstance(event, (FriendMessage, TempMessage, StrangerMessage))


async def _private_friend(event: FriendMessage) -> bool:
return True


async def _private_temp(event: TempMessage) -> bool:
return True


async def _private_other(event: StrangerMessage) -> bool:
return True


PRIVATE: Permission = Permission(_private)
""" 匹配任意私聊消息类型事件"""
P_FRIEND: Permission = Permission(_private_friend)
"""匹配任意好友私聊消息类型事件"""
P_TEMP: Permission = Permission(_private_temp)
"""匹配任意群临时私聊消息类型事件"""
P_STRANGER: Permission = Permission(_private_other)
"""匹配任意陌生人私聊消息类型事件"""


async def _group(event: GroupMessage) -> bool:
return True


async def _group_member(event: GroupMessage) -> bool:
if not event.sender.role:
return True
return event.sender.role is Role.UNKNOWN


async def _group_admin(event: GroupMessage) -> bool:
if not event.sender.role:
return True
return event.sender.role is Role.ADMIN


async def _group_owner(event: GroupMessage) -> bool:
if not event.sender.role:
return True
return event.sender.role is Role.OWNER


GROUP: Permission = Permission(_group)
"""匹配任意群聊消息类型事件"""
GROUP_MEMBER: Permission = Permission(_group_member)
"""匹配任意群员群聊消息类型事件
:::warning 警告
该权限通过 event.sender 进行判断且不包含管理员以及群主!
:::
"""
GROUP_ADMIN: Permission = Permission(_group_admin)
"""匹配任意群管理员群聊消息类型事件"""
GROUP_OWNER: Permission = Permission(_group_owner)
"""匹配任意群主群聊消息类型事件"""

__all__ = [
"PRIVATE",
"P_FRIEND",
"P_TEMP",
"P_STRANGER",
"GROUP",
"GROUP_MEMBER",
"GROUP_ADMIN",
"GROUP_OWNER",
]
14 changes: 11 additions & 3 deletions src/nonebot/adapters/kritor/protos/kritor/common/__init__.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions src/nonebot/adapters/kritor/protos/kritor/event/__init__.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions src/nonebot/adapters/kritor/protos/kritor/file/__init__.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions src/nonebot/adapters/kritor/protos/kritor/group/__init__.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/nonebot/adapters/kritor/protos/kritor/message/__init__.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 64dab54

Please sign in to comment.