Files
qweribot/src/cheers/grenade.ts

47 lines
1.4 KiB
TypeScript

import { Cheer, handleNoTarget } from "cheers";
import {
createCompensatedItemCheer,
createTimeoutEventCheer,
} from "db/CheerEvents";
import { getUserRecord } from "db/dbUser";
import { sendMessage } from "lib/commandUtils";
import { redis } from "lib/redis";
import { timeout } from "lib/timeout";
import User from "user";
import { playAlert } from "web/alerts/serverFunctions";
const ITEMNAME = "grenade";
export default new Cheer({
name: "grenade",
amount: 99,
isItem: true,
async execute(msg, user) {
const targets = await redis.keys(`user:*:vulnerable`);
if (targets.length === 0) {
await sendMessage("No vulnerable chatters to blow up!", msg.messageId);
const compensated = await handleNoTarget(msg, user, ITEMNAME, true);
if (compensated) await createCompensatedItemCheer(user, ITEMNAME);
return;
}
const selection = targets[Math.floor(Math.random() * targets.length)]!;
const target = await User.initUserId(selection.slice(5, -11));
await getUserRecord(target!); // make sure the user record exist in the database
await Promise.all([
timeout(target!, `You got hit by ${user.displayName}'s grenade!`, 60),
redis.del(selection),
sendMessage(
`wybuh ${target?.displayName} got hit by ${user.displayName}'s grenade wybuh`,
),
createTimeoutEventCheer(user, target!, "grenade"),
playAlert({
name: "grenadeExplosion",
user: user.displayName,
target: target?.displayName!,
}),
]);
},
});