diff --git a/src/repositories/chatRepository.ts b/src/repositories/chatRepository.ts
new file mode 100644
index 0000000..e69de29
diff --git a/src/services/chatService.ts b/src/services/chatService.ts
new file mode 100644
index 0000000..e69de29
diff --git a/src/socketEvents/chat/sendMessage.ts b/src/socketEvents/chat/message.ts
similarity index 84%
rename from src/socketEvents/chat/sendMessage.ts
rename to src/socketEvents/chat/message.ts
index c4e0f1a..4548785 100644
--- a/src/socketEvents/chat/sendMessage.ts
+++ b/src/socketEvents/chat/message.ts
@@ -4,6 +4,7 @@ import ZoneRepository from '../../repositories/zoneRepository'
 import { isCommand } from '../../utilities/chat'
 import { gameLogger } from '../../utilities/logger'
 import ZoneManager from '../../managers/zoneManager'
+import ChatService from '../../services/chatService'
 
 type TypePayload = {
   message: string
@@ -42,12 +43,12 @@ export default class ChatMessageEvent {
         return
       }
 
-      callback(true)
+      const chatService = new ChatService()
+      if (await chatService.sendZoneMessage(this.io, this.socket, data.message, character.id, zone.id)) {
+        return callback(true)
+      }
 
-      this.io.to(zone.id.toString()).emit('chat:message', {
-        character: character,
-        message: data.message
-      })
+      callback(false)
     } catch (error: any) {
       gameLogger.error('chat:send_message error', error.message)
       callback(false)