forked from pinks/eris
61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
|
import { GrammyParseMode, GrammyTypes } from "../deps.ts";
|
||
|
|
||
|
export function formatOrdinal(n: number) {
|
||
|
if (n % 100 === 11 || n % 100 === 12 || n % 100 === 13) return `${n}th`;
|
||
|
if (n % 10 === 1) return `${n}st`;
|
||
|
if (n % 10 === 2) return `${n}nd`;
|
||
|
if (n % 10 === 3) return `${n}rd`;
|
||
|
return `${n}th`;
|
||
|
}
|
||
|
|
||
|
export const fmt = (
|
||
|
rawStringParts: TemplateStringsArray | GrammyParseMode.Stringable[],
|
||
|
...stringLikes: GrammyParseMode.Stringable[]
|
||
|
): GrammyParseMode.FormattedString => {
|
||
|
let text = "";
|
||
|
const entities: GrammyTypes.MessageEntity[] = [];
|
||
|
|
||
|
const length = Math.max(rawStringParts.length, stringLikes.length);
|
||
|
for (let i = 0; i < length; i++) {
|
||
|
for (const stringLike of [rawStringParts[i], stringLikes[i]]) {
|
||
|
if (stringLike instanceof GrammyParseMode.FormattedString) {
|
||
|
entities.push(
|
||
|
...stringLike.entities.map((e) => ({
|
||
|
...e,
|
||
|
offset: e.offset + text.length,
|
||
|
})),
|
||
|
);
|
||
|
}
|
||
|
if (stringLike != null) text += stringLike.toString();
|
||
|
}
|
||
|
}
|
||
|
return new GrammyParseMode.FormattedString(text, entities);
|
||
|
};
|
||
|
|
||
|
export function formatUserChat(ctx: { from?: GrammyTypes.User; chat?: GrammyTypes.Chat }) {
|
||
|
const msg: string[] = [];
|
||
|
if (ctx.from) {
|
||
|
msg.push(ctx.from.first_name);
|
||
|
if (ctx.from.last_name) msg.push(ctx.from.last_name);
|
||
|
if (ctx.from.username) msg.push(`(@${ctx.from.username})`);
|
||
|
if (ctx.from.language_code) msg.push(`(${ctx.from.language_code.toUpperCase()})`);
|
||
|
}
|
||
|
if (ctx.chat) {
|
||
|
if (
|
||
|
ctx.chat.type === "group" ||
|
||
|
ctx.chat.type === "supergroup" ||
|
||
|
ctx.chat.type === "channel"
|
||
|
) {
|
||
|
msg.push("in");
|
||
|
msg.push(ctx.chat.title);
|
||
|
if (
|
||
|
(ctx.chat.type === "supergroup" || ctx.chat.type === "channel") &&
|
||
|
ctx.chat.username
|
||
|
) {
|
||
|
msg.push(`(@${ctx.chat.username})`);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return msg.join(" ");
|
||
|
}
|