TravBot-v3/src/commands/fun/modules/eco-extras.ts

79 lines
3.4 KiB
TypeScript
Raw Normal View History

import {Command, NamedCommand} from "onion-lasers";
import {Storage} from "../../../structures";
2020-12-16 07:24:26 +00:00
import {isAuthorized, getMoneyEmbed} from "./eco-utils";
2021-04-08 11:37:49 +00:00
import {User} from "discord.js";
import {pluralise} from "../../../lib";
2020-12-16 07:24:26 +00:00
const WEEKDAY = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
export const MondayCommand = new NamedCommand({
2020-12-16 07:24:26 +00:00
description: "Use this on a UTC Monday to get an extra Mon. Does not affect your 22 hour timer for `eco daily`.",
2021-04-10 13:34:55 +00:00
async run({send, guild, channel, author}) {
2020-12-16 07:24:26 +00:00
if (isAuthorized(guild, channel)) {
const user = Storage.getUser(author.id);
const now = new Date();
const weekday = now.getUTCDay();
// If it's a UTC Monday
if (weekday === 1) {
// If the user hasn't already claimed their Monday reward (checks the last 24 hours because that'll block up the entire day)
if (now.getTime() - user.lastMonday >= 86400000) {
user.money++;
user.lastMonday = now.getTime();
Storage.save();
send({content: "It is **Mon**day, my dudes.", embeds: [getMoneyEmbed(author)]});
2021-04-10 13:34:55 +00:00
} else send("You've already claimed your **Mon**day reward for this week.");
2020-12-16 07:24:26 +00:00
} else {
const weekdayName = WEEKDAY[weekday];
const hourText = now.getUTCHours().toString().padStart(2, "0");
const minuteText = now.getUTCMinutes().toString().padStart(2, "0");
2021-04-10 13:34:55 +00:00
send(
2020-12-16 07:24:26 +00:00
`Come back when it's **Mon**day. Right now, it's ${weekdayName}, ${hourText}:${minuteText} (UTC).`
);
}
}
}
});
2021-04-08 11:37:49 +00:00
export const AwardCommand = new NamedCommand({
description: "Only usable by Mon, awards one or a specified amount of Mons to the user.",
usage: "<user> (<amount>)",
aliases: ["give"],
run: "You need to specify a user!",
user: new Command({
async run({send, author, args}) {
2021-04-08 11:37:49 +00:00
if (author.id === "394808963356688394" || IS_DEV_MODE) {
const target = args[0] as User;
const user = Storage.getUser(target.id);
user.money++;
Storage.save();
send({content: `1 Mon given to ${target.username}.`, embeds: [getMoneyEmbed(target)]});
2021-04-08 11:37:49 +00:00
} else {
2021-04-10 13:34:55 +00:00
send("This command is restricted to the bean.");
2021-04-08 11:37:49 +00:00
}
},
number: new Command({
async run({send, author, args}) {
2021-04-08 11:37:49 +00:00
if (author.id === "394808963356688394" || IS_DEV_MODE) {
const target = args[0] as User;
const amount = Math.floor(args[1]);
if (amount > 0) {
const user = Storage.getUser(target.id);
user.money += amount;
Storage.save();
send({
content: `${pluralise(amount, "Mon", "s")} given to ${target.username}.`,
embeds: [getMoneyEmbed(target)]
});
2021-04-08 11:37:49 +00:00
} else {
2021-04-10 13:34:55 +00:00
send("You need to enter a number greater than 0.");
2021-04-08 11:37:49 +00:00
}
} else {
2021-04-10 13:34:55 +00:00
send("This command is restricted to the bean.");
2021-04-08 11:37:49 +00:00
}
}
})
})
});