From edacc747b32f9e2b36fdb18c22f535ae2abc17f5 Mon Sep 17 00:00:00 2001 From: moriese Date: Fri, 3 Jan 2025 23:56:37 +0100 Subject: [PATCH] added welcome msg --- src/actions/activity/activity.components.ts | 0 src/actions/activity/activity.service.ts | 13 +++++ src/actions/greeting/greeting.components.ts | 2 +- src/actions/greeting/greeting.service.ts | 56 ++++++++++++++++++--- src/config.ts | 2 + src/controllers/discord.controller.ts | 23 ++++++--- src/lib/client.ts | 2 +- 7 files changed, 81 insertions(+), 17 deletions(-) create mode 100644 src/actions/activity/activity.components.ts create mode 100644 src/actions/activity/activity.service.ts diff --git a/src/actions/activity/activity.components.ts b/src/actions/activity/activity.components.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/actions/activity/activity.service.ts b/src/actions/activity/activity.service.ts new file mode 100644 index 0000000..8b8e1d8 --- /dev/null +++ b/src/actions/activity/activity.service.ts @@ -0,0 +1,13 @@ +import type { CacheType, Client, Interaction } from "discord.js"; +import client from "lib/client"; + +export class ActivityService { + + async setActivity(client: Client, description: string, activity: string) { + client.user?.setActivity(":3", { type: 4 }); + console.log("set activity"); + client.user?.setPresence({ + status: "online", + }); + } +} \ No newline at end of file diff --git a/src/actions/greeting/greeting.components.ts b/src/actions/greeting/greeting.components.ts index b97e52f..742e9f5 100644 --- a/src/actions/greeting/greeting.components.ts +++ b/src/actions/greeting/greeting.components.ts @@ -2,4 +2,4 @@ import config from "config"; export const greetContent = ["HALLOOOO", "guten morgen! ich hoffe es geht euch gut <3"]; export const sleepContent = ["gute nacht! ich muss jetzt schlafen gehen :c", "zzzzZZ..", "*schnarch*"]; -export const customContent = `hey <@&${config.discord.mentionStudy}>! meine [eigene website](https://avocadi.unom.io) ist endlich on :3\ngebe mir gerne rueckmeldung unter <#${config.discord.channelIdFeedback}>! <3`; \ No newline at end of file +export const customContent = `hey <@&${config.discord.mentionStudy}>! meine [eigene website](https://avocadi.unom.io) ist endlich on :3\ngebe mir gerne rueckmeldung unter <#${config.discord.channelIdFeedback}>! <3`; diff --git a/src/actions/greeting/greeting.service.ts b/src/actions/greeting/greeting.service.ts index 57fd8cf..85b6245 100644 --- a/src/actions/greeting/greeting.service.ts +++ b/src/actions/greeting/greeting.service.ts @@ -1,8 +1,12 @@ import config from "config"; import client from "lib/client"; import { getRandomInt } from "lib/utils"; -import { customContent, greetContent, sleepContent } from "./greeting.components.ts"; -import { EmbedBuilder } from "discord.js"; +import { + customContent, + greetContent, + sleepContent, +} from "./greeting.components.ts"; +import { Client, EmbedBuilder, type GuildMember } from "discord.js"; export class GreetingService { async customMessage() { @@ -13,23 +17,59 @@ export class GreetingService { const channel = channels.cache.get(config.discord.channelIdBot); if (channel?.isTextBased && channel?.isSendable()) { - await channel.send({ embeds: [this.createEmbed()], }); + await channel.send({ embeds: [this.createEmbed()] }); } } - createEmbed() { // ({ embeds: [exampleEmbed] }) + createEmbed() { + // ({ embeds: [exampleEmbed] }) console.log("createEmbed()"); const exampleEmbed = new EmbedBuilder() .setColor(0x004400) - .setAuthor({ name: "avocadi - neuigkeiten", iconURL: "https://media.discordapp.net/attachments/1321933410188656693/1323447010380222474/mo_Avocadi_Avatar_Closeup_2.png?ex=67748b93&is=67733a13&hm=f48efb3523bca5f50e79144c7b41a127c94670e693e3da3dc2e6ffe62ad8a769&=&format=webp&quality=lossless&width=1524&height=1524", url: 'https://avocadi.unom.io' }) + .setAuthor({ + name: "avocadi - neuigkeiten", + iconURL: + "https://media.discordapp.net/attachments/1321933410188656693/1323447010380222474/mo_Avocadi_Avatar_Closeup_2.png?ex=67748b93&is=67733a13&hm=f48efb3523bca5f50e79144c7b41a127c94670e693e3da3dc2e6ffe62ad8a769&=&format=webp&quality=lossless&width=1524&height=1524", + url: "https://avocadi.unom.io", + }) .setDescription(customContent) - .setTimestamp() - //.setFooter({ text: 'Some footer text here', iconURL: 'https://i.imgur.com/AfFp7pu.png' }); - ; + .setTimestamp(); + //.setFooter({ text: 'Some footer text here', iconURL: 'https://i.imgur.com/AfFp7pu.png' }); return exampleEmbed; } + async welcome(member: GuildMember) { + const welcomeMessages = [ + `willkommen auf dem server, ${member}! πŸ’•`, + `hey ${member}! schoen, dass du hier bist! 😊`, + `hi ${member}, willkommen! viel spass hier! πŸ’–`, + `willkommen, ${member}! schoen, dass du da bist! πŸ₯³`, + `moin ${member}! viel spass im server! c:`, + `hey ${member}! herzlich willkommen! fΓΌhl dich wie zu hause! 🏑`, + `hi ${member}! cool, dass du da bist! πŸ‘`, + `willkommen, ${member}! wir freuen uns, dass du hier bist! πŸ’•`, + `hey ${member}! schoen, dass du bei uns bist! :3`, + `willkommen auf dem server, ${member}! viel spass hier! ✨` + ]; + const randomMessage = `${welcomeMessages[Math.floor(Math.random() * welcomeMessages.length)]} bitte stelle dich kurz in <#${config.discord.channelIdIntro}> vor. sobald wir deine nachricht gelesen haben, vergeben wir dir die rolle *lernende:r*, damit du alle kanaele nutzen kannst viel spass und bis bald! :) `; + + try { + console.log("welcome msg"); + + const channels = client.channels; + const channel = channels.cache.get( + config.discord.channelIdWelcome, + ); + + if (channel?.isTextBased() && channel?.isSendable()) { + await channel.send(randomMessage); + } + } catch (error) { + console.error("error while senden a welcome msg:", error); + } + } + async greet() { client.user?.setActivity("guten morgen! :3", { type: 4 }); console.log("set activity: awake"); diff --git a/src/config.ts b/src/config.ts index 1bb3a16..9d0a717 100644 --- a/src/config.ts +++ b/src/config.ts @@ -4,6 +4,8 @@ export default { channelIdBot: process.env.DISCORD_CHANNEL_ID_BOT || "", channelIdNews: process.env.DISCORD_CHANNEL_ID_NEWS || "", channelIdFeedback: process.env.DISCORD_CHANNEL_ID_FEEDBACK || "", + channelIdIntro: process.env.DISCORD_CHANNEL_ID_INTRO || "", + channelIdWelcome: process.env.DISCORD_CHANNEL_ID_WELCOME || "", mentionStudy: process.env.PEOPLE || "", applicationId: process.env.DISCORD_APPLICATION_ID || "", token: process.env.DISCORD_TOKEN || "", diff --git a/src/controllers/discord.controller.ts b/src/controllers/discord.controller.ts index fb01bf3..236ffee 100644 --- a/src/controllers/discord.controller.ts +++ b/src/controllers/discord.controller.ts @@ -1,10 +1,12 @@ import { Commands, type CommandsType } from "commands"; -import type { - ButtonInteraction, - CacheType, - ChatInputCommandInteraction, - Interaction, - ModalSubmitInteraction, +import { + Client, + IntentsBitField, + type ButtonInteraction, + type CacheType, + type ChatInputCommandInteraction, + type Interaction, + type ModalSubmitInteraction, } from "discord.js"; import client from "lib/client"; import EventEmitter from "node:events"; @@ -15,6 +17,7 @@ import { MedicationService } from "actions/medication/medication.service"; import { HelpService } from "actions/help/help.service"; import { custom } from "zod"; import { GreetingService } from "actions/greeting/greeting.service"; +import { ActivityService } from "actions/activity/activity.service"; export default class DiscordController extends EventEmitter { private discordService!: DiscordService; @@ -22,6 +25,7 @@ export default class DiscordController extends EventEmitter { greetingService: GreetingService; medicationService: MedicationService; helpService: HelpService; + activityService: ActivityService; constructor() { super(); @@ -30,6 +34,7 @@ export default class DiscordController extends EventEmitter { this.greetingService = new GreetingService(); this.medicationService = new MedicationService(); this.helpService = new HelpService(); + this.activityService = new ActivityService(); // log when running client.once("ready", async () => { this.setActivity(); @@ -38,10 +43,14 @@ export default class DiscordController extends EventEmitter { // listen for interactions client.on("interactionCreate", this.handleInteraction.bind(this)); + client.on("guildMemberAdd", async (member) => { + console.log("client on guildMemberAdd"); + await this.greetingService.welcome(member); + }); } async setActivity() { - client.user?.setActivity("meine website ist online! :o", { type: 4 }); + client.user?.setActivity(":3", { type: 4 }); console.log("set activity"); client.user?.setPresence({ status: "online", diff --git a/src/lib/client.ts b/src/lib/client.ts index e50912b..d23393c 100644 --- a/src/lib/client.ts +++ b/src/lib/client.ts @@ -1,7 +1,7 @@ import config from "config"; import { Client, IntentsBitField } from "discord.js"; -const client = new Client({ intents: [IntentsBitField.Flags.Guilds] }); +const client = new Client({ intents: [IntentsBitField.Flags.Guilds, IntentsBitField.Flags.GuildMessages, IntentsBitField.Flags.GuildMembers] }); await client.login(config.discord.token);