Skip to content

Commit 0e8c687

Browse files
committed
0.0.11
1 parent 422372e commit 0e8c687

21 files changed

Lines changed: 325 additions & 96 deletions

README.md

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313

1414
Edoves 是 `Arclet Project` 基于同项目下的 `Cesloi`**第二代** 框架实现,
1515

16-
**该框架目前处于快速迭代状态, API 可能会发生 _剧烈_ 变化, 可能还不适合进行生产性的开发与运维**
16+
**该框架目前处于快速迭代状态, API 可能会发生 _剧烈_ 变化, 建议根据changelog选择合适的版本**
17+
18+
### [文档](https://arcletproject.github.io/docs/edoves/tutorial)
1719

1820
## 安装
1921
```
@@ -30,7 +32,9 @@ pip install --upgrade arclet-edoves
3032
- [x] `Component`: IO的主要属性, 负责实际的数据管理与事件响应
3133
- [x] `Medium`: 传输事件信息的载体
3234
- [x] `Protocol`: 调度`Medium``IO`
33-
- [x] `Scene`: 对IO统一的生命周期管理
35+
- [x] `Scene`: 对IO统一的生命周期管理, 间接支持多账号
36+
+ 杂项
37+
- [x] `NetworkClient`: 对网络端的抽象处理
3438

3539
+ 实现支持
3640
- [x] `Edoves for mirai-api-http` : 对 [ `mirai-api-http` ](https://github.com/project-mirai/mirai-api-http) 的支持.
@@ -41,22 +45,21 @@ pip install --upgrade arclet-edoves
4145

4246
main.py:
4347
```python
44-
from arclet.edoves.builtin.mah.actions import Reply
48+
from arclet.edoves.builtin.mah.actions import reply
4549
from arclet.edoves.builtin.mah.module import MessageModule
4650
from arclet.edoves.builtin.medium import Message
47-
from arclet.edoves.builtin.event.message import AllMessage
51+
from arclet.edoves.builtin.event.message import MessageReceived
4852
from arclet.edoves.builtin.client import AioHttpClient
4953
from arclet.edoves.main import Edoves
5054

5155

5256
async def test_message_reaction(message: Message):
5357
if message.content.startswith("Hello World"):
54-
await Reply(message).execute()
58+
await reply(message)
5559
await message.set("I received 'Hello World'!").send()
5660

5761

