3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-14 22:05:01 +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 cffb0dbd6b
commit 4ae8cf85a3
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
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));
}