Skip to content

Commit 0763299

Browse files
authored
🚧 process codegen
1 parent d65c5db commit 0763299

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed

codegen/__init__.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from typing import List
2+
from dataclasses import dataclass
3+
4+
from githubkit.webhooks.types import webhook_action_types
5+
6+
7+
@dataclass
8+
class Data:
9+
class_name: str
10+
payload_type: str
11+
12+
13+
def build_event():
14+
events: List[Data] = []
15+
for event, types in webhook_action_types.items():
16+
if not isinstance(types, dict):
17+
events.append(Data(types.__name__, types.__name__))
18+
19+
for action, type in types.items():
20+
...

codegen/__main__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from . import build_event
2+
3+
if __name__ == "__main__":
4+
build_event()

codegen/templates/event.py.jinja

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
from typing import Any
2+
3+
from githubkit.utils import UNSET
4+
from nonebot.typing import overrides
5+
6+
from nonebot.adapters import Event as BaseEvent
7+
8+
9+
class Event(BaseEvent):
10+
id: str
11+
name: str
12+
payload: Any
13+
14+
to_me: bool = False
15+
16+
@overrides(BaseEvent)
17+
def get_type(self) -> str:
18+
return "notice"
19+
20+
@overrides(BaseEvent)
21+
def get_event_name(self) -> str:
22+
return self.event_name + f".{action}" if (action := getattr(self, "action", UNSET)) else ""
23+
24+
@overrides(BaseEvent)
25+
def get_event_description(self) -> str:
26+
return escape_tag(
27+
f"{self.__class__.__name__} " +
28+
(f"from sender {sender.login}" if (sender := getattr(self, "sender", UNSET)) else "") +
29+
(f"in repository {repo.full_name}" if (repo := getattr(self, "repository", UNSET)) else "") +
30+
)
31+
32+
@overrides(BaseEvent)
33+
def get_message(self) -> Message:
34+
raise ValueError("Event has no message!")
35+
36+
@overrides(BaseEvent)
37+
def get_user_id(self) -> str:
38+
if sender := getattr(self, "sender", UNSET):
39+
return sender.login
40+
raise ValueError("Event has no context!")
41+
42+
@overrides(BaseEvent)
43+
def get_session_id(self) -> str:
44+
return self.get_user_id()
45+
46+
@overrides(BaseEvent)
47+
def is_tome(self) -> bool:
48+
return self.to_me

0 commit comments

Comments
 (0)