Skip to content

Commit dcc4428

Browse files
committed
implement server side bot tracking
1 parent 97cb84d commit dcc4428

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

nightwatch/bot/client.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ class User:
3636
name: str
3737
hex: str
3838
admin: bool
39+
bot: bool
3940

4041
def __repr__(self) -> str:
41-
return f"<User name='{self.name}' hex='{self.hex}' admin={self.admin}>"
42+
return f"<User name='{self.name}' hex='{self.hex}' admin={self.admin} bot={self.bot}>"
4243

4344
@dataclass
4445
class Message:
@@ -149,7 +150,8 @@ async def __authorize(self, username: str, hex: str, address: str) -> tuple[str,
149150
f"http{protocol}://{host}:{port}/api/join",
150151
json = {
151152
"username": username,
152-
"hex": hex
153+
"hex": hex,
154+
"bot": True
153155
},
154156
timeout = 5
155157
)

nightwatch/rics/__init__.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,17 @@ async def broadcast(payload: dict) -> None:
4747
class Client:
4848
def __init__(self, websocket: WebSocket, user_data) -> None:
4949
self.websocket = websocket
50-
self.username, self.hex_code, self.admin = user_data["username"], user_data["hex"], False
50+
self.username, self.hex_code = user_data["username"], user_data["hex"]
5151

52-
self._callback = None
52+
# Attributes
53+
self.admin, self.bot = False, user_data["bot"]
5354

5455
# Attach to client list
56+
self._callback = None
5557
app.state.clients[self.username] = self
5658

5759
def serialize(self) -> dict[str, str | bool]:
58-
return {"name": self.username, "hex": self.hex_code, "admin": self.admin}
60+
return {"name": self.username, "hex": self.hex_code, "admin": self.admin, "bot": self.bot}
5961

6062
def cleanup(self) -> None:
6163
del app.state.clients[self.username]
@@ -100,6 +102,7 @@ async def receive(self) -> typing.Any:
100102
class ClientJoinModel(BaseModel):
101103
username: str = Field(..., min_length = 3, max_length = 30)
102104
hex: str = Field(..., min_length = 6, max_length = 6, pattern = "^[0-9A-Fa-f]{6}$")
105+
bot: bool = False
103106

104107
@app.post("/api/join")
105108
async def route_index(client: ClientJoinModel) -> JSONResponse:

0 commit comments

Comments
 (0)