5862
app = Edoves(
59-
debug=False,
6063
profile={
6164
"verify_token": "INITKEYWylsVdbr",
6265
"port": "9080",
@@ -65,23 +68,8 @@ app = Edoves(
6568
}
6669
)
6770
message_module = app.scene.activate_module(MessageModule)
68-
message_module.add_handler(AllMessage, test_message_reaction)
71+
message_module.add_handler(MessageReceived, test_message_reaction)
6972
app.run()
70-
```
71-
edoves/builtin/mah/module.py:
72-
```python
73-
from arclet.edoves.main.module import BaseModule, ModuleMetaComponent
74-
from arclet.edoves.builtin.mah import VERIFY_CODE
75-
76-
77-
class MessageModuleData(ModuleMetaComponent):
78-
identifier = VERIFY_CODE
79-
80-
81-
class MessageModule(BaseModule):
82-
prefab_metadata = MessageModuleData
83-
84-
8573
```
8674

8775
## 相关项目

arclet/edoves/builtin/actions.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,29 @@
66

77
class MessageAction(ExecutiveAction):
88
data: Message
9-
action: str
109

1110
def __init__(self, action: str, message: Message):
12-
super().__init__(message)
13-
self.action = action
11+
super().__init__(message, action)
1412

1513
async def execute(self):
1614
return await self.target.action(self.action)(
1715
self.data
1816
)
1917

2018

19+
class MessageRevoke(MessageAction):
20+
message_id: int
21+
22+
def __init__(self, message: Message, target: int = None):
23+
self.message_id = target
24+
super().__init__("revoke", message)
25+
26+
async def execute(self):
27+
return await self.target.action(self.action)(
28+
self.data, target=self.message_id
29+
)
30+
31+
2132
class MessageSend(MessageAction):
2233

2334
def __init__(self, message: Optional[Message] = None):

arclet/edoves/builtin/behavior.py

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,47 @@ class MessageBehavior(BaseMonoBehavior):
99
def activate(self):
1010
self.protocol = self.io.metadata.protocol.scene.network_protocol
1111

12+
async def revoke(self, medium: Message, target: int = None):
13+
self.protocol.set_medium(
14+
{
15+
"target": target if target else medium.content.find("Source").id
16+
}
17+
)
18+
await self.protocol.medium_transport("message_revoke")
19+
20+
async def nudge(self, target: str, **rest):
21+
self.protocol.set_medium(
22+
{
23+
"target": target,
24+
"rest": rest
25+
}
26+
)
27+
await self.protocol.medium_transport("nudge_send")
28+
1229
async def send_with(self, medium: Message, reply: bool = False, nudge: bool = False, **rest):
30+
if nudge:
31+
self.protocol.set_medium(
32+
{
33+
"target": medium.purveyor.metadata.identifier,
34+
"rest": rest
35+
}
36+
)
37+
await self.protocol.medium_transport("nudge_send")
38+
1339
self.protocol.set_medium(
1440
{
1541
"target": medium.purveyor.metadata.identifier,
1642
"reply": reply,
17-
"nudge": nudge,
1843
"content": medium.content.replace_type("Text", "Plain").to_sendable(),
1944
"rest": rest
2045
}
2146
)
22-
resp_data = await self.protocol.medium_transport("send_message")
47+
resp_data = await self.protocol.medium_transport("message_send")
48+
return resp_data.get('messageId')
49+
50+
51+
class MonoMetaBehavior(BaseMonoBehavior):
52+
protocol: NetworkProtocol
53+
54+
def activate(self):
55+
self.protocol = self.io.metadata.protocol.scene.network_protocol

arclet/edoves/builtin/chatlog.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from ..main.module import BaseModule, ModuleMetaComponent
44
from ..main.typings import TMProtocol
55
from ..utilles.security import EDOVES_DEFAULT
6-
from .event.message import AllMessage
6+
from .event.message import MessageReceived
77

88

99
def log_message(module: BaseModule, message: Message, purveyor: Monomer):
@@ -46,4 +46,4 @@ class ChatLogModule(BaseModule):
4646

4747
def __init__(self, protocol: TMProtocol):
4848
super().__init__(protocol)
49-
self.add_handler(AllMessage, log_message)
49+
self.add_handler(MessageReceived, log_message)

arclet/edoves/builtin/commander.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from arclet.letoderea.handler import await_exec_target
33
from typing import Callable, Dict, Type
44

5-
from .event.message import AllMessage
5+
from .event.message import MessageReceived
66
from .medium import Message
77
from ..main.module import BaseModule, ModuleMetaComponent, Component
88
from ..main.typings import TMProtocol
@@ -68,7 +68,7 @@ def __init__(self, protocol: TMProtocol):
6868
for k, v in self.local_storage[self.__class__].items():
6969
self.get_component(CommandParsers).parsers.setdefault(k, v)
7070

71-
@self.behavior.add_handler(AllMessage)
71+
@self.behavior.add_handler(MessageReceived)
7272
async def command_handler(message: Message, module: Commander):
7373
for cmd, psr in self.command_parsers.parsers.items():
7474
result = psr.alconna.analyse_message(message.content)
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
from .message import AllMessage
1+
from .message import MessageReceived, MessageRevoke
22
from .network import DockerOperate
3+
from .lifecycle import StartRunning, StopRunning
4+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from ...main.event import EdovesBasicEvent
2+
from ...main.context import ctx_edoves
3+
4+
5+
class LifeCycle(EdovesBasicEvent):
6+
7+
def get_params(self):
8+
return self.param_export(
9+
edoves=ctx_edoves.get(),
10+
)
11+
12+
13+
class StartRunning(LifeCycle):
14+
pass
15+
16+
17+
class StopRunning(LifeCycle):
18+
pass
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
from ...main.event import BasicEvent
1+
from ...main.event import EdovesBasicEvent
22
from ..medium import Message
33

44

5-
class AllMessage(BasicEvent):
5+
class MessageReceived(EdovesBasicEvent):
6+
medium: Message
7+
8+
9+
class MessageRevoke(EdovesBasicEvent):
610
medium: Message
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from ...main.event import BasicEvent
1+
from ...main.event import EdovesBasicEvent
22
from ..medium import JsonMedium
33

44

5-
class DockerOperate(BasicEvent):
5+
class DockerOperate(EdovesBasicEvent):
66
medium: JsonMedium
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from ...main.event import EdovesBasicEvent
2+
from ..medium import Notice
3+
4+
5+
class NoticeSelf(EdovesBasicEvent):
6+
medium: Notice
7+
8+
9+
class MonomerStatusChanged(EdovesBasicEvent):
10+
action: str
11+
medium: Notice
12+
13+
14+
class MonomerMetadataChanged(EdovesBasicEvent):
15+
action: str
16+
medium: Notice
17+
18+
19+
class RelationCreate(EdovesBasicEvent):
20+
medium: Notice
21+
22+
23+
class RelationDestroy(EdovesBasicEvent):
24+
medium: Notice

0 commit comments

Comments
 (0)