add greeting
add locales
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
import config from "config";
|
||||
import type { GuildMember } from "discord.js";
|
||||
|
||||
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 dmWelcomeContent = `hey! ich bin avocadi von [avocadi-study](<https://discord.gg/kkryyeXu3S>)!\n\num auf den rest des servers zugreifen zu koennen, musst du dich noch vorstellen (unter <#${config.discord.channelIdIntroduction}>)!\n\n---\nname und alter:\npronomen:\nklasse/studiengang/beruf:\nhobby:\nueber mich:\n---\n\nsobald wir deine nachricht ueberprueft haben, bekommst du die rolle **lernende:r** :)`;
|
||||
export const dmAcceptedContent = `huhu! du wurdest als lernende:r akzeptiert :3\nsag gerne hallo: <#${config.discord.channelIdOffTopic}> <:avocadi_cute:1321893797138923602>`;
|
||||
|
||||
export function getWelcomeContent(member: GuildMember) {
|
||||
const welcomeContents = [
|
||||
`willkommen auf dem server, ${member}! fuehl dich wie zuhause💕`,
|
||||
`hey ${member}! schoen, dass du hier bist! 😊`,
|
||||
`hi ${member}, willkommen! viel spass hier! 💖`,
|
||||
`willkommen, ${member}! schoen, dass du da bist! :3`,
|
||||
`moin ${member}! viel spass im server! c:`,
|
||||
`hey ${member}, herzlich willkommen! fuehl dich wie zu hause! <3`,
|
||||
`hi ${member}! cool, dass du da bist! <3`,
|
||||
`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! ✨`,
|
||||
`hi ${member}, super, dass du dabei bist! :3`,
|
||||
`hey ${member}, willkommen bei uns! 💖`,
|
||||
`moin ${member}! schoen, dass du dabei bist! :)`,
|
||||
`hi ${member}, willkommen in unserer kleinen community! ✨`,
|
||||
`willkommen, ${member}! fuehl dich wie zu hause! 💕`,
|
||||
`hey ${member}, schoen, dass du uns gefunden hast! <333`,
|
||||
`hi ${member}, willkommen in unserer runde! c:`,
|
||||
`willkommen, ${member}! schoen, dass du hier bist! 💖`,
|
||||
`moin ${member}! lass uns zusammen spass haben! ✨`,
|
||||
`hey ${member}, herzlich willkommen bei uns! 😊`,
|
||||
`hi ${member}! schoen, dass du dabei bist! 💕`,
|
||||
`willkommen auf dem server, ${member}! wir freuen uns auf dich! <3`,
|
||||
`hey ${member}, schoen, dass du da bist! ✨`,
|
||||
`hi ${member}, willkommen! fuehl dich wie zu hause! 💖`,
|
||||
`willkommen, ${member}! lass uns gemeinsam eine tolle zeit haben! :3`,
|
||||
];
|
||||
return welcomeContents[Math.floor(Math.random() * welcomeContents.length)];
|
||||
}
|
||||
@@ -1,329 +0,0 @@
|
||||
import { DmService } from "actions/dm/dm.service.ts";
|
||||
import { Commands, type CommandsType } from "commands/index.ts";
|
||||
import config from "config";
|
||||
import {
|
||||
type CacheType,
|
||||
type ChatInputCommandInteraction,
|
||||
type GuildMember,
|
||||
GuildMemberRoleManager,
|
||||
type Interaction,
|
||||
} from "discord.js";
|
||||
import client from "lib/client";
|
||||
import { getRandomInt } from "lib/utils";
|
||||
import { checkPermission } from "permissions/index.ts";
|
||||
import {
|
||||
getWelcomeContent,
|
||||
greetContent,
|
||||
sleepContent,
|
||||
} from "./greeting.components.ts";
|
||||
|
||||
export class GreetingService {
|
||||
dmService: DmService;
|
||||
|
||||
constructor() {
|
||||
this.dmService = new DmService();
|
||||
}
|
||||
|
||||
async handleInteraction(interaction: Interaction<CacheType>) {
|
||||
if (interaction.isChatInputCommand()) {
|
||||
await this.handleChatInputCommand(interaction);
|
||||
return;
|
||||
}
|
||||
}
|
||||
async handleChatInputCommand(
|
||||
interaction: ChatInputCommandInteraction<CacheType>,
|
||||
) {
|
||||
const commandName = interaction.commandName as CommandsType;
|
||||
switch (commandName) {
|
||||
case Commands.Enum.accept:
|
||||
await this.acceptUser(interaction);
|
||||
return;
|
||||
case Commands.Enum.welcome:
|
||||
await this.welcomeCommand(interaction);
|
||||
return;
|
||||
case Commands.Enum.reminder:
|
||||
await this.reminderCommand(interaction);
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
async welcome(member: GuildMember) {
|
||||
console.log("welcome msg");
|
||||
const welcomeContent = getWelcomeContent(member);
|
||||
|
||||
try {
|
||||
const channels = client.channels;
|
||||
const channel = channels.cache.get(config.discord.channelIdWelcome);
|
||||
|
||||
if (channel?.isTextBased() && channel?.isSendable()) {
|
||||
await channel.send(welcomeContent);
|
||||
}
|
||||
|
||||
await this.dmService.welcomePrivate(member);
|
||||
} catch (error) {
|
||||
console.error("error while sending a welcome msg:", error);
|
||||
}
|
||||
}
|
||||
|
||||
async acceptUser(interaction: ChatInputCommandInteraction<CacheType>) {
|
||||
console.log("accept user");
|
||||
|
||||
// get the string option
|
||||
const input = interaction.options.getString("input") || "";
|
||||
// return the value
|
||||
//console.log(input);
|
||||
|
||||
// permission check
|
||||
if ((await checkPermission(interaction.member)) !== true) {
|
||||
await interaction.reply({
|
||||
content: "du hast keine rechte fuer diesen befehl",
|
||||
ephemeral: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
// get user id from mentioning
|
||||
const userId = input.replace(/[<@!>]/g, "");
|
||||
console.log(userId.toString());
|
||||
const guild = interaction.guild;
|
||||
if (!guild) {
|
||||
await interaction.reply({
|
||||
content: "command can only be used on a server",
|
||||
ephemeral: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const member = await guild.members.fetch(userId);
|
||||
const username = member.user.username;
|
||||
console.log(username);
|
||||
|
||||
if ((await this.checkRole(member)) === true) {
|
||||
await interaction.reply({
|
||||
content: `${member.user.username} hat die rolle *lernende:r* schon!`,
|
||||
ephemeral: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
await member.roles.add(config.discord.roleStudy);
|
||||
|
||||
await interaction.reply({
|
||||
content: `die rolle *lernende:r* wurde erfolgreich an ${member.user.username} vergeben`,
|
||||
ephemeral: true,
|
||||
});
|
||||
|
||||
this.dmService.acceptDm(member);
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Hinzufügen der Rolle:", error);
|
||||
await interaction.reply({
|
||||
content:
|
||||
"Es gab einen Fehler beim Hinzufügen der Rolle. Stelle sicher, dass du einen gültigen User erwähnt hast.",
|
||||
ephemeral: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// unused
|
||||
async greet() {
|
||||
client.user?.setActivity("guten morgen! :3", { type: 4 });
|
||||
console.log("set activity: awake");
|
||||
client.user?.setPresence({
|
||||
status: "online",
|
||||
});
|
||||
|
||||
const channels = client.channels;
|
||||
|
||||
const channel = channels.cache.get(config.discord.channelIdOffTopic);
|
||||
|
||||
if (channel?.isTextBased && channel?.isSendable()) {
|
||||
await channel.send({ content: this.getContent(false) });
|
||||
}
|
||||
}
|
||||
|
||||
// unused
|
||||
async sleep() {
|
||||
client.user?.setActivity("zzzzZZ..", { type: 4 });
|
||||
console.log("set activity: asleep");
|
||||
client.user?.setPresence({
|
||||
status: "dnd",
|
||||
});
|
||||
|
||||
const channels = client.channels;
|
||||
|
||||
const channel = channels.cache.get(config.discord.channelIdOffTopic);
|
||||
|
||||
if (channel?.isTextBased && channel?.isSendable()) {
|
||||
await channel.send({ content: this.getContent(true) });
|
||||
}
|
||||
}
|
||||
|
||||
async newYear() {
|
||||
client.user?.setActivity("frohes neues! :)", { type: 4 });
|
||||
console.log("set activity: happy new year");
|
||||
client.user?.setPresence({
|
||||
status: "online",
|
||||
});
|
||||
|
||||
// unused
|
||||
/*const channels = client.channels;
|
||||
|
||||
const channel = channels.cache.get(config.discord.channelIdOffTopic);
|
||||
|
||||
if (channel?.isTextBased && channel?.isSendable()) {
|
||||
await channel.send({ content: "frohes neues! @everyone" });
|
||||
}*/
|
||||
}
|
||||
|
||||
getContent(asleep: boolean) {
|
||||
if (asleep) {
|
||||
return sleepContent[getRandomInt(0, sleepContent.length - 1)];
|
||||
}
|
||||
return greetContent[getRandomInt(0, greetContent.length - 1)];
|
||||
}
|
||||
|
||||
async reminderCommand(interaction: ChatInputCommandInteraction<CacheType>) {
|
||||
console.log("remind user");
|
||||
|
||||
// get the string option
|
||||
const input = interaction.options.getString("input") || "";
|
||||
// return the value
|
||||
//console.log(input);
|
||||
|
||||
try {
|
||||
// permission check
|
||||
if ((await checkPermission(interaction.member)) !== true) {
|
||||
await interaction.reply({
|
||||
content: "du hast keine rechte fuer diesen befehl",
|
||||
ephemeral: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// get user id from mentioning
|
||||
const userId = input.replace(/[<@!>]/g, "");
|
||||
console.log(userId.toString());
|
||||
const guild = interaction.guild;
|
||||
if (!guild) {
|
||||
await interaction.reply({
|
||||
content: "command can only be used on a server",
|
||||
ephemeral: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const member = await guild.members.fetch(userId);
|
||||
const username = member.user.username;
|
||||
console.log(username);
|
||||
|
||||
if ((await this.checkRole(member)) === true) {
|
||||
await interaction.reply({
|
||||
content: `${member.user.username} hat die rolle *lernende:r* schon!`,
|
||||
ephemeral: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
await this.dmService.reminderPrivate(member);
|
||||
//await member.roles.add(config.discord.roleStudy);
|
||||
|
||||
await interaction.reply({
|
||||
content: `${member.user.username} wurde erfolgrich remindet`,
|
||||
ephemeral: true,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("error while reminding:", error);
|
||||
await interaction.reply({
|
||||
content:
|
||||
"Es gab einen Fehler beim reminden. Stelle sicher, dass du einen gültigen User erwähnt hast.",
|
||||
ephemeral: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async welcomeCommand(interaction: ChatInputCommandInteraction<CacheType>) {
|
||||
console.log("welcome user");
|
||||
|
||||
// get the string option
|
||||
const input = interaction.options.getString("input") || "";
|
||||
// return the value
|
||||
//console.log(input);
|
||||
|
||||
try {
|
||||
// get user id from mentioning
|
||||
const userId = input.replace(/[<@!>]/g, "");
|
||||
console.log(userId.toString());
|
||||
const guild = interaction.guild;
|
||||
if (!guild) {
|
||||
await interaction.reply({
|
||||
content: "command can only be used on a server",
|
||||
ephemeral: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if ((await checkPermission(interaction.member)) !== true) {
|
||||
await interaction.reply({
|
||||
content: "du hast keine rechte fuer diesen befehl",
|
||||
ephemeral: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// get member from id
|
||||
const member = await guild.members.fetch(userId);
|
||||
const username = member.user.username;
|
||||
console.log(username);
|
||||
|
||||
const welcomeContent = getWelcomeContent(member);
|
||||
|
||||
if ((await this.checkRole(member)) === true) {
|
||||
await interaction.reply({
|
||||
content: `${member.user.username} wurde schon begruesst!`,
|
||||
ephemeral: true,
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
const channels = client.channels;
|
||||
const channel = channels.cache.get(config.discord.channelIdWelcome);
|
||||
|
||||
if (channel?.isTextBased() && channel?.isSendable()) {
|
||||
await channel.send(welcomeContent);
|
||||
}
|
||||
|
||||
await this.dmService.welcomePrivate(member);
|
||||
} catch (error) {
|
||||
console.error("error while sending a welcome command msg:", error);
|
||||
}
|
||||
|
||||
await interaction.reply({
|
||||
content: `erfolgreich welcome command: ${member.user.username}`,
|
||||
ephemeral: true,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("fehler bei welcome command", error);
|
||||
await interaction.reply({
|
||||
content: "fehler bei welcome command",
|
||||
ephemeral: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async checkRole(member: GuildMember) {
|
||||
let hasRole = false;
|
||||
if (member?.roles instanceof GuildMemberRoleManager) {
|
||||
if (
|
||||
member.roles.cache.has(config.discord.roleAdmin) ||
|
||||
member.roles.cache.has(config.discord.roleMod)
|
||||
) {
|
||||
console.log("user has permission");
|
||||
hasRole = true;
|
||||
}
|
||||
}
|
||||
return hasRole;
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
import { CronJob } from "cron";
|
||||
import { GreetingService } from "actions/greeting/greeting.service";
|
||||
|
||||
const greetingService = new GreetingService();
|
||||
/*
|
||||
new CronJob(
|
||||
"0 30 6 * * *", // cronTime
|
||||
async () => {
|
||||
console.log("good morning");
|
||||
await greetingService.greet();
|
||||
}, // onTick
|
||||
null, // onComplete
|
||||
true, // start
|
||||
"Europe/Berlin", // timeZone
|
||||
);
|
||||
// job.start() is optional here because of the fourth parameter set to true.
|
||||
|
||||
new CronJob(
|
||||
"0 30 22 * * *",
|
||||
async () => {
|
||||
console.log("good night");
|
||||
await greetingService.sleep();
|
||||
},
|
||||
null,
|
||||
true,
|
||||
"Europe/Berlin",
|
||||
);*/
|
||||
|
||||
new CronJob(
|
||||
"0 0 0 1 1 *",
|
||||
async () => {
|
||||
console.log("happy new year");
|
||||
await greetingService.newYear();
|
||||
},
|
||||
null,
|
||||
true,
|
||||
"Europe/Berlin",
|
||||
);
|
||||
@@ -1,14 +1,47 @@
|
||||
import type { MessagesServiceInterface } from "entities/messages/messages.service";
|
||||
import type { BaseChannel, BaseMessage, BaseUser } from "lib/common";
|
||||
import type { I18nService } from "lib/i18n/i18n.service";
|
||||
|
||||
export class GreetingService<U = unknown> {
|
||||
messagesService: MessagesServiceInterface<U>;
|
||||
export class GreetingService<
|
||||
U extends BaseUser = BaseUser,
|
||||
M extends BaseMessage = BaseMessage,
|
||||
C extends BaseChannel = BaseChannel,
|
||||
> {
|
||||
messagesService: MessagesServiceInterface<U, M, C>;
|
||||
i18nService: I18nService;
|
||||
lang: "en" | "de";
|
||||
ns = "greeting";
|
||||
|
||||
constructor(messagesService: MessagesServiceInterface<U>) {
|
||||
constructor(
|
||||
messagesService: MessagesServiceInterface<U, M, C>,
|
||||
i18nService: I18nService,
|
||||
lang: "en" | "de",
|
||||
) {
|
||||
this.messagesService = messagesService;
|
||||
this.i18nService = i18nService;
|
||||
this.lang = lang;
|
||||
}
|
||||
|
||||
async sendGreeting(user: U, userName: string) {
|
||||
const greetingMessage = `Hello, ${userName}! Welcome to the server!`;
|
||||
async sendDmGreeting(user: U, _userName: string) {
|
||||
const greetingMessage: string = await this.i18nService.t(
|
||||
"dmGreeting",
|
||||
this.lang,
|
||||
this.ns,
|
||||
);
|
||||
|
||||
await this.messagesService.sendToUser(user, greetingMessage);
|
||||
}
|
||||
|
||||
async sendGreeting(userName: string, channel: C) {
|
||||
const greetingMessage: string =
|
||||
(await this.i18nService.t("greeting1", this.lang, this.ns)) +
|
||||
(await this.i18nService.t("greeting2", this.lang, this.ns, {
|
||||
member: userName,
|
||||
})) +
|
||||
(await this.i18nService.t("greeting3", this.lang, this.ns)) +
|
||||
(await this.i18nService.t("greeting4", this.lang, this.ns)) +
|
||||
(await this.i18nService.t("emoji", this.lang, this.ns));
|
||||
|
||||
await this.messagesService.sendToChannel(channel, greetingMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import type { MessagesServiceInterface } from "entities/messages/messages.service";
|
||||
import type { ParseKeys } from "i18next";
|
||||
import type { I18nService } from "lib/i18n/i18n.service";
|
||||
import { createLogger } from "lib/logger";
|
||||
|
||||
@@ -13,6 +12,7 @@ export class WaterMeService {
|
||||
messagesService: MessagesServiceInterface;
|
||||
i18nService: I18nService;
|
||||
lang: "en" | "de";
|
||||
ns = "waterMe";
|
||||
|
||||
constructor(
|
||||
messagesService: MessagesServiceInterface,
|
||||
@@ -26,34 +26,30 @@ export class WaterMeService {
|
||||
}
|
||||
|
||||
async getReply() {
|
||||
// const key = (
|
||||
// this.waterLevel <= this.thirsty
|
||||
// ? "water-me.needMoreWater"
|
||||
// : this.waterLevel <= this.full
|
||||
// ? "water-me.enoughWater"
|
||||
// : "water-me.tooMuchWater"
|
||||
// ) as ParseKeys;
|
||||
|
||||
// return await this.i18nService.t(key, this.lang);
|
||||
|
||||
if (this.waterLevel <= this.thirsty)
|
||||
return this.i18nService.t("needMoreWater", this.lang, "waterMe");
|
||||
return this.i18nService.t("needMoreWater", this.lang, this.ns);
|
||||
if (this.waterLevel <= this.full)
|
||||
return this.i18nService.t("enoughWater", this.lang, "waterMe");
|
||||
return this.i18nService.t("tooMuchWater", this.lang, "waterMe");
|
||||
return this.i18nService.t("enoughWater", this.lang, this.ns);
|
||||
return this.i18nService.t("tooMuchWater", this.lang, this.ns);
|
||||
}
|
||||
|
||||
async notifyIfThirsty() {
|
||||
if (this.waterLevel <= this.thirsty) {
|
||||
await this.messagesService.sendToChannel(
|
||||
{ id: "channelId" },
|
||||
{ content: await this.i18nService.t("waterMe.thirsty", this.lang) },
|
||||
{
|
||||
content: await this.i18nService.t(
|
||||
"waterMe.thirsty",
|
||||
this.lang,
|
||||
this.ns,
|
||||
),
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
waterMe() {
|
||||
const reply = this.getReply();
|
||||
async waterMe() {
|
||||
const reply = await this.getReply();
|
||||
|
||||
this.waterLevel++;
|
||||
this.logger.info(`Water level increased to ${this.waterLevel}`);
|
||||
@@ -64,11 +60,11 @@ export class WaterMeService {
|
||||
}
|
||||
|
||||
async handleCommand(channelId: string) {
|
||||
const result = this.waterMe(); // muss hier await weil promise rueckgabe?
|
||||
const result = await this.waterMe(); // muss hoer await wein promise rueckgabe?
|
||||
|
||||
this.messagesService.sendToChannel(
|
||||
{ id: channelId },
|
||||
{ content: await result.reply },
|
||||
{ content: result.reply },
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import i18next, { type ParseKeys } from "i18next";
|
||||
import greetingDe from "locales/de/greeting";
|
||||
// import { createLogger } from "lib/logger";
|
||||
import waterMeDe from "locales/de/water-me";
|
||||
import greetingEn from "locales/en/greeting";
|
||||
import waterMeEn from "locales/en/water-me";
|
||||
|
||||
export class I18nService {
|
||||
@@ -25,8 +27,8 @@ export class I18nService {
|
||||
lng: "en",
|
||||
fallbackLng: "en",
|
||||
resources: {
|
||||
en: { waterMe: waterMeEn },
|
||||
de: { waterMe: waterMeDe },
|
||||
en: { greeting: greetingEn, waterMe: waterMeEn },
|
||||
de: { greeting: greetingDe, waterMe: waterMeDe },
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
31
core/src/locales/de/greeting.ts
Normal file
31
core/src/locales/de/greeting.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
export default {
|
||||
greeting1: ["hi ", "hey ", "willkommen "],
|
||||
greeting2: ["{{member}}. ", "{{member}}, "],
|
||||
greeting3: [
|
||||
"cool, dass du da bist",
|
||||
"fuehl dich wie zuhause",
|
||||
"schoen, dass du bei uns bist",
|
||||
"schoen, dass du da bist",
|
||||
"schoen, dass du dabei bist",
|
||||
"schoen, dass du hier bist",
|
||||
"schoen, dass du uns gefunden hast",
|
||||
"super, dass du dabei bist",
|
||||
"lass uns zusammen spass haben",
|
||||
"lass uns gemeinsam eine tolle zeit haben!",
|
||||
"fuehl dich wie zu hause",
|
||||
"wir freuen uns auf dich",
|
||||
"wir freuen uns, dass du hier bist",
|
||||
"viel spass hier",
|
||||
"viel spass im server",
|
||||
],
|
||||
greeting4: [". ", "! "],
|
||||
emoji: ["😊", "💕", "✨", "💖", ":3", ":)", "c:", "<3", "<333"],
|
||||
dmAcceptedContent: `huhu! du wurdest als lernende:r>≤ akzeptiert :3
|
||||
sag gerne hallo!`,
|
||||
dm: `hey! ich bin avocadi von avocadi study!!
|
||||
um auf den rest des servers zugreifen zu koennen, musst du dich noch vorstellen!
|
||||
---
|
||||
z.b.: name, alter, pronomen, klasse/studiengang/beruf, hobby, ueber mich:
|
||||
---
|
||||
sobald wir deine nachricht ueberprueft haben, bekommst du die rolle **lernende:r** :)`,
|
||||
} as const;
|
||||
32
core/src/locales/en/greeting.ts
Normal file
32
core/src/locales/en/greeting.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
export default {
|
||||
greeting1: ["hi ", "hey ", "welcome "],
|
||||
greeting2: ["{{member}}. ", "{{member}}, "],
|
||||
greeting3: [
|
||||
"a hearty welcome to you",
|
||||
"cool that you're here",
|
||||
"glad you're here",
|
||||
"glad you found us",
|
||||
"great to have you here",
|
||||
"have fun here",
|
||||
"have fun on the server",
|
||||
"it is lovely to have you among us",
|
||||
"let's have fun together",
|
||||
"let's have a great time together",
|
||||
"make yourself at home",
|
||||
"nice to have you here",
|
||||
"nice to have you with us",
|
||||
"we hope you have a good time here",
|
||||
"we look forward to having you",
|
||||
"we're glad you're here",
|
||||
],
|
||||
greeting4: [". ", "! "],
|
||||
emoji: ["😊", "💕", "✨", "💖", ":3", ":)", "c:", "<3", "<333"],
|
||||
dmAcceptedContent: `hey there! you've been accepted :3
|
||||
feel free to say hello!`,
|
||||
dmGreeting: `hey! i'm avocadi from avocadi study!!
|
||||
in order to access the rest of the server, you still need to introduce yourself!
|
||||
---
|
||||
e.g.: name, age, pronouns, class/degree/profession, hobbies, about me
|
||||
---
|
||||
once we have reviewed your message, you will be assigned the role **member** :)`,
|
||||
} as const;
|
||||
Reference in New Issue
Block a user