So, I’m trying to make a discord forums moderating bot. I honestly have no idea how the new discord.js works? Last time i coded a discord bot was like 2 yrs ago and I’m using the same functions as my old bot, but now its not working
Below is my index.js
const { Client, GatewayIntentBits, SlashCommandBuilder, Routes } = require('discord.js');
const { REST } = require('@discordjs/rest');
const TOKEN = 'your-bot-token-here'; // Put your bot token here
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildMembers
]
});
const commands = [
new SlashCommandBuilder()
.setName('modlog')
.setDescription('Sets the modlog channel')
.addChannelOption(option =>
option.setName('channel')
.setDescription('The channel to log moderation actions')
.setRequired(true))
]
.map(command => command.toJSON());
const rest = new REST({ version: '10' }).setToken(TOKEN);
(async () => {
try {
console.log('Started refreshing application (/) commands.');
await rest.put(
Routes.applicationCommands(client.user.id),
{ body: commands },
);
console.log('Successfully reloaded application (/) commands.');
} catch (error) {
console.error(error);
}
})();
let modLogChannelId = null;
client.once('ready', () => {
console.log(`Logged in as ${client.user.tag}`);
});
client.on('interactionCreate', async interaction => {
if (!interaction.isCommand()) return;
const { commandName, options, member } = interaction;
if (commandName === 'modlog') {
if (!member.permissions.has('Administrator')) {
await interaction.reply({ content: 'You do not have permission to use this command.', ephemeral: true });
return;
}
modLogChannelId = options.getChannel('channel').id;
await interaction.reply(`Moderation log channel set to <#${modLogChannelId}>`);
}
});
const logAction = async (message) => {
if (modLogChannelId) {
const logChannel = await client.channels.fetch(modLogChannelId);
logChannel.send(message);
}
};
// Event listeners for forum actions
client.on('threadCreate', thread => {
if (thread.parent && thread.parent.type === 'GUILD_FORUM') {
logAction(`Forum created: ${thread.name} by ${thread.owner.user.tag}`);
}
});
client.on('threadUpdate', (oldThread, newThread) => {
if (newThread.parent && newThread.parent.type === 'GUILD_FORUM') {
if (oldThread.archived !== newThread.archived && newThread.archived) {
logAction(`Forum archived: ${newThread.name} by ${newThread.owner.user.tag}`);
}
if (oldThread.locked !== newThread.locked && newThread.locked) {
logAction(`Forum locked: ${newThread.name} by ${newThread.owner.user.tag}`);
}
}
});
client.on('threadDelete', thread => {
if (thread.parent && thread.parent.type === 'GUILD_FORUM') {
logAction(`Forum deleted: ${thread.name} by ${thread.owner.user.tag}`);
}
});
client.login(TOKEN);
When you run this it says, TypeError: cannot read properties of null (reading ‘id’)
at index.js:33:52
New contributor
user25755728 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.