add chat queue

This commit is contained in:
1e99 2025-07-21 20:33:44 +02:00
parent 3b40fabb5c
commit 2841183fd3

View file

@ -1,25 +1,30 @@
import EventEmitter from "node:events"
import prismarineChat, { processNbtMessage } from "prismarine-chat"
// TODO: Chat queue
export default class Chat extends EventEmitter {
#client
#chat
#patterns
#queue
#sendInterval
constructor(client) {
super()
this.#client = client
this.#chat = prismarineChat(client.version)
this.#patterns = new Map()
this.#queue = []
this.#client.addListener("system_chat", this.#systemChat.bind(this))
this.#sendInterval = setInterval(this.#sendMessage.bind(this), 1_000)
this.#client.addListener("end", () => clearInterval(this.#sendInterval))
}
chat(message) {
this.#client.chat(message)
this.#queue.push(message)
// this.#client.chat(message)
}
addPattern(name, regexp) {
@ -49,4 +54,17 @@ export default class Chat extends EventEmitter {
this.emit(`chat:${name}`, ...match)
}
}
#sendMessage() {
if (this.#client.chat === undefined) {
return
}
const message = this.#queue.shift()
if (message === undefined) {
return
}
this.#client.chat(message)
}
}