#node.js #mongodb #discord.js
Вопрос:
Я хочу, чтобы мой бот упомянул нового пользователя в приветственном сообщении, если модераторы настроят его на это. Однако я не знаю, как заставить моего бота прочитать ${member}
приветственное сообщение и знать, что в нем должен быть упомянут пользователь.
Ниже показано, что происходит, когда член присоединяется к моей гильдии.
client.on('guildMemberAdd', async (member) => {
if (member.bot) {
return
} else {
const welcome = require('./models/welcomeSchema');
const welcomeSchema = await welcome.findOne({
GuildID: member.guild.id
})
if (welcomeSchema) {
const mssg = welcomeSchema.Message;
const chan = welcomeSchema.ChannelID;
member.guild.channels.resolve(chan).send(mssg);
} else if (!welcomeSchema) return
}
});
Это моя схема для Монго.
const mongoose = require ('mongoose');
const welcomeSchema = new mongoose.Schema({
ChannelID: {
type: String,
required: true
},
Message: {
type: String,
required: true
},
GuildID: {
type: String,
required: true
}
});
module.exports = mongoose.model(`welcomes`, welcomeSchema);
И это команда, которая используется для установки приветственного сообщения.
const welcomeSchema = require('../models/welcomeSchema');
module.exports.run = async (bot, message, args) => {
const mssg = args.slice(2).join(" ")
if (!message.member.hasPermission("ADMINISTRATOR")) {
return message.reply("you lack sufficiant permissions to execute this command.");
}
if (!mssg) {
return message.reply("please state what message you want to welcome new members with.");
} else if (!args[1]) {
return message.reply("please state the channel ID of which you want this message to be sent in.");
}
const data = await welcomeSchema.findOne({
GuildID: message.guild.id
});
if (!data) {
message.channel.send("Welcome message set.");
const newData = new welcomeSchema({
GuildID: message.guild.id,
Message: mssg,
ChannelID: args[1]
})
newData.save();
} else if (data) {
await welcomeSchema.findOneAndRemove({
GuildID: message.guild.id
})
message.channel.send("Welcome message set.");
const newData = new welcomeSchema({
GuildID: message.guild.id,
Message: mssg,
ChannelID: args[1]
})
newData.save();
}
}
module.exports.config = {
name: "setWelcome",
aliases: []
}
Должен ли я заставить своего бота взять данные из базы данных и перевести их на Javascript, а затем отправить сообщение? Если да, то как мне это сделать?
Пожалуйста, дайте мне знать, если мне понадобится предоставить более подробную информацию. Я точно не знаю, как это четко сформулировать.
Ответ №1:
Заменить member.guild.channels.resolve(chan).send(mssg);
на client.channels.channels.cache.get(chan).send(mssg);