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:
parent
cffb0dbd6b
commit
4ae8cf85a3
67 changed files with 543 additions and 177 deletions
|
@ -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];
|
||||
}
|
7
backend/src/plugins/TimeAndDate/functions/getGuildTz.ts
Normal file
7
backend/src/plugins/TimeAndDate/functions/getGuildTz.ts
Normal 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;
|
||||
}
|
8
backend/src/plugins/TimeAndDate/functions/getMemberTz.ts
Normal file
8
backend/src/plugins/TimeAndDate/functions/getMemberTz.ts
Normal 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);
|
||||
}
|
17
backend/src/plugins/TimeAndDate/functions/inGuildTz.ts
Normal file
17
backend/src/plugins/TimeAndDate/functions/inGuildTz.ts
Normal 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));
|
||||
}
|
22
backend/src/plugins/TimeAndDate/functions/inMemberTz.ts
Normal file
22
backend/src/plugins/TimeAndDate/functions/inMemberTz.ts
Normal 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));
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue