Skip to content

Commit b1222b5

Browse files
committed
⬆️ version 0.8.0
use Nonechat 0.7.0
1 parent 056ebd4 commit b1222b5

9 files changed

Lines changed: 231 additions & 175 deletions

File tree

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from nonechat.model import User as User
21
from nonechat.model import Channel as Channel
2+
from nonechat.model import User as User
33

4+
from .adapter import Adapter as Adapter
45
from .bot import Bot as Bot
56
from .event import Event as Event
6-
from .adapter import Adapter as Adapter
7-
from .message import Message as Message
87
from .event import MessageEvent as MessageEvent
8+
from .message import Message as Message
99
from .message import MessageSegment as MessageSegment

nonebot/adapters/console/adapter.py

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
import sys
21
import asyncio
3-
from collections.abc import Awaitable
2+
import sys
3+
from collections.abc import Awaitable, Callable
4+
from typing import Any
45
from typing_extensions import override
5-
from typing import Any, Callable, Optional
66

7-
from textual.color import Color
87
from nonebot.drivers import Driver
9-
from nonechat import Frontend, ConsoleSetting
8+
from nonechat import ConsoleSetting, Frontend
9+
from textual.color import Color
1010

1111
from nonebot import get_plugin_config
1212
from nonebot.adapters import Adapter as BaseAdapter
1313

14+
from .backend import AdapterConsoleBackend
1415
from .bot import Bot
15-
from .utils import log
16-
from .event import Event
1716
from .config import Config
17+
from .event import Event
1818
from .exception import ApiNotAvailable
19-
from .backend import AdapterConsoleBackend
19+
from .utils import log
2020

2121

2222
class Adapter(BaseAdapter):
@@ -26,7 +26,7 @@ class Adapter(BaseAdapter):
2626
def __init__(self, driver: Driver, **kwargs: Any) -> None:
2727
super().__init__(driver, **kwargs)
2828
self.console_config = get_plugin_config(Config)
29-
self._task: Optional[asyncio.Task] = None
29+
self._task: asyncio.Task | None = None
3030

3131
self._stdout = sys.stdout
3232
self.clients: list[Callable[[Bot, str, dict[str, Any]], Awaitable[Any]]] = []
@@ -74,28 +74,34 @@ def post_event(self, event: Event) -> None:
7474

7575
@override
7676
async def _call_api(self, bot: Bot, api: str, **data: Any):
77-
if api == "send_msg":
78-
return await self._frontend.send_message(**data, bot=bot.info)
79-
if api == "bell":
80-
return await self._frontend.toggle_bell()
81-
if api == "get_user":
82-
return await self._frontend.backend.get_user(data["user_id"])
83-
if api == "get_channel":
84-
return await self._frontend.backend.get_channel(data["channel_id"])
85-
if api == "get_users":
86-
return await self._frontend.backend.list_users()
87-
if api == "list_channels":
88-
return await self._frontend.backend.list_channels(data.get("list_users", False))
89-
if api == "create_dm":
90-
user = await self._frontend.backend.get_user(data["user_id"])
91-
return await self._frontend.backend.create_dm(user)
92-
if api == "get_msg":
93-
channel = await self._frontend.backend.get_channel(data["channel_id"])
94-
return await self._frontend.backend.get_chat(data["message_id"], channel)
95-
if api == "recall_msg":
96-
channel = await self._frontend.backend.get_channel(data["channel_id"])
97-
return await self._frontend.recall_message(data["message_id"], channel)
98-
if api == "edit_msg":
99-
channel = await self._frontend.backend.get_channel(data["channel_id"])
100-
return await self._frontend.edit_message(data["message_id"], data["content"], channel)
101-
raise ApiNotAvailable(f"API {api} is not available in Console adapter")
77+
match api:
78+
case "send_msg":
79+
return await self._frontend.send_message(**data, bot=bot.info)
80+
case "bell":
81+
return await self._frontend.toggle_bell()
82+
case "current_user":
83+
return self._frontend.backend.current_user
84+
case "current_channel":
85+
return self._frontend.backend.current_channel
86+
case "get_user":
87+
return await self._frontend.backend.get_user(data["user_id"])
88+
case "get_channel":
89+
return await self._frontend.backend.get_channel(data["channel_id"])
90+
case "list_users":
91+
return await self._frontend.backend.list_users()
92+
case "list_channels":
93+
return await self._frontend.backend.list_channels(data.get("list_users", False))
94+
case "create_dm":
95+
user = await self._frontend.backend.get_user(data["user_id"])
96+
return await self._frontend.backend.create_dm(user)
97+
case "get_msg":
98+
channel = await self._frontend.backend.get_channel(data["channel_id"])
99+
return await self._frontend.backend.get_chat(data["message_id"], channel)
100+
case "recall_msg":
101+
channel = await self._frontend.backend.get_channel(data["channel_id"])
102+
return await self._frontend.recall_message(data["message_id"], channel)
103+
case "edit_msg":
104+
channel = await self._frontend.backend.get_channel(data["channel_id"])
105+
return await self._frontend.edit_message(data["message_id"], data["content"], channel)
106+
case _:
107+
raise ApiNotAvailable(f"API {api} is not available in Console adapter")

