forked from mirrors/misskey
2
Filter Policy used on Comfy.Social
Peter Cai edited this page 2024-02-19 03:22:58 +01:00
const MIN_ACCOUNT_AGE = 24 * 60 * 60 * 1000; // 1d
function userCreatedAt(context, user) {
const ret = context.idService.parse(user.id).date;
console.log(`user ${user.username} created at ${ret.getTime()}`);
return ret;
}
function isUserOldEnough(context, user) {
const sinceCreatedMillis = new Date().getTime() - userCreatedAt(context, user).getTime();
console.log(`isUserOldEnough sinceCreatedMillis = ${sinceCreatedMillis}`)
return sinceCreatedMillis >= MIN_ACCOUNT_AGE;
}
function isUserOldEnoughAtPost(context, user) {
if (context.data.createdAt == null) return false;
const sinceCreatedMillis = context.data.createdAt.getTime() - userCreatedAt(context, user).getTime();
console.log(`isUserOldEnoughAtPost sinceCreatedMillis = ${sinceCreatedMillis}`)
return sinceCreatedMillis >= MIN_ACCOUNT_AGE;
}
export default async function (context) {
if (context.user.host === null) {
// Local users are always exempted for now
return { verdict: false }
}
const willCauseNotification = (context.mentionedUsers.filter(u => u.host === null).length > 0
|| context.data.reply?.userHost === null || context.data.renote?.userHost === null);
if (willCauseNotification) {
const userEntity = await context.remoteUserResolveService.resolveUser(context.user.username, context.user.host);
if ((userEntity?.followersCount ?? 0) === 0 && !(isUserOldEnough(context, userEntity) && isUserOldEnoughAtPost(context, userEntity))) {
return { verdict: true, reason: "User has no local followers, was created within the last 24 hours but mentions local users" }
}
}
return { verdict: false }
}