mirror of
https://gitlab.com/qwerinope/qweribot.git
synced 2026-02-04 06:26:59 +01:00
47 lines
1.4 KiB
TypeScript
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!,
|
|
}),
|
|
]);
|
|
},
|
|
});
|