Compare commits

...

2 Commits

Author SHA1 Message Date
3a2073f61f edit owned messages to include pair explainations 2024-02-09 19:39:49 +01:00
73de6dbcec bugfix: simple logic patches 2024-02-09 19:34:20 +01:00
3 changed files with 30 additions and 4 deletions

View File

@ -1,13 +1,15 @@
import { Events } from 'discord.js';
import { ChannelType, Events } from 'discord.js';
import { VoiceChannel } from '../../database.js';
export const name = Events.ChannelDelete;
export async function execute(channel) {
if (channel.type !== ChannelType.GuildVoice) return;
// Delete channel entry once channel is deleted itself
const count = await VoiceChannel.destroy({
where: {
id: channel.id
}
});
if (count > 0) console.info(`[INFO] Custom VC with ID '${channel.id}' was deleted.`);
if (count > 0) console.info(`[INFO] Custom VC entry with ID '${channel.id}' was destroyed.`);
}

View File

@ -11,7 +11,6 @@ const vcPermissionOverwrites = [
PermissionFlagsBits.ViewChannel,
PermissionFlagsBits.MuteMembers,
PermissionFlagsBits.MoveMembers,
PermissionFlagsBits.ManageRoles,
PermissionFlagsBits.Connect,
PermissionFlagsBits.Stream,
PermissionFlagsBits.UseVAD,
@ -78,7 +77,8 @@ const leftVoiceChat = async (state) => {
export const name = Events.VoiceStateUpdate;
export async function execute(oldState, newState) {
if (!newState.channel) return await leftVoiceChat(oldState);
await leftVoiceChat(oldState)
if (!newState.channel) return;
// Find channel by id, return if not registered for customs
const createCh = await VoiceChannel.findOne({

View File

@ -1,8 +1,11 @@
import { join } from 'path';
import { Op } from 'sequelize';
import { config } from 'dotenv';
import { readdir } from 'fs/promises';
import { Message, RoleEmojiPair } from './database.js';
config();
export const removeSelfRoles = async (interaction, id) => {
// Try deleting message from database
const count = await Message.destroy({
@ -53,6 +56,23 @@ const saveMessageData = async (id, role, emoji) => {
await RoleEmojiPair.create({ message: id, role: role.id, emoji });
};
const editMessage = async (message, role, emoji) => {
if (message.author.id !== process.env.CLIENT) return;
// Find out whether to pad message or already present
let padding = '\n';
const reps = await RoleEmojiPair.findAll({ where: { message: message.id } });
if (reps.length === 0) padding += '\n';
// Get old and build new content of message
const current = message.content;
const next = current + padding +
`React with ${emoji} to receive <@&${role.id}>!`;
// Set message by editing
await message.edit(next);
};
export const addSelfRoles = async (interaction, msgID, role, emoji) => {
const { channel } = interaction;
@ -61,6 +81,10 @@ export const addSelfRoles = async (interaction, msgID, role, emoji) => {
// Get message by id
const message = await channel.messages.fetch(msgID);
step = 'edit';
// Try editing message to explain pair
await editMessage(message, role, emoji);
step = 'save data from';
await saveMessageData(msgID, role, emoji);