You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
1.2 KiB
TypeScript

import { CommandContext, CommandOptionType, SlashCommand, SlashCreator } from 'slash-create'
import { PrismaClient } from '@prisma/client'
export default class MessagesCommand extends SlashCommand {
constructor(creator: SlashCreator) {
super(creator, {
name: 'messages',
description: 'show message count, either for yourself, or someone else',
options: [
{
name: 'user',
description: 'person to show messages for (blank shows your own)',
required: false,
type: CommandOptionType.USER
}
]
})
}
async run(ctx: CommandContext) {
const prisma = new PrismaClient()
if (ctx.options.user == null) {
const u = await prisma.user.findFirst({ where: { id: ctx.member?.id, guild: { id: ctx.guildID } } })
if (!u) return `you have no messages!`
return `you have ${u.messages} message(s)`
} else {
const uid = ctx.options.user
const u = await prisma.user.findFirst({ where: { id: uid, guild: { id: ctx.guildID } } })
if (!u) return `this user has no messages!`
const uu = await this.client.users.fetch(u.id)
return `${uu.username}#${uu.discriminator} has ${u.messages} message(s)`
}
}
}