javascript - 当有人加入服务器时,试图让 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})
});
}
解决方案
据我所知,您正在尝试在嵌入中发送嵌入,因为您在此处声明了嵌入:“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);
});
附言。我还更正了您的一些嵌入设置,我用 //** 标记了它们
推荐阅读
- java - 如何在spring boot app中删除动态创建的消费者组
- javascript - 使用 Node.js 解析和修改本地 HTML
- python - 填补烛台图范围突破之间的空白
- html - 无法更改下拉元素的宽度
- mapbox - 在 Mapbox-GL 中动态移除 Mapbox 3D 地形
- amqp - 在 Artemis MessagingClient 失败后 Corda 节点崩溃,“Artemis MessagingClient 失败。正在关闭。”
- javascript - 我无法在 node.js 中上传 PDF 文件
- awk - 如何使用 sed 或 awk 打印以关键字开头并以反斜杠连接的行
- node.js - 如何在猫鼬模式中定义对象数组的最小长度?
- sas - 在 SAS 中格式化 proc freq 输出表