extend messages service for logging sent messages
This commit is contained in:
@@ -12,42 +12,6 @@ export default class DiscordController extends EventEmitter {
|
|||||||
super();
|
super();
|
||||||
let channelListeners = new Map();
|
let channelListeners = new Map();
|
||||||
|
|
||||||
process.on("exit", async () => {
|
|
||||||
const channels = client.channels;
|
|
||||||
const logChannel = channels.cache.get(config.discord.channelIdLog);
|
|
||||||
await this.handleShutdown(logChannel);
|
|
||||||
process.exit(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
process.on("SIGINT", async () => {
|
|
||||||
const channels = client.channels;
|
|
||||||
const logChannel = channels.cache.get(config.discord.channelIdLog);
|
|
||||||
await this.handleShutdown(logChannel);
|
|
||||||
process.exit(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
process.on("SIGTERM", async () => {
|
|
||||||
const channels = client.channels;
|
|
||||||
const logChannel = channels.cache.get(config.discord.channelIdLog);
|
|
||||||
await this.handleShutdown(logChannel);
|
|
||||||
process.exit(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
// listen for interactions
|
|
||||||
client.on("interactionCreate", this.handleInteraction.bind(this));
|
|
||||||
|
|
||||||
client.on("messageCreate", async (message) => {
|
|
||||||
console.log(message.id);
|
|
||||||
if (message.channel.type === ChannelType.DM) {
|
|
||||||
console.log("got msg");
|
|
||||||
await this.dmService.forward(message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
client.on("guildMemberAdd", async (member) => {
|
|
||||||
await this.greetingService.welcome(member);
|
|
||||||
});
|
|
||||||
|
|
||||||
client.on(
|
client.on(
|
||||||
Events.VoiceStateUpdate,
|
Events.VoiceStateUpdate,
|
||||||
async (oldState: VoiceState, newState: VoiceState) => {
|
async (oldState: VoiceState, newState: VoiceState) => {
|
||||||
|
|||||||
@@ -1,9 +1,18 @@
|
|||||||
import type { MessagesServiceInterface } from "@avocadi/bot-core/entities/messages/messages.service";
|
import type { MessagesServiceInterface } from "@avocadi/bot-core/entities/messages/messages.service";
|
||||||
import { createLogger } from "@avocadi/bot-core/lib/logger";
|
import { createLogger } from "@avocadi/bot-core/lib/logger";
|
||||||
import type { User } from "discord.js";
|
import {
|
||||||
|
ChannelType,
|
||||||
|
type DMChannel,
|
||||||
|
type Message,
|
||||||
|
type PartialDMChannel,
|
||||||
|
type User,
|
||||||
|
} from "discord.js";
|
||||||
|
import { logChannelService } from "features/log-channel/log-channel.service";
|
||||||
import client from "lib/client";
|
import client from "lib/client";
|
||||||
|
|
||||||
export class MessagesService implements MessagesServiceInterface<User> {
|
export class MessagesService
|
||||||
|
implements MessagesServiceInterface<User, Message>
|
||||||
|
{
|
||||||
private logger = createLogger("MessagesService");
|
private logger = createLogger("MessagesService");
|
||||||
|
|
||||||
async sendToUser(userInput: User, message: string): Promise<void> {
|
async sendToUser(userInput: User, message: string): Promise<void> {
|
||||||
@@ -15,6 +24,29 @@ export class MessagesService implements MessagesServiceInterface<User> {
|
|||||||
this.logger.error(`User with ID ${userInput.id} not found.`);
|
this.logger.error(`User with ID ${userInput.id} not found.`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async logMessage(message: Message): Promise<void> {
|
||||||
|
let recipient: User | null = null;
|
||||||
|
|
||||||
|
if (
|
||||||
|
message.channel.isDMBased() &&
|
||||||
|
message.channel.type !== ChannelType.GroupDM
|
||||||
|
) {
|
||||||
|
const channel = message.channel as DMChannel | PartialDMChannel;
|
||||||
|
|
||||||
|
recipient = channel.recipient;
|
||||||
|
}
|
||||||
|
|
||||||
|
let logMessage: string;
|
||||||
|
|
||||||
|
if (recipient) {
|
||||||
|
logMessage = `<@${message.author.id}> sent a message to <@${recipient.id}>:\n"${message.content}"`;
|
||||||
|
} else {
|
||||||
|
logMessage = `<@${message.author.id}> sent a message:\n"${message.content}"`;
|
||||||
|
}
|
||||||
|
|
||||||
|
await logChannelService.sendLogMessage(logMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const messagesService = new MessagesService();
|
export const messagesService = new MessagesService();
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { greetingsService } from "features/greeting/greetings.service";
|
import { greetingsService } from "features/greeting/greetings.service";
|
||||||
|
import { logChannelService } from "features/log-channel/log-channel.service";
|
||||||
import client from "lib/client";
|
import client from "lib/client";
|
||||||
|
|
||||||
client.on("guildMemberAdd", async (member) => {
|
client.on("guildMemberAdd", async (member) => {
|
||||||
@@ -9,4 +10,7 @@ client.on("guildMemberAdd", async (member) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
greetingsService.sendGreeting(member.user, member.user.username);
|
greetingsService.sendGreeting(member.user, member.user.username);
|
||||||
|
logChannelService.sendLogMessage(
|
||||||
|
`Neues Mitglied: <@${member.user.id}> (${member.user.tag}) ist dem Server beigetreten.`,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
import { messagesService } from "entitites/messages/messages.service";
|
||||||
|
import client from "lib/client";
|
||||||
|
|
||||||
|
client.on("messageCreate", async (message) => {
|
||||||
|
messagesService.logMessage(message);
|
||||||
|
});
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
export interface MessagesServiceInterface<U = unknown> {
|
export interface MessagesServiceInterface<U = unknown, M = unknown> {
|
||||||
sendToUser(user: U, message: string): Promise<void>;
|
sendToUser(user: U, message: string): Promise<void>;
|
||||||
|
|
||||||
|
logMessage(message: M): Promise<void>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,22 @@
|
|||||||
import config from "config";
|
import config from "config";
|
||||||
import { GuildMember, GuildMemberRoleManager, type APIInteractionGuildMember } from "discord.js";
|
import {
|
||||||
|
type APIInteractionGuildMember,
|
||||||
|
type GuildMember,
|
||||||
|
GuildMemberRoleManager,
|
||||||
|
} from "discord.js";
|
||||||
|
|
||||||
export async function checkPermission(member: GuildMember | APIInteractionGuildMember | null) {
|
export async function checkPermission(
|
||||||
let permission = false;
|
member: GuildMember | APIInteractionGuildMember | null,
|
||||||
if (member?.roles instanceof GuildMemberRoleManager) {
|
) {
|
||||||
if (member.roles.cache.has(config.discord.roleAdmin) || member.roles.cache.has(config.discord.roleMod)) {
|
let permission = false;
|
||||||
permission = true;
|
if (member?.roles instanceof GuildMemberRoleManager) {
|
||||||
}
|
if (
|
||||||
}
|
member.roles.cache.has(config.discord.roleAdmin) ||
|
||||||
console.log("user permission == " + permission);
|
member.roles.cache.has(config.discord.roleMod)
|
||||||
return permission;
|
) {
|
||||||
}
|
permission = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log("user permission == " + permission);
|
||||||
|
return permission;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user