nonebot/adapters/console/backend.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
from typing import TYPE_CHECKING, Optional, cast
1+
from typing import TYPE_CHECKING, cast
22

33
from loguru import _colorama
4-
from nonechat import Backend
5-
from nonechat.model import Robot
4+
from loguru._handler import Handler
65
from loguru._logger import Logger
6+
from loguru._simple_sinks import StreamSink
7+
from nonebot.log import logger, logger_id
8+
from nonechat import Backend
79
from nonechat.app import Frontend
8-
from loguru._handler import Handler
910
from nonechat.backend import BotAdd
10-
from nonebot.log import logger, logger_id
11-
from loguru._simple_sinks import StreamSink
1211
from nonechat.model import Event as ConsoleEvent
1312
from nonechat.model import MessageEvent as ConsoleMessageEvent
13+
from nonechat.model import Robot
1414

1515
from .bot import Bot
16-
from .message import Message
1716
from .event import Event, MessageEvent
17+
from .message import Message
1818

1919
if TYPE_CHECKING:
2020
from .adapter import Adapter
@@ -26,7 +26,7 @@ class AdapterConsoleBackend(Backend):
2626
def __init__(self, frontend: "Frontend"):
2727
super().__init__(frontend)
2828
self.current_user.id = "user"
29-
self._origin_sink: Optional[StreamSink] = None
29+
self._origin_sink: StreamSink | None = None
3030

3131
def set_adapter(self, adapter: "Adapter"):
3232
self._adapter = adapter

nonebot/adapters/console/bot.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import re
2+
from typing import TYPE_CHECKING, Any
23
from typing_extensions import override
3-
from typing import TYPE_CHECKING, Any, Union
44

55
from nonebot.message import handle_event
6-
from nonechat.model import User, Robot, Channel
6+
from nonechat.model import Channel, Robot, User
77

88
from nonebot.adapters import Bot as BaseBot
99

10-
from .utils import log
11-
from .message import Message, MessageSegment
1210
from .event import Event, MessageEvent, MessageResponse
11+
from .message import Message, MessageSegment
12+
from .utils import log
1313

1414
if TYPE_CHECKING:
1515
from .adapter import Adapter
@@ -70,7 +70,7 @@ def __init__(self, adapter: "Adapter", info: Robot):
7070
async def send(
7171
self,
7272
event: Event,
73-
message: Union[str, Message, MessageSegment],
73+
message: str | Message | MessageSegment,
7474
**kwargs: Any,
7575
) -> Any:
7676
full_message = Message()
@@ -83,7 +83,7 @@ async def send(
8383
)
8484
return MessageResponse(message_id=msg_id, channel_id=event.channel.id)
8585

