From 84b851f60f37b7a637a0e9a7938e93dd898b5eaa Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Wed, 18 Feb 2026 16:51:09 +0100 Subject: [PATCH] add ready and stop listener implement activity service --- .../discord/src/listeners/ready.listener.ts | 1 - .../src/features/activity/activity.schema.ts | 19 ++++++++++ .../src/features/activity/activity.service.ts | 35 +++++++++++++++++++ adapters/fluxer/src/index.ts | 2 +- adapters/fluxer/src/listeners/index.ts | 2 ++ .../fluxer/src/listeners/ready.listener.ts | 14 ++++++++ .../fluxer/src/listeners/stop.listener.ts | 3 ++ 7 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 adapters/fluxer/src/features/activity/activity.schema.ts create mode 100644 adapters/fluxer/src/features/activity/activity.service.ts create mode 100644 adapters/fluxer/src/listeners/index.ts create mode 100644 adapters/fluxer/src/listeners/ready.listener.ts create mode 100644 adapters/fluxer/src/listeners/stop.listener.ts diff --git a/adapters/discord/src/listeners/ready.listener.ts b/adapters/discord/src/listeners/ready.listener.ts index 19a08d5..b496465 100644 --- a/adapters/discord/src/listeners/ready.listener.ts +++ b/adapters/discord/src/listeners/ready.listener.ts @@ -1,4 +1,3 @@ -import { config } from "config"; import { activityService } from "features/activity/activity.service"; import { logChannelService } from "features/log-channel/log-channel.service"; import client from "lib/client"; diff --git a/adapters/fluxer/src/features/activity/activity.schema.ts b/adapters/fluxer/src/features/activity/activity.schema.ts new file mode 100644 index 0000000..4539551 --- /dev/null +++ b/adapters/fluxer/src/features/activity/activity.schema.ts @@ -0,0 +1,19 @@ +import z from "zod"; + +export const Activities = z.enum([ + "playing", + "streaming", + "listening", + "watching", + "competing", + "invisible", +]); + +export const ActivityLocales: Record, string> = { + playing: "spielt sudoku", + streaming: "streamt sudoku", + listening: "hört sudoku", + watching: "schaut sudoku", + competing: "wettstreitet sudoku", + invisible: "versteckt sudoku", +}; diff --git a/adapters/fluxer/src/features/activity/activity.service.ts b/adapters/fluxer/src/features/activity/activity.service.ts new file mode 100644 index 0000000..1572f84 --- /dev/null +++ b/adapters/fluxer/src/features/activity/activity.service.ts @@ -0,0 +1,35 @@ +import client from "lib/client"; +import type z from "zod"; +import { type Activities, ActivityLocales } from "./activity.schema"; + +/** + * Set the activity of the bot. This can be used to show that the bot is playing a game, listening to music, etc. + */ +export class ActivityService { + async set(activity: z.output) { + if (activity === "invisible") { + client.options.presence = { + status: "invisible", + activities: [], + afk: false, + ...client.options.presence, + }; + + return; + } + + client.options.presence = { + status: "online", + activities: [ + { + name: ActivityLocales[activity], + type: 0, + }, + ], + afk: false, + ...client.options.presence, + }; + } +} + +export const activityService = new ActivityService(); diff --git a/adapters/fluxer/src/index.ts b/adapters/fluxer/src/index.ts index 7bbf8d5..b0612b3 100644 --- a/adapters/fluxer/src/index.ts +++ b/adapters/fluxer/src/index.ts @@ -1 +1 @@ -import "lib/client"; +import "listeners"; diff --git a/adapters/fluxer/src/listeners/index.ts b/adapters/fluxer/src/listeners/index.ts new file mode 100644 index 0000000..269347d --- /dev/null +++ b/adapters/fluxer/src/listeners/index.ts @@ -0,0 +1,2 @@ +import "./ready.listener"; +import "./stop.listener"; diff --git a/adapters/fluxer/src/listeners/ready.listener.ts b/adapters/fluxer/src/listeners/ready.listener.ts new file mode 100644 index 0000000..284a5b5 --- /dev/null +++ b/adapters/fluxer/src/listeners/ready.listener.ts @@ -0,0 +1,14 @@ +import { Events } from "@fluxerjs/core"; +import { activityService } from "features/activity/activity.service"; +import { logChannelService } from "features/log-channel/log-channel.service"; +import client from "lib/client"; +import { logger } from "lib/common-logger"; + +client.on(Events.Ready, async () => { + await logChannelService.sendLogMessage("wieder online!!!"); + + logger.info("bot is online"); + + await activityService.set("competing"); + logger.info("finished ready procedure"); +}); diff --git a/adapters/fluxer/src/listeners/stop.listener.ts b/adapters/fluxer/src/listeners/stop.listener.ts new file mode 100644 index 0000000..851a76a --- /dev/null +++ b/adapters/fluxer/src/listeners/stop.listener.ts @@ -0,0 +1,3 @@ +import { Events } from "@fluxerjs/core"; +import client from "lib/client"; +import { logger } from "lib/common-logger";