Я пытался сделать приветственное сообщение, когда кто-то заходит на мой сервер, но я пытаюсь сделать так, чтобы он встраивался из другого файла. Он говорит, что guildMember не определен, и я это понимаю, но не знаю, как его определить.
Обратите внимание, что я использую discord.js версии 12.
Вот мой index.js:
const express = require('express');
const app = express();
const port = 8080;
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(port, () => console.info('Hosted site'));
const { Client, Intents } = require('discord.js');
const Discord = require('discord.js');
const variable = require('./commands/variable');
const welcome = require('./commands/welcome');
const mongoose = require('mongoose');
mongoose.connect(process.env['mongo'], { useNewUrlParser: true, useUnifiedTopology: true }).then(console.info('Mongo is connected!'))
const fs = require('fs');
const prefix = ('m?');
const client = new Client({
intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MESSAGE_REACTIONS],
partials: ['MESSAGE', 'CHANNEL', 'REACTION'],
});
client.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./commands/').filter(File => File.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command)
}
client.once('ready', async () => {
console.info('MBot is ready!');
client.user.setActivity("Vedad", {
type: "LISTENING"
});
});
client.on('guildMemberAdd', guildMember => {
guildMember.guild.channels.cache.get('975033510186324069').send(welcome.wlc)
})
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
if (command === 'wlcmsgid') {
client.commands.get('wlcmsgid').execute(message, args, Discord, client);}
else if (command === 'ping') {
client.commands.get('ping').execute(message, args, Discord, client);}
})
client.login(process.env['token']);
вот файл welcome.js:
const Discord = require('discord.js');
const variable = require('./variable');
module.exports.wlc = new Discord.MessageEmbed()
.setColor('#000000')
.setDescription(`━━━━━━━━━━━━━━━━━━━━━━━━
Welcome <@${guildMember.user.id}> to **GhostCommunity!**
━━━━━━━━━━━━━━━━━━━━━━━━`)
Вот моя консольная ошибка:
ReferenceError: guildMember is not defined
at Object.<anonymous> (/home/runner/MBot-1/commands/welcome.js:8:21)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (/home/runner/MBot-1/index.js:10:17)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
Я просто не могу понять, как определить guildMember в welcome.js. Пожалуйста, помогите, спасибо
У вас есть доступ к guildMember
в обработчике событий guildMemberAdd
, поэтому вам следует изменить welcome.wlc
на функцию, которая возвращает Discord.MessageEmbed()
и получает guildMember в качестве аргумента.
добро пожаловать.js
module.exports.wlc = (member) => {
return new Discord.MessageEmbed().setColor('#000000')
.setDescription(`━━━━━━━━━━━━━━━━━━━━━━━━
Welcome <@${member.user.id}> to **GhostCommunity!**
━━━━━━━━━━━━━━━━━━━━━━━━`)
}
index.js
client.on('guildMemberAdd', guildMember => {
guildMember.guild.channels.cache.get('975033510186324069').send(welcome.wlc(guildMember))
})
ну, я не совсем знаком с SO, но это будет что-то вроде этого:
Хорошо, спасибо, все равно попробую это решение
Я попробовал, и это работает! Большое спасибо!
Спасибо за ответ, но я все еще немного запутался. Можете ли вы показать это с примером кода, пожалуйста?