3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-06-06 15:45:03 +00:00

Add time_and_date plugin. Use it for timezones and date formats around the bot.

This commit is contained in:
Dragory 2020-08-19 00:19:12 +03:00
parent 6e41bc53f6
commit 6ba56a3f12
67 changed files with 543 additions and 177 deletions

View file

@ -0,0 +1,6 @@
import { PluginData } from "knub";
import { defaultDateFormats } from "../defaultDateFormats";
export function getDateFormat(pluginData: PluginData<any>, formatName: keyof typeof defaultDateFormats) {
return pluginData.config.get().date_formats?.[formatName] || defaultDateFormats[formatName];
}

View file

@ -0,0 +1,7 @@
import { PluginData } from "knub";
import { ZeppelinGuildConfig } from "../../../types";
import { TimeAndDatePluginType } from "../types";
export function getGuildTz(pluginData: PluginData<TimeAndDatePluginType>) {
return pluginData.config.get().timezone;
}

View file

@ -0,0 +1,8 @@
import { PluginData } from "knub";
import { TimeAndDatePluginType } from "../types";
import { getGuildTz } from "./getGuildTz";
export async function getMemberTz(pluginData: PluginData<TimeAndDatePluginType>, memberId: string) {
const memberTz = await pluginData.state.memberTimezones.get(memberId);
return memberTz?.timezone || getGuildTz(pluginData);
}

View file

@ -0,0 +1,17 @@
import { PluginData } from "knub";
import { TimeAndDatePluginType } from "../types";
import moment from "moment-timezone";
import { getGuildTz } from "./getGuildTz";
export function inGuildTz(pluginData: PluginData<TimeAndDatePluginType>, input?: moment.Moment | number) {
let momentObj: moment.Moment;
if (typeof input === "number") {
momentObj = moment.utc(input, "x");
} else if (moment.isMoment(input)) {
momentObj = input.clone();
} else {
momentObj = moment.utc();
}
return momentObj.tz(getGuildTz(pluginData));
}

View file

@ -0,0 +1,22 @@
import { PluginData } from "knub";
import { TimeAndDatePluginType } from "../types";
import moment from "moment-timezone";
import { getGuildTz } from "./getGuildTz";
import { getMemberTz } from "./getMemberTz";
export async function inMemberTz(
pluginData: PluginData<TimeAndDatePluginType>,
memberId: string,
input?: moment.Moment | number,
) {
let momentObj: moment.Moment;
if (typeof input === "number") {
momentObj = moment.utc(input, "x");
} else if (moment.isMoment(input)) {
momentObj = input.clone();
} else {
momentObj = moment.utc();
}
return momentObj.tz(await getMemberTz(pluginData, memberId));
}