首页 > 解决方案 > 当有人加入服务器时,试图让 Discord 机器人写一条消息

问题描述

标题几乎总结了它,但我会添加更多信息。我正在尝试制作一个在有人加入时发送消息的机器人。该消息将嵌入新帐户的一些信息。msg 需要写在 2 个不同的频道上,并且还需要向新用户发送 PM。

我试过这样做,但我不知道为什么它不发送消息:

module.exports = (client) => {

const Discord = require("discord.js")
const moment = require("moment");
require('moment-duration-format');
moment.locale('es');

client.on("guildMemberAdd", (member) => {

const embedGMA = new Discord.MessageEmbed()
.setTitle(" **NEW MEMBER**")
.setDescription('▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬')
.setThumbnail(member.avatarURL())
.addField('USER:',member.tag, true)
.addField('MEMBER:', member.user, true)
.addField('ID:', member.id, true)
.addField('ACCOUNT CREATED:', member.createdAt.toDateString(), true)
.setColor("GREEN")
.addField('NOW WE ARE ' + member.guild.memberCount + ' MEMBERS.', true )
.setTimestamp()
.setFooter(server.name, server.iconURL()) 

member.send("HERE GOES THE PM")
let channel1 = client.channels.cache.get('CHANNEL ID');
let channel2 = client.channels.cache.get('CHANNEL ID');

channel1.send({ embed : embedGMA})
channel2.send({ embed : embedGMA})
});
}

标签: javascriptdiscorddiscord.js

解决方案


据我所知,您正在尝试在嵌入中发送嵌入,因为您在此处声明了嵌入:“const embedGMA = new Discord.MessageEmbed()”,然后尝试在此处再次将其作为嵌入发送:“channel1.send ({ 嵌入 : embedGMA})"。请参阅此处以供参考。要修复它,试试这个

编辑:您需要将下面的代码放入您的 index.js 文件(或任何您命名的文件以启动机器人)

            const Discord = require("discord.js");
            /* We can ignore this for the most part as this has nothing to do with the code below
            const moment = require("moment");
            require('moment-duration-format');
            moment.locale('es'); */

            client.on("guildMemberAdd", (member) => {
                //here we declare a new Embed
                const embedGMA = new Discord.MessageEmbed()
                    .setTitle(" **NEW MEMBER**")
                    .setDescription('▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬')
                    .setThumbnail(member.user.displayAvatarURL()) //**
                    .addField('USER:', member.displayName, true) //**
                    .addField('MEMBER:', member.user, true)
                    .addField('ID:', member.id, true)
                    .addField('ACCOUNT CREATED:', member.createdAt.toDateString(), true) // This might give you trouble if you don't have this function defined somewhere
                    .setColor("GREEN")
                    .addField('NOW WE ARE ' + member.guild.memberCount + ' MEMBERS.', `\u200b`, true) //**
                    .setTimestamp()
                    .setFooter(server.name, server.iconURL()); // You need to define server somewhere

                member.send("HERE GOES THE PM")
                let channel1 = client.channels.cache.get('CHANNEL ID');
                let channel2 = client.channels.cache.get('CHANNEL ID');
                
                //here we just send the Embed
                channel1.send(embedGMA);
                channel2.send(embedGMA);
            });

附言。我还更正了您的一些嵌入设置,我用 //** 标记了它们


推荐阅读