chipmunkbot3/commands/mail.js
2024-02-11 21:23:41 -05:00

50 lines
2 KiB
JavaScript

const name = 'mail'
const description = 'Shows mail.'
const usages = ['send <username> <message>', 'list', 'clear']
const aliases = ['mail']
const enabled = true
const permLevel = 0
const nbt = require('prismarine-nbt')
const SNBT = require('../util/snbt.js')
const toNBTUUID = require('../util/uuid-to-nbt-uuid.js')
function execute (bot, cmd, player, args, handler) {
const subCmd = args.shift()
let u, message, messages, msg
switch (subCmd) {
case 'send':
u = args.shift()
message = args.join(' ')
bot.sendMail(player.name, bot.players[u].name ?? u, message)
bot.core.run(`minecraft:tellraw @a[nbt=${SNBT.stringify(nbt.comp({ UUID: toNBTUUID(player.UUID) }))}] ${JSON.stringify([
{ text: 'Sent ', color: bot.colors.primary },
{ text: message, color: bot.colors.secondary },
' to ',
{ text: u, color: bot.colors.secondary },
'.'
])}`)
break
case 'list':
messages = bot.mail[player.name]
if (!messages || messages.length < 1) return bot.core.run(`minecraft:tellraw @a[nbt=${SNBT.stringify(nbt.comp({ UUID: toNBTUUID(player.UUID) }))}] ${JSON.stringify({ text: 'You have no mail', color: bot.colors.primary })}`)
msg = [{ text: 'Mail:\n', color: bot.colors.primary }]
messages.forEach((message) => {
msg.push(`${message.sender} (from ${message.host}): `)
msg.push({ text: `${message.message}\n`, color: bot.colors.secondary })
})
msg[msg.length - 1].text = msg[msg.length - 1].text.slice(0, -1)
bot.core.run(`minecraft:tellraw @a[nbt=${SNBT.stringify(nbt.comp({ UUID: toNBTUUID(player.UUID) }))}] ${JSON.stringify(msg)}`)
break
case 'clear':
bot.mail[player.name] = []
bot.core.run(`minecraft:tellraw @a[nbt=${SNBT.stringify(nbt.comp({ UUID: toNBTUUID(player.UUID) }))}] ${JSON.stringify([
{ text: 'Your mail has been cleared.', color: bot.colors.primary }
])}`)
}
}
module.exports = { name, description, usages, aliases, enabled, execute, permLevel }