fish-station/Content.Shared/_Sunrise/Messenger/MessengerMessage.cs
2026-01-30 06:27:41 +01:00

70 lines
2.2 KiB
C#

using Content.Shared.StatusIcon;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared._Sunrise.Messenger;
/// <summary>
/// Сообщение в мессенджере
/// </summary>
[Serializable, NetSerializable]
public sealed class MessengerMessage
{
/// <summary>
/// ID отправителя
/// </summary>
public string SenderId { get; set; }
/// <summary>
/// Имя отправителя
/// </summary>
public string SenderName { get; set; }
/// <summary>
/// Текст сообщения
/// </summary>
public string Content { get; set; }
/// <summary>
/// Время отправки (относительно начала раунда)
/// </summary>
public TimeSpan Timestamp { get; set; }
/// <summary>
/// ID группы (null для личных сообщений)
/// </summary>
public string? GroupId { get; set; }
/// <summary>
/// ID получателя (null для групповых сообщений)
/// </summary>
public string? RecipientId { get; set; }
/// <summary>
/// Прочитано ли сообщение получателем (только для личных сообщений)
/// </summary>
public bool IsRead { get; set; }
/// <summary>
/// Уникальный идентификатор сообщения
/// </summary>
public long MessageId { get; set; }
/// <summary>
/// ID иконки роли отправителя (опционально)
/// </summary>
public ProtoId<JobIconPrototype>? SenderJobIconId { get; set; }
public MessengerMessage(string senderId, string senderName, string content, TimeSpan timestamp, string? groupId = null, string? recipientId = null, bool isRead = false, long messageId = 0, ProtoId<JobIconPrototype>? senderJobIconId = null)
{
SenderId = senderId;
SenderName = senderName;
Content = content;
Timestamp = timestamp;
GroupId = groupId;
RecipientId = recipientId;
IsRead = isRead;
MessageId = messageId;
SenderJobIconId = senderJobIconId;
}
}