new bridge nick format

This commit is contained in:
osmarks 2024-11-18 16:45:11 +00:00
parent 3a6c14961a
commit 5c82d5e50e

View File

@ -144,20 +144,20 @@ const singularizer = deriveLLMMapping(PLURALS.map(([a, b]) => ([b, a])), SINGULA
const renderItem = async x => x.quantity === 1 ? x.thing : `${x.quantity} ${await pluralizer(x.thing)}`
client.addListener("message", async (nick, channel, message, ev) => {
const e = /^<([^>]+)> (.*)$/.exec(message)
const e = /^(?:<([^>]+)>|\x03\d{1,2}([^\[]+)\[[a-z]\]:\x0f) (.*)$/.exec(message)
if (e) {
nick = e[1]
message = e[2]
nick = e[1] || e[2]
message = e[3]
}
const allStatsRaw = SQL`SELECT * FROM stats`.all().map(x => [x.stat, x.value])
const origStats = new Map(allStatsRaw)
const allStats = new Map(allStatsRaw)
allStats.set("messages", (allStats.get("messages") ?? 0) + 1)
const res = /^([A-Za-z0-9_-]+)[:, ]*([A-Za-z0-9_-]+) *(.*)$/.exec(message)
const uniqueUsersCounter = allStats.get("users") ? HyperLogLog.deserialize(allStats.get("users")) : new HyperLogLog({ hasherId: "jenkins32", precision: 5 })
const uniqueUsersCounter = allStats.get("users") ? HyperLogLog.deserialize(allStats.get("users")) : new HyperLogLog({ hasherId: "jenkins32", precision: 5 })
uniqueUsersCounter.add(nick)
allStats.set("users", uniqueUsersCounter.serialize())
const uniqueMessagesCounter = allStats.get("uniqueMessages") ? HyperLogLog.deserialize(allStats.get("uniqueMessages")) : new HyperLogLog({ hasherId: "jenkins32", precision: 5 })
const uniqueMessagesCounter = allStats.get("uniqueMessages") ? HyperLogLog.deserialize(allStats.get("uniqueMessages")) : new HyperLogLog({ hasherId: "jenkins32", precision: 5 })
uniqueMessagesCounter.add(message)
allStats.set("uniqueMessages", uniqueMessagesCounter.serialize())
if (res) {
@ -169,9 +169,9 @@ client.addListener("message", async (nick, channel, message, ev) => {
console.log(nick, cmd, channel)
allStats.set("commands", (allStats.get("commands") ?? 0) + 1)
if (cmd === "starch") {
client.say(channel, `Starch exists (${Math.random() * 20 + 80}% confidence).`)
client.say(channel, `Starch has been cancelled. We apologize to our valued customers for any inconvenience this may have caused.`)
} else if (cmd === "stats") {
client.say(channel, `${allStats.get("commands")} run, ${allStats.get("messages")} messages seen, about ${Math.floor(uniqueUsersCounter.count())} nicks seen, about ${Math.floor(uniqueMessagesCounter.count())} unique messages seen.`)
client.say(channel, `${allStats.get("commands")} commands run, ${allStats.get("messages")} messages seen, about ${Math.floor(uniqueUsersCounter.count())} nicks seen, about ${Math.floor(uniqueMessagesCounter.count())} unique messages seen.`)
} else if (cmd === "help") {
client.say(channel, "Nobody can help you now.")
} else if (cmd === "fortune") {
@ -214,7 +214,9 @@ client.addListener("message", async (nick, channel, message, ev) => {
}
} else if (cmd.startsWith("inv")) {
const inv = SQL`SELECT * FROM inventory ORDER BY obtained_at DESC LIMIT 10`.all()
client.say(channel, inv.map(renderItem).join("\n"))
for (const i of inv) {
client.say(channel, await renderItem(i))
}
} else if (cmd === "deploy") {
client.say(channel, `Deploying ${args}.`)
}
@ -228,7 +230,6 @@ client.addListener("message", async (nick, channel, message, ev) => {
client.say(channel, "Haiku detected!")
logEv("haiku", R.takeLast(3, mhist).join("\n"))
}
console.log(sylhist)
DB.transaction(() => {
for (const [k, v] of allStats) {