This commit is contained in:
2025-08-08 21:29:19 +09:00
parent 2b53b8cd3d
commit db5e174dd4
29 changed files with 235 additions and 208 deletions
-14
View File
@@ -1,14 +0,0 @@
import { existsSync, writeFileSync } from "fs";
const initialData = {} as
{ [key: string]: string | undefined };
export default function BirthdayDataSet() {
if (!existsSync("data/birthdays.json")) {
writeFileSync(
"data/birthdays.json",
JSON.stringify(initialData),
"utf-8",
);
}
}
-56
View File
@@ -1,56 +0,0 @@
import { readFileSync } from "fs";
import { isSameDay, format, differenceInYears } from "date-fns/fp";
import config from "../config.js";
export default async function birthdayNotice() {
// 読み込み
const birthdays: { [key: string]: string | undefined } =
JSON.parse(readFileSync("data/birthdays.json", "utf-8"));
// 配列化
const birthdaysIndex: string[] = Object.entries(birthdays)
.map(([key, value]) => value)
.filter(value => value !== undefined) as string[];
// 初期値
const resultInitial: string = `
【今日誕生日の人】\n`;
let result = resultInitial;
for (let i = 0; i < Object.keys(birthdays).length; i++) {
const birthday = format(birthdaysIndex[i], "yyyy/MM/dd")
if (isSameDay(birthday, new Date())) {
const age = differenceInYears(new Date(), birthday);
const req = await fetch(`https://${config.uwuzu.host}/api/users/`, {
method: "POST",
body: JSON.stringify({
token: config.uwuzu.apiToken,
userid: Object.keys(birthdays)[i],
}),
});
const res = await req.json();
result+= `${res.username}さん(${age}歳)\n`
}
}
if (result === resultInitial) {
return;
}
const req = await fetch(`https://${config.uwuzu.host}/api/ueuse/create`, {
method: "POST",
body: JSON.stringify({
token: config.uwuzu.apiToken,
text: result,
}),
});
const res = await req.json();
console.log("誕生日お知らせ:", res);
}
-88
View File
@@ -1,88 +0,0 @@
import { ueuse } from "types/types";
import { readFileSync, writeFileSync, existsSync } from "fs";
import { parse, isValid } from 'date-fns/fp';
import { Reply } from "./main.js";
function normalizedString(Str: string) {
return Str.replace(/[\u3000-\u303F]+/g, ' ')
.replace(/[\uFF01-\uFF0F]+/g, '0-9')
.replace(/[\u3001-\u3002]+/g, '/');
}
function isValidDateString(dateString: string) {
const normalizedStr = normalizedString(dateString);
const regex = /^\d{4}\/\d{2}\/\d{2}$/;
if (!regex.test(normalizedStr)) {
return false;
}
const parseString = parse(new Date(), 'yyyy/MM/dd');
return isValid(parseString(normalizedStr));
}
export default function Birthday(data: ueuse) {
// 読み込み
const birthdays: { [key: string]: string | undefined } =
JSON.parse(readFileSync("data/birthdays.json", "utf-8"));
if (
(data.abi === "none" ||
data.abi === "") &&
birthdays[data.account.userid] === undefined
) {
Reply(`
追記に誕生日を入力してください
(このユーズはもう利用できません。他のユーズで\`/birthday\`をまたご利用ください。)
`, data.uniqid);
return;
}
if (
data.abi === "delete" &&
birthdays[data.account.userid] !== undefined
) {
birthdays[data.account.userid] = undefined;
writeFileSync(
"data/birthdays.json",
JSON.stringify(birthdays),
"utf-8",
);
Reply(`
誕生日のデータを削除しました
`, data.uniqid);
return;
}
if (
data.abi === "delete" &&
birthdays[data.account.userid] === undefined
) {
Reply(`
誕生日のデータが存在しないため削除できません
`, data.uniqid);
return;
}
if (!isValidDateString(data.abi)) {
Reply(`
誕生日の形式が違います。
yyyy/MM/ddの形式で入力してください。
スラッシュ・数字は全角での使用が可能です。
(このユーズはもう利用できません。他のユーズで\`/birthday\`をまたご利用ください。)
`, data.uniqid);
return;
}
birthdays[data.account.userid] = normalizedString(data.abi);
writeFileSync(
"data/birthdays.json",
JSON.stringify(birthdays),
"utf-8",
);
Reply(`
${data.account.username}さんの誕生日を${normalizedString(data.abi)}に設定しました
`, data.uniqid);
}
+1 -1
View File
@@ -3,7 +3,7 @@ import config from "../../config.js";
import { Reply } from "./main.js";
export default async function Follow(data: ueuse) {
const followReq = await fetch(`https://${config.uwuzu.host}/api/users/follow`, {
const followReq = await fetch(`${config.uwuzu.host}/api/users/follow`, {
method: "POST",
body: JSON.stringify({
token: config.uwuzu.apiToken,
-7
View File
@@ -9,7 +9,6 @@ const helpsMin = {
"unfollow": "コマンド送信者をフォロー解除します。",
"weather": "天気を返信します。",
"report": "運営者に不具合などを報告します。",
"birthday": "誕生日を設定・削除できます。",
"legal terms": "利用規約を返信します。",
"legal privacy": "プライバシーポリシーを返信します。",
} as { [key: string]: string };
@@ -41,12 +40,6 @@ const helpsFull = {
運営者によって有効化されていないと使用できません。
\`/report\`を使用してそのユーズの追記に内容を入力することで使用できます。
`,
"birthday": `
誕生日を設定できます。
設定された誕生日の7:00に祝われます。
追記にyyyy/MM/ddの形式で誕生日を入力することで誕生日を設定できます。
また、追記に\`delete\`と入力することで誕生日のデータを削除できます。
`,
"legal terms": `
利用規約を返信します。
`,
+6 -6
View File
@@ -11,7 +11,6 @@ import UnFollow from "./unfollow.js";
import Weather from "./weather.js";
import Help from "./help.js";
import Report from "./report.js";
import Birthday from "./birthday.js";
import Terms from "./legal/terms.js"
import PrivacyPolicy from "./legal/privacy.js";
@@ -38,7 +37,7 @@ function cutAfterChar(str: string, char: string) {
}
export async function Reply(text: string, reply: string) {
const req = await fetch(`https://${config.uwuzu.host}/api/ueuse/create`, {
const req = await fetch(`${config.uwuzu.host}/api/ueuse/create`, {
method: "POST",
body: JSON.stringify({
token: config.uwuzu.apiToken,
@@ -65,7 +64,7 @@ function alreadyAdd(data: string) {
export default async function Commands() {
const mentionsReq = await fetch(
`https://${config.uwuzu.host}/api/ueuse/mentions`, {
`${config.uwuzu.host}/api/ueuse/mentions`, {
method: "POST",
body: JSON.stringify({
token: config.uwuzu.apiToken,
@@ -84,6 +83,10 @@ export default async function Commands() {
const data = mentions[key];
// 除外ユーズ
if (data.text === undefined) {
break;
}
if (alreadyCommands.indexOf(data.uniqid) !== -1) {
break;
}
@@ -130,9 +133,6 @@ export default async function Commands() {
case "weather":
Weather(data);
break;
case "birthday":
Birthday(data);
break;
default:
const reply = await Reply(`
不明なコマンドです。
+1 -1
View File
@@ -48,7 +48,7 @@ export default async function Report(data: ueuse) {
【報告】
BOT管理者さん、noticeUwuzu自動送信メールです。
@${data.account.userid}@${config.uwuzu.host}から/reportコマンドを利用した報告がありました。
報告元ユーズ:https://${config.uwuzu.host}/!${data.uniqid}
報告元ユーズ:${config.uwuzu.host}/!${data.uniqid}
下記が内容となります。
${data.abi}
`,
+1 -1
View File
@@ -3,7 +3,7 @@ import config from "../../config.js";
import { Reply } from "./main.js";
export default async function UnFollow(data: ueuse) {
const unfollowReq = await fetch(`https://${config.uwuzu.host}/api/users/unfollow`, {
const unfollowReq = await fetch(`${config.uwuzu.host}/api/users/unfollow`, {
method: "POST",
body: JSON.stringify({
token: config.uwuzu.apiToken,
+1 -1
View File
@@ -485,7 +485,7 @@ async function event(earthquakeInfo: any): Promise<void> {
}
async function ueuse(text: string) {
const res = await fetch(`https://${config.uwuzu.host}/api/ueuse/create`, {
const res = await fetch(`${config.uwuzu.host}/api/ueuse/create`, {
method: "POST",
body: JSON.stringify({
token: config.uwuzu.apiToken,
+30
View File
@@ -0,0 +1,30 @@
import { format } from "date-fns";
import eventdays from "./eventdayData.js";
import config from "../config.js";
export default async function EventDays() {
const now = format(new Date(), "MM/dd");
for (let i = 0; i < Object.keys(eventdays).length; i++) {
const day = Object.keys(eventdays)[i];
const value = Object.values(eventdays)[i];
const name = value.name;
const message = value.message;
if (day === now) {
const req = await fetch(`${config.uwuzu.host}/api/ueuse/create`, {
method: "POST",
body: JSON.stringify({
token: config.uwuzu.apiToken,
text:
`今日は${name}です
${message}`,
}),
});
const res = await req.json();
console.log("祝日等ユーズ:", res);
}
}
}
+70
View File
@@ -0,0 +1,70 @@
interface eventdaysValue {
name: string;
message: string;
}
const eventdays = {
"01/01": {
name: "元日",
message: "はい年越した瞬間地球にいなかった~",
},
"02/11": {
name: "建国記念日",
message: "建国記念日とかいう強制休暇",
},
"04/29": {
name: "昭和の日",
message: "平成の日は???",
},
"05/03": {
name: "憲法記念日",
message: "憲法決めた日とか祝日じゃなくていいだろ",
},
"05/04": {
name: "みどりの日",
message:
`なんだよみどりの日って
単色全部作れよ`,
},
"05/05": {
name: "こどもの日",
message: "こどもの日あるならおとなの日もあっていいだろ",
},
"07/07": {
name: "七夕",
message:
`祭りでも行っとけ
どーせ開発者のLast2014は家でサーバーいじってるから`,
},
"08/11": {
name: "山の日",
message:
`空の日と山の日も作れよ
水の循環に重要な3つ`,
},
"11/03": {
name: "文化の日",
message: "ネットミームできるたびに休みになればいいのになぁ...",
},
"11/23": {
name: "勤労感謝の日",
message: "学生は神!!",
},
"12/24": {
name: "クリスマスイブ",
message:
`リア充爆破します
by 開発者`,
},
"12/25": {
name: "クリスマス",
message: `リア充爆破します(2回目)
by 開発者`,
},
"12/31": {
name: "大晦日",
message: "大掃除!!大掃除!!",
},
} as { [key: string]: eventdaysValue };
export default eventdays;
+1 -1
View File
@@ -28,7 +28,7 @@ export default async function timeNotice() {
} else {
// 投稿
const resUeuse = await fetch(
`https://${config.uwuzu.host}/api/ueuse/create`,
`${config.uwuzu.host}/api/ueuse/create`,
{
method: "POST",
body: JSON.stringify({
+2 -2
View File
@@ -9,7 +9,7 @@ export async function weatherNotice() {
// 仮投稿
const resUeuse = await fetch(
`https://${config.uwuzu.host}/api/ueuse/create`,
`${config.uwuzu.host}/api/ueuse/create`,
{
method: "POST",
body: JSON.stringify({
@@ -107,7 +107,7 @@ export async function weatherReply(uniqid: string) {
// 分割投稿
for (let i = 0; i < splitCount; i++) {
const resReply = await fetch(
`https://${config.uwuzu.host}/api/ueuse/create`,
`${config.uwuzu.host}/api/ueuse/create`,
{
method: "POST",
body: JSON.stringify({