86-
async def send_private_message(self, user_id: str, message: Union[str, Message, MessageSegment]):
86+
async def send_private_message(self, user_id: str, message: str | Message | MessageSegment):
8787
channel = await self.create_dm(user_id)
8888
full_message = Message()
8989
full_message += message
@@ -94,7 +94,7 @@ async def send_private_message(self, user_id: str, message: Union[str, Message,
9494
)
9595
return MessageResponse(message_id=msg_id, channel_id=channel.id)
9696

97-
async def send_message(self, channel_id: str, message: Union[str, Message, MessageSegment]):
97+
async def send_message(self, channel_id: str, message: str | Message | MessageSegment):
9898
channel = await self.get_channel(channel_id)
9999
full_message = Message()
100100
full_message += message
@@ -132,9 +132,7 @@ async def recall_message(self, message_id: str, channel_id: str) -> None:
132132
"""
133133
await self.call_api("recall_msg", message_id=message_id, channel_id=channel_id)
134134

135-
async def edit_message(
136-
self, message_id: str, channel_id: str, content: Union[str, Message, MessageSegment]
137-
) -> None:
135+
async def edit_message(self, message_id: str, channel_id: str, content: str | Message | MessageSegment) -> None:
138136
"""编辑消息
139137
140138
Args:
@@ -148,6 +146,14 @@ async def edit_message(
148146
"edit_msg", message_id=message_id, content=full_message.to_console_message(), channel_id=channel_id
149147
)
150148

149+
async def get_current_user(self) -> User:
150+
"""获取当前用户信息"""
151+
return await self.call_api("current_user")
152+
153+
async def get_current_channel(self) -> Channel:
154+
"""获取当前频道信息"""
155+
return await self.call_api("current_channel")
156+
151157
async def get_user(self, user_id: str) -> User:
152158
"""获取用户信息"""
153159
return await self.call_api("get_user", user_id=user_id)

nonebot/adapters/console/event.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
from typing import Any, Literal
44
from typing_extensions import override
55

6-
from pydantic import Field, BaseModel
7-
from nonechat.model import DIRECT, User, Channel
8-
from nonebot.utils import DataclassEncoder, escape_tag
96
from nonebot.compat import PYDANTIC_V2, ConfigDict, model_dump, model_validator, type_validate_python
7+
from nonebot.utils import DataclassEncoder, escape_tag
8+
from nonechat.model import DIRECT, Channel, User
9+
from pydantic import BaseModel, Field
1010

1111
from nonebot.adapters import Event as BaseEvent
1212

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
from typing import Optional
2-
31
from nonebot.exception import AdapterException
42
from nonebot.exception import ApiNotAvailable as BaseApiNotAvailable
53

@@ -10,7 +8,7 @@ def __init__(self):
108

119

1210
class ApiNotAvailable(BaseApiNotAvailable, ConsoleAdapterException):
13-
def __init__(self, msg: Optional[str] = None):
11+
def __init__(self, msg: str | None = None):
1412
super().__init__()
15-
self.msg: Optional[str] = msg
13+
self.msg: str | None = msg
1614
"""错误原因"""

nonebot/adapters/console/message.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
from dataclasses import asdict
21
from collections.abc import Iterable
2+
from dataclasses import asdict
3+
from typing import TYPE_CHECKING, Union
34
from typing_extensions import Self, override
4-
from typing import TYPE_CHECKING, Union, Optional
55

6-
from rich.style import Style
7-
from rich.emoji import EmojiVariant
6+
from nonechat import ConsoleMessage, Emoji, Markdown, Markup, Text
87
from rich.console import JustifyMethod
9-
from nonechat import Text, Emoji, Markup, Markdown, ConsoleMessage
8+
from rich.emoji import EmojiVariant
9+
from rich.style import Style
1010

1111
from nonebot.adapters import Message as BaseMessage
1212
from nonebot.adapters import MessageSegment as BaseMessageSegment
@@ -50,9 +50,9 @@ def emoji(name: str) -> "MessageSegment":
5050
@staticmethod
5151
def markup(
5252
markup: str,
53-
style: Union[str, Style] = "none",
53+
style: str | Style = "none",
5454
emoji: bool = True,
55-
emoji_variant: Optional[EmojiVariant] = None,
55+
emoji_variant: EmojiVariant | None = None,
5656
) -> "MessageSegment":
5757
return MessageSegment(
5858
"markup",
@@ -68,11 +68,11 @@ def markup(
6868
def markdown(
6969
markup: str,
7070
code_theme: str = "monokai",
71-
justify: Optional[JustifyMethod] = None,
72-
style: Union[str, Style] = "none",
71+
justify: JustifyMethod | None = None,
72+
style: str | Style = "none",
7373
hyperlinks: bool = True,
74-
inline_code_lexer: Optional[str] = None,
75-
inline_code_theme: Optional[str] = None,
74+
inline_code_lexer: str | None = None,
75+
inline_code_theme: str | None = None,
7676
) -> "MessageSegment":
7777
return MessageSegment(
7878
"markdown",
@@ -97,15 +97,15 @@ def get_segment_class(cls) -> type[MessageSegment]:
9797
return MessageSegment
9898

9999
@override
100-
def __add__(self, other: Union[str, MessageSegment, Iterable[MessageSegment]]) -> Self:
100+
def __add__(self, other: str | MessageSegment | Iterable[MessageSegment]) -> Self:
101101
return super().__add__(MessageSegment.text(other) if isinstance(other, str) else other)
102102

103103
@override
104-
def __radd__(self, other: Union[str, MessageSegment, Iterable[MessageSegment]]) -> Self:
104+
def __radd__(self, other: str | MessageSegment | Iterable[MessageSegment]) -> Self:
105105
return super().__radd__(MessageSegment.text(other) if isinstance(other, str) else other)
106106

107107
@override
108-
def __iadd__(self, other: Union[str, MessageSegment, Iterable[MessageSegment]]) -> Self:
108+
def __iadd__(self, other: str | MessageSegment | Iterable[MessageSegment]) -> Self:
109109
return super().__iadd__(MessageSegment.text(other) if isinstance(other, str) else other)
110110

111111
@staticmethod

0 commit comments

Comments
 (0)