Skip to content

Commit 422916b

Browse files
Implement rate limiting to prevent spam
Implement rate limiting to prevent spam
2 parents de9891d + 2ebb1aa commit 422916b

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

src/AmbienceChat.sol

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)