Skip to content

Notifications

genjishimada_sdk.notifications

EVENT_TYPE_DEFAULT_CHANNELS: dict[NotificationEventType, list[NotificationChannel]] = {NotificationEventType.VERIFICATION_APPROVED: [NotificationChannel.DISCORD_DM, NotificationChannel.WEB], NotificationEventType.VERIFICATION_REJECTED: [NotificationChannel.DISCORD_DM, NotificationChannel.WEB], NotificationEventType.RECORD_REMOVED: [NotificationChannel.DISCORD_DM, NotificationChannel.WEB], NotificationEventType.AUTO_VERIFY_FAILED: [NotificationChannel.DISCORD_DM, NotificationChannel.WEB], NotificationEventType.SKILL_ROLE_UPDATE: [NotificationChannel.DISCORD_DM, NotificationChannel.WEB], NotificationEventType.XP_GAIN: [NotificationChannel.DISCORD_PING, NotificationChannel.WEB], NotificationEventType.RANK_UP: [NotificationChannel.DISCORD_PING, NotificationChannel.WEB], NotificationEventType.PRESTIGE: [NotificationChannel.DISCORD_PING, NotificationChannel.WEB], NotificationEventType.MASTERY_EARNED: [NotificationChannel.DISCORD_PING, NotificationChannel.WEB], NotificationEventType.LOOTBOX_EARNED: [NotificationChannel.DISCORD_DM, NotificationChannel.WEB], NotificationEventType.PLAYTEST_UPDATE: [NotificationChannel.DISCORD_DM, NotificationChannel.WEB], NotificationEventType.MAP_EDIT_APPROVED: [NotificationChannel.DISCORD_DM, NotificationChannel.WEB], NotificationEventType.MAP_EDIT_REJECTED: [NotificationChannel.DISCORD_DM, NotificationChannel.WEB]} module-attribute

NOTIFICATION_CHANNEL = Literal['discord_dm', 'discord_ping', 'web'] module-attribute

NOTIFICATION_EVENT_TYPE = Literal['verification_approved', 'verification_rejected', 'record_removed', 'record_edited', 'auto_verify_failed', 'skill_role_update', 'xp_gain', 'rank_up', 'prestige', 'mastery_earned', 'lootbox_earned', 'playtest_update', 'map_edit_approved', 'map_edit_rejected'] module-attribute

NotificationChannel

Bases: str, Enum

Available notification delivery channels.

DISCORD_DM = 'discord_dm' class-attribute instance-attribute

DISCORD_PING = 'discord_ping' class-attribute instance-attribute

WEB = 'web' class-attribute instance-attribute

NotificationCreateRequest

Bases: Struct

Request to create a notification event.

body: str instance-attribute

discord_message: str | None = None class-attribute instance-attribute

event_type: NOTIFICATION_EVENT_TYPE instance-attribute

metadata: dict | None = None class-attribute instance-attribute

title: str instance-attribute

user_id: int instance-attribute

NotificationDeliveryEvent

Bases: Struct

Event published to RabbitMQ when a notification needs Discord delivery.

Routing key: api.notification.delivery

body: str instance-attribute

channels_to_deliver: list[NOTIFICATION_CHANNEL] instance-attribute

discord_message: str | None instance-attribute

event_id: int instance-attribute

event_type: NOTIFICATION_EVENT_TYPE instance-attribute

metadata: dict | None instance-attribute

title: str instance-attribute

user_id: int instance-attribute

NotificationDeliveryResultRequest

Bases: Struct

Request to record delivery result from bot.

channel: NOTIFICATION_CHANNEL instance-attribute

error_message: str | None = None class-attribute instance-attribute

status: Literal['delivered', 'failed', 'skipped'] instance-attribute

NotificationEventResponse

Bases: Struct

Response for a notification event.

body: str instance-attribute

created_at: str instance-attribute

dismissed_at: str | None instance-attribute

event_type: NOTIFICATION_EVENT_TYPE instance-attribute

id: int instance-attribute

metadata: dict | None instance-attribute

read_at: str | None instance-attribute

title: str instance-attribute

user_id: int instance-attribute

NotificationEventType

Bases: str, Enum

Notification event types.

AUTO_VERIFY_FAILED = 'auto_verify_failed' class-attribute instance-attribute

LOOTBOX_EARNED = 'lootbox_earned' class-attribute instance-attribute

MAP_EDIT_APPROVED = 'map_edit_approved' class-attribute instance-attribute

MAP_EDIT_REJECTED = 'map_edit_rejected' class-attribute instance-attribute

MASTERY_EARNED = 'mastery_earned' class-attribute instance-attribute

PLAYTEST_UPDATE = 'playtest_update' class-attribute instance-attribute

PRESTIGE = 'prestige' class-attribute instance-attribute

RANK_UP = 'rank_up' class-attribute instance-attribute

RECORD_EDITED = 'record_edited' class-attribute instance-attribute

RECORD_REMOVED = 'record_removed' class-attribute instance-attribute

SKILL_ROLE_UPDATE = 'skill_role_update' class-attribute instance-attribute

VERIFICATION_APPROVED = 'verification_approved' class-attribute instance-attribute

VERIFICATION_REJECTED = 'verification_rejected' class-attribute instance-attribute

XP_GAIN = 'xp_gain' class-attribute instance-attribute

NotificationPreference

Bases: Struct

User preference for a notification type and channel.

channel: NOTIFICATION_CHANNEL instance-attribute

enabled: bool instance-attribute

event_type: NOTIFICATION_EVENT_TYPE instance-attribute

NotificationPreferencesResponse

Bases: Struct

All preferences for a user for a single event type.

channels: dict[str, bool] instance-attribute

event_type: NOTIFICATION_EVENT_TYPE instance-attribute

NotificationUnreadCountResponse

Bases: Struct

Response for unread notification count.

count: int instance-attribute

ShouldDeliverResponse

Bases: Struct

Response for should_deliver check.

should_deliver: bool instance-attribute

__all__ = ('EVENT_TYPE_DEFAULT_CHANNELS', 'NOTIFICATION_CHANNEL', 'NOTIFICATION_EVENT_TYPE', 'NotificationChannel', 'NotificationCreateRequest', 'NotificationDeliveryEvent', 'NotificationDeliveryResultRequest', 'NotificationEventResponse', 'NotificationEventType', 'NotificationPreference', 'NotificationPreferencesResponse', 'NotificationUnreadCountResponse', 'ShouldDeliverResponse') module-attribute