【发布时间】:2021-08-01 11:04:35
【问题描述】:
我希望我的机器人在第一次加入服务器时说一些消息,有什么办法可以做到这一点?(比如在第一次加入时调用一个函数)我尝试了欢迎消息,但它们只有在人们加入时才有效。
【问题讨论】:
标签: javascript node.js discord discord.js messaging
我希望我的机器人在第一次加入服务器时说一些消息,有什么办法可以做到这一点?(比如在第一次加入时调用一个函数)我尝试了欢迎消息,但它们只有在人们加入时才有效。
【问题讨论】:
标签: javascript node.js discord discord.js messaging
我想您想知道您的机器人是否已添加到服务器。
client.on("guildCreate", guild => {
let log = client.channels.get("channel id");
const embed = new Discord.RichEmbed()
.setAuthor("I have been added to the server")
.setThumbnail(
guild.iconURL ||
"icon url"
)
.setColor("GREEN")
.addField("» Server Name:", `**${guild.name}**`)
.addField("» Server ID:", `\`\`\`${guild.id}\`\`\``)
.addField(
"Server Information:",
`**Server Ownwe: \`${guild.owner}\`\nServer Region: \`${guild.region}\`\nMember Count: \`${guild.members.size}\`\nChannel Count: \`${guild.channels.size}\`**`
)
.setTimestamp()
.setFooter(client.user.username, client.user.avatarURL);
log.send(embed);
});
client.on("guildDelete", guild => {
let log = client.channels.get("channel id");
const embed = new Discord.RichEmbed()
.setAuthor("I was kicked from the server")
.setThumbnail(
guild.iconURL ||
"icon url"
)
.setColor("RED")
.addField("» Server Name:", `**${guild.name}**`)
.addField("» Server ID:", `\`\`\`${guild.id}\`\`\``)
.addField(
"Server Information:",
`**Server Owner: \`${guild.owner}\`\nServer Region: \`${guild.region}\`\nMember Count: \`${guild.members.size}\`\nChannel Count: \`${guild.channels.size}\`**`
)
.setTimestamp()
.setFooter(client.user.username, client.user.avatarURL);
log.send(embed);
});
【讨论】:
guildCreate 在客户端加入公会时触发:
client.on('guildCreate', (guild) => {
// send a message to the guild owner
guild.owner.send('Thanks for adding me to your server');
// OR send a message to the systemChannel
guild.systemChannel.send('Thanks for adding me to your server');
// OR find a channel, like "General" for example
let channel = guild.channels.cache.find(
(ch) => ch.name.toLowerCase() === 'general',
);
if (!channel) return console.log('Where should I post?');
channel.send('Hey everyone');
});
【讨论】:
您必须使用guildMemberAdd 事件,该事件在用户加入机器人所在的服务器时触发。请改用guildCreate 事件。
client.on('guildCreate', guild => {
await guild.channels.fetch();
await guild.owner.fetch();
let channel = guild.channels.cache.filter(c => c.permissionsFor(guild.me).has("SEND_MESSAGES")).find(c => c.name.startsWith('general')) || guild.channels.cache.first();
if(!channel) return guild.owner.send('...');
channel.send('...')
})
【讨论】:
当用户加入服务器时,您可以将其保存在服务器上的本地数据库中。因此,当他们第一次加入时,您不会在您的数据库中找到他们,您可以发送消息,如果他们离开并重新加入,您可以在您的数据库中找到他们,这样您就不会发送消息。
【讨论】: