feat: Implement is_deleted flag for items, add new utility scripts, and refine UI styles.

This commit is contained in:
x
2026-01-24 17:24:22 +01:00
parent ee416a1d08
commit 63e86e9be1
9 changed files with 265 additions and 145 deletions

View File

@@ -30,22 +30,21 @@ export default async bot => {
f: async e => {
logger.info(`${e.network} -> ${e.channel} -> ${e.user.nick}: ${e.message}`);
let [ cmd, id ] = e.opt.data.split(':');
let [cmd, id] = e.opt.data.split(':');
let f0ck;
id = +id;
if(cmd.startsWith('b_settag_')) {
if (cmd.startsWith('b_settag_')) {
const tagid = +cmd.replace('b_settag_', '');
if(!(await lib.getTags(id)).filter(tag => tag.id == tagid).length) {
if (!(await lib.getTags(id)).filter(tag => tag.id == tagid).length) {
// insert
await db`
insert into "tags_assign" ${
db({
item_id: id,
tag_id: tagid,
user_id: 1
})
insert into "tags_assign" ${db({
item_id: id,
tag_id: tagid,
user_id: 1
})
}
`;
}
@@ -71,9 +70,9 @@ export default async bot => {
});
}
switch(cmd) {
switch (cmd) {
case "b_tags":
if(!id)
if (!id)
return;
const keyboard = await tagkeyboard(id);
@@ -87,9 +86,9 @@ export default async bot => {
]]
})
});
break;
break;
case "b_back":
if(!id)
if (!id)
return;
await e.editMessageText(e.raw.chat.id, e.raw.message_id, e.message, {
@@ -104,24 +103,23 @@ export default async bot => {
]]
})
});
break;
break;
case "b_sfw":
if(!id)
if (!id)
return;
if(!await lib.hasTag(id, 1)) {
if (!await lib.hasTag(id, 1)) {
// insert
await db`
insert into "tags_assign" ${
db({
item_id: id,
tag_id: 1, // sfw
user_id: 1
})
insert into "tags_assign" ${db({
item_id: id,
tag_id: 1, // sfw
user_id: 1
})
}
`;
if(await lib.hasTag(id, 2)) {
if (await lib.hasTag(id, 2)) {
await db`
delete from "tags_assign"
where tag_id = 2
@@ -151,23 +149,22 @@ export default async bot => {
})
});
break;
break;
case "b_nsfw":
if(!id)
if (!id)
return;
if(!await lib.hasTag(id, 2)) {
if (!await lib.hasTag(id, 2)) {
// insert
await db`
insert into "tags_assign" ${
db({
item_id: id,
tag_id: 2, // nsfw
user_id: 1
})
insert into "tags_assign" ${db({
item_id: id,
tag_id: 2, // nsfw
user_id: 1
})
}
`;
if(await lib.hasTag(id, 1)) {
if (await lib.hasTag(id, 1)) {
await db`
delete from "tags_assign"
where tag_id = 1
@@ -196,9 +193,9 @@ export default async bot => {
]]
})
});
break;
break;
case "b_delete":
if(id <= 1)
if (id <= 1)
return;
e.user = {
@@ -218,33 +215,33 @@ export default async bot => {
`;
const level = getLevel(e.user).level;
if(f0ck.length === 0) {
if (f0ck.length === 0) {
return await e.reply(`f0ck ${id}: f0ck not found`);
}
if(
if (
(f0ck[0].username !== (e.user.nick || e.user.username) ||
f0ck[0].userchannel !== e.channel ||
f0ck[0].usernetwork !== e.network) &&
f0ck[0].userchannel !== e.channel ||
f0ck[0].usernetwork !== e.network) &&
level < 100
) {
return await e.reply(`f0ck ${id}: insufficient permissions`);
}
if(~~(new Date() / 1e3) >= (f0ck[0].stamp + 600) && level < 100) {
if (~~(new Date() / 1e3) >= (f0ck[0].stamp + 600) && level < 100) {
return await e.reply(`f0ck ${id}: too late lol`);
}
await db`update "items" set active = 'false' where id = ${id}`;
await db`update "items" set active = 'false', is_deleted = true where id = ${id}`;
await fs.copyFile(`./public/b/${f0ck[0].dest}`, `./deleted/b/${f0ck[0].dest}`).catch(_=>{});
await fs.copyFile(`./public/t/${id}.webp`, `./deleted/t/${id}.webp`).catch(_=>{});
await fs.unlink(`./public/b/${f0ck[0].dest}`).catch(_=>{});
await fs.unlink(`./public/t/${id}.webp`).catch(_=>{});
await fs.copyFile(`./public/b/${f0ck[0].dest}`, `./deleted/b/${f0ck[0].dest}`).catch(_ => { });
await fs.copyFile(`./public/t/${id}.webp`, `./deleted/t/${id}.webp`).catch(_ => { });
await fs.unlink(`./public/b/${f0ck[0].dest}`).catch(_ => { });
await fs.unlink(`./public/t/${id}.webp`).catch(_ => { });
if(f0ck[0].mime.startsWith('audio')) {
await fs.copyFile(`./public/ca/${id}.webp`, `./deleted/ca/${id}.webp`).catch(_=>{});
await fs.unlink(`./public/ca/${id}.webp`).catch(_=>{});
if (f0ck[0].mime.startsWith('audio')) {
await fs.copyFile(`./public/ca/${id}.webp`, `./deleted/ca/${id}.webp`).catch(_ => { });
await fs.unlink(`./public/ca/${id}.webp`).catch(_ => { });
}
await e.editMessageText(e.raw.chat.id, e.raw.message_id, e.message, {
@@ -259,9 +256,9 @@ export default async bot => {
]]
})
});
break;
break;
case "b_recover":
if(id <= 1)
if (id <= 1)
return;
e.user = {
@@ -270,7 +267,7 @@ export default async bot => {
username: e.raw.reply_to_message.from.username,
account: e.raw.reply_to_message.from.id.toString()
};
f0ck = await db`
select dest, mime
from "items"
@@ -279,23 +276,23 @@ export default async bot => {
active = 'false'
limit 1
`;
if(f0ck.length === 0) {
if (f0ck.length === 0) {
return await e.reply(`f0ck ${id}: f0ck not found`);
}
await fs.copyFile(`./deleted/b/${f0ck[0].dest}`, `./public/b/${f0ck[0].dest}`).catch(_=>{});
await fs.copyFile(`./deleted/t/${id}.webp`, `./public/t/${id}.webp`).catch(_=>{});
await fs.unlink(`./deleted/b/${f0ck[0].dest}`).catch(_=>{});
await fs.unlink(`./deleted/t/${id}.webp`).catch(_=>{});
if(f0ck[0].mime.startsWith('audio')) {
await fs.copyFile(`./deleted/ca/${id}.webp`, `./public/ca/${id}.webp`).catch(_=>{});
await fs.unlink(`./deleted/ca/${id}.webp`).catch(_=>{});
await fs.copyFile(`./deleted/b/${f0ck[0].dest}`, `./public/b/${f0ck[0].dest}`).catch(_ => { });
await fs.copyFile(`./deleted/t/${id}.webp`, `./public/t/${id}.webp`).catch(_ => { });
await fs.unlink(`./deleted/b/${f0ck[0].dest}`).catch(_ => { });
await fs.unlink(`./deleted/t/${id}.webp`).catch(_ => { });
if (f0ck[0].mime.startsWith('audio')) {
await fs.copyFile(`./deleted/ca/${id}.webp`, `./public/ca/${id}.webp`).catch(_ => { });
await fs.unlink(`./deleted/ca/${id}.webp`).catch(_ => { });
}
await db`update "items" set active = 'true' where id = ${id}`;
await e.editMessageText(e.raw.chat.id, e.raw.message_id, e.message, {
reply_markup: JSON.stringify({
inline_keyboard: [[
@@ -308,7 +305,7 @@ export default async bot => {
]]
})
});
break;
break;
default:
await e.reply('lol');
}