File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -57,6 +57,12 @@ contract AmbienceChat {
5757 /// @dev Counter for generating unique room IDs
5858 uint256 private roomIdCounter;
5959
60+ /// @dev Time (in seconds) a user must wait between sending messages
61+ uint256 public constant MESSAGE_COOLDOWN = 1 minutes ;
62+
63+ /// @dev Mapping to track the last message timestamp for each address
64+ mapping (address => uint256 ) public lastMessageTime;
65+
6066 /// @dev Mapping from message ID to Message struct
6167 mapping (uint256 => Message) public messages;
6268
@@ -294,6 +300,13 @@ contract AmbienceChat {
294300 function sendMessage (uint256 roomId , string calldata content ) external canAccessRoom (roomId) returns (uint256 ) {
295301 require (bytes (content).length > 0 , "Message cannot be empty " );
296302 require (bytes (content).length <= 1000 , "Message too long " );
303+ require (
304+ block .timestamp >= lastMessageTime[msg .sender ] + MESSAGE_COOLDOWN,
305+ "Cooldown period not met. Please wait before sending another message. "
306+ );
307+
308+ // Update the last message time for this sender
309+ lastMessageTime[msg .sender ] = block .timestamp ;
297310
298311 uint256 messageId = messageIdCounter++ ;
299312
You can’t perform that action at this time.
0 commit comments