Skip to content

Commit c36174d

Browse files
feat(notifications): Add goup names to notification responses
1 parent 1ad071f commit c36174d

File tree

5 files changed

+18
-11
lines changed

5 files changed

+18
-11
lines changed

app/models/user.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ class UserNotificationResponse(User):
101101
online_at: dt | None = Field(default=None)
102102
subscription_url: str = Field(default="")
103103
admin: AdminContactInfo | None = Field(default=None)
104+
group_names: list[str] | None = Field(default_factory=list)
104105
model_config = ConfigDict(from_attributes=True)
105106

106107
@field_validator("used_traffic", "lifetime_used_traffic", "data_limit", mode="before")
@@ -110,7 +111,8 @@ def cast_to_int(cls, v):
110111

111112

112113
class UserResponse(UserNotificationResponse):
113-
admin: AdminBase | None = None
114+
admin: AdminBase | None = Field(default=None)
115+
group_names: list[str] | None = Field(default=None, exclude=True)
114116

115117

116118
class SubscriptionUserResponse(UserResponse):

app/notification/discord/messages.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
+ "**Data Limit**: {data_limit}\n"
5353
+ "**Expire Date:** {expire_date}\n"
5454
+ "**Data Limit Reset Strategy:** {data_limit_reset_strategy}\n"
55+
+ "**Groups:** {groups}\n"
5556
+ "**Has Next Plan**: {has_next_plan}",
5657
"footer": {"text": "Belongs To:{admin_username}\nBy: {by}"},
5758
}
@@ -62,6 +63,7 @@
6263
+ "**Data Limit**: {data_limit}\n"
6364
+ "**Expire Date:** {expire_date}\n"
6465
+ "**Data Limit Reset Strategy:** {data_limit_reset_strategy}\n"
66+
+ "**Groups:** {groups}\n"
6567
+ "**Has Next Plan**: {has_next_plan}",
6668
"footer": {"text": "Belongs To:{admin_username}\nBy: {by}"},
6769
}

app/notification/discord/user.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import copy
22

3-
from app.notification.client import send_discord_webhook
4-
from app.models.user import UserNotificationResponse
5-
from app.utils.system import readable_size
63
from app.models.settings import NotificationSettings
4+
from app.models.user import UserNotificationResponse
5+
from app.notification.client import send_discord_webhook
76
from app.settings import notification_settings
7+
from app.utils.system import readable_size
88

99
from . import colors, messages
1010
from .utils import escape_md_user
@@ -51,6 +51,7 @@ async def create_user(user: UserNotificationResponse, by: str):
5151
data_limit=readable_size(user.data_limit) if user.data_limit else "Unlimited",
5252
expire_date=user.expire if user.expire else "Never",
5353
data_limit_reset_strategy=user.data_limit_reset_strategy.value,
54+
groups=", ".join(user.group_names),
5455
has_next_plan=bool(user.next_plan),
5556
)
5657
message["footer"]["text"] = message["footer"]["text"].format(admin_username=admin_username, by=by)
@@ -74,6 +75,7 @@ async def modify_user(user: UserNotificationResponse, by: str):
7475
data_limit=readable_size(user.data_limit) if user.data_limit else "Unlimited",
7576
expire_date=user.expire if user.expire else "Never",
7677
data_limit_reset_strategy=user.data_limit_reset_strategy.value,
78+
groups=", ".join(user.group_names),
7779
has_next_plan=bool(user.next_plan),
7880
)
7981
message["footer"]["text"] = message["footer"]["text"].format(admin_username=admin_username, by=by)

app/notification/telegram/user.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
from app.notification.client import send_telegram_message
2-
from app.models.user import UserNotificationResponse
3-
from app.utils.system import readable_size
41
from app.models.settings import NotificationSettings
2+
from app.models.user import UserNotificationResponse
3+
from app.notification.client import send_telegram_message
54
from app.settings import notification_settings
5+
from app.utils.system import readable_size
66

7-
from .utils import escape_html_user
87
from . import messages
8+
from .utils import escape_html_user
99

1010
_status = {
1111
"active": "<b>✅ #Activated</b>",
@@ -40,6 +40,7 @@ async def create_user(user: UserNotificationResponse, by: str):
4040
data_limit=readable_size(user.data_limit) if user.data_limit else "Unlimited",
4141
expire_date=user.expire if user.expire else "Never",
4242
data_limit_reset_strategy=user.data_limit_reset_strategy.value,
43+
groups=", ".join(user.group_names),
4344
has_next_plan=bool(user.next_plan),
4445
admin_username=admin_username,
4546
by=by,
@@ -60,6 +61,7 @@ async def modify_user(user: UserNotificationResponse, by: str):
6061
data_limit=readable_size(user.data_limit) if user.data_limit else "Unlimited",
6162
expire_date=user.expire if user.expire else "Never",
6263
data_limit_reset_strategy=user.data_limit_reset_strategy.value,
64+
groups=", ".join(user.group_names),
6365
has_next_plan=bool(user.next_plan),
6466
admin_username=admin_username,
6567
by=by,

app/operation/user.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,11 @@
4848
)
4949
from app.node import node_manager
5050
from app.operation import BaseOperation, OperatorType
51-
from app.utils.logger import get_logger
52-
from app.utils.jwt import create_subscription_token
5351
from app.settings import subscription_settings
52+
from app.utils.jwt import create_subscription_token
53+
from app.utils.logger import get_logger
5454
from config import SUBSCRIPTION_PATH
5555

56-
5756
logger = get_logger("user-operation")
5857

5958

0 commit comments

Comments
 (0)