From 08de89640ed75d0a481a7b601eab289999cd65aa Mon Sep 17 00:00:00 2001 From: Sebastian Pietschner Date: Sun, 9 Oct 2022 19:51:05 +0000 Subject: [PATCH] filter presence --- src/classes/Secondary.ts | 20 +++----------------- src/utils/activity.ts | 8 ++++---- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/src/classes/Secondary.ts b/src/classes/Secondary.ts index 9459bab..7ab2cc2 100644 --- a/src/classes/Secondary.ts +++ b/src/classes/Secondary.ts @@ -1,11 +1,11 @@ // eslint-disable-next-line import/no-cycle +import channelActivities from '@/utils/activity'; import updatePresence from '@/utils/presence'; import db from '@db'; import { PrismaClientKnownRequestError } from '@prisma/client/runtime/index.js'; import formatChannelName from '@utils/format'; import signaleLogger from '@utils/logger'; import { - ActivityType, ChannelType, Client, DiscordAPIError, @@ -53,14 +53,7 @@ export default class DynamicaSecondary { where: { guildId: guild.id }, }); - const activities = primary.members - .filter((listMember) => listMember.presence.activities.length > 0) - .filter((listMember) => !listMember.user.bot) - .map((listMember) => listMember.presence.activities) - .flat() - .filter((activity) => activity.type !== ActivityType.Custom) - .filter((activity) => activity.type !== ActivityType.Listening) - .map((activity) => activity.name); + const activities = channelActivities(primary); const primaryPrisma = await db.primary.findUnique({ where: { id: primary.id }, @@ -170,14 +163,7 @@ export default class DynamicaSecondary { /** * The activities list minus stuff that should be ignored like Spotify and Custom status // Todo: more complicated logic for people who might be streaming */ - const activities = discordChannel.members - .filter((member) => member.presence.activities.length > 0) - .filter((member) => !member.user.bot) - .map((member) => member.presence.activities) - .flat() - .filter((activity) => activity.type !== ActivityType.Custom) - .filter((activity) => activity.type !== ActivityType.Listening) - .map((activity) => activity.name); + const activities = channelActivities(discordChannel); const { locked } = prismaChannel; diff --git a/src/utils/activity.ts b/src/utils/activity.ts index 637a57c..27a2022 100644 --- a/src/utils/activity.ts +++ b/src/utils/activity.ts @@ -1,13 +1,13 @@ import { ActivityType, VoiceBasedChannel } from 'discord.js'; -const channelActivities = ({ members }: VoiceBasedChannel) => - members - .filter((member) => member.presence.activities.length > 0) +const channelActivities = (channel: VoiceBasedChannel) => + channel?.members .filter((member) => !member.user.bot) + .filter((member) => !!member.presence) .map((member) => member.presence.activities) .flat() .filter((activity) => activity.type !== ActivityType.Custom) .filter((activity) => activity.type !== ActivityType.Listening) - .map((activity) => activity.name); + .map((activity) => activity.name) ?? []; export default channelActivities;