3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-19 07:20:00 +00:00
zeppelin/backend/src/plugins/TimeAndDate/commands/SetTimezoneCmd.ts

35 lines
1.2 KiB
TypeScript
Raw Normal View History

import { timeAndDateCmd } from "../types";
import { commandTypeHelpers as ct } from "../../../commandTypes";
import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
import { isValidTimezone } from "../../../utils/isValidTimezone";
import { disableInlineCode, trimLines } from "../../../utils";
import { parseFuzzyTimezone } from "../../../utils/parseFuzzyTimezone";
export const SetTimezoneCmd = timeAndDateCmd({
trigger: "timezone",
permission: "can_set_timezone",
signature: {
timezone: ct.string(),
},
async run({ pluginData, message, args }) {
const parsedTz = parseFuzzyTimezone(args.timezone);
if (!parsedTz) {
sendErrorMessage(
pluginData,
message.channel,
trimLines(`
Invalid timezone: \`${disableInlineCode(args.timezone)}\`
Zeppelin uses timezone locations rather than specific timezone names.
See the **TZ database name** column at <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones> for a list of valid options.
`),
);
return;
}
await pluginData.state.memberTimezones.set(message.author.id, parsedTz);
sendSuccessMessage(pluginData, message.channel, `Your timezone is now set to **${parsedTz}**`);
},
});