我有一个discord.js机器人。 机器人是否可以将添加到服务器的用户添加到DM?
示例:
用户#0004:将僵尸程序添加到服务器
Bot用户#0004的DM:嗨,谢谢你把我加到服务器等..
这在Discord.js / node.js中是否可行.. 如果是这样,有人可以帮我编码吗?谢谢! ;)
答案 0 :(得分:2)
不幸的是,仅使用Discord.js是不可能的 您最终所做的是有一个网站使用Discord OAuth ,用户需要使用他的帐户登录,并从那里生成邀请机器人的链接,然后用户将机器人添加到服务器。但仍然不会完美,例如,如果2个用户同时邀请机器人?机器人只会加入一次,但会有没办法来找出真正邀请的人。
你可能会尝试别的东西,比如试图找到一个名为lobby或general或类似的频道,然后在那里发送消息。
答案 1 :(得分:2)
您可以轻松完成此操作:
client.on("guildCreate", guild => {
guild.owner.send('Thanks! You can use +help to discover commands.')
});
奖金:将此代码添加到触发器中,以在控制台上记录新的联接:
// This event triggers when the bot joins a guild.
console.log(`New guild joined: ${guild.name} (id: ${guild.id}). This guild has ${guild.memberCount} members!`);
答案 2 :(得分:1)
这可以通过客户端的 guildCreate
事件实现。所以:
<client>.on('guildCreate', guild => {
guild.owner.send("Thanks for adding me to your server!")
})
但是,您可能会遇到 Cannot read property 'send' of null
的错误,这是因为公会的所有者是一个可为空的属性,因为它可能不在缓存中。要解决此问题,您可以使用 guild.members.fetch(guild.owner.user.id)
将成员放入缓存。但是,您确实需要等待返回的承诺:
<client>.on('guildCreate', guild => {
let owner = await guild.members.fetch(guild.owner.user.id)
owner.send("Thanks for adding me to your server!")
})
答案 3 :(得分:0)
我也去过那里,但不幸的是,你不能只获得添加机器人的人的身份证。但肯定有这个问题的解决方案。我也有一个Discord机器人,当机器人加入一个新的服务器时,它会找到它可以说话的第一个频道,检查它是否是文本频道,并且机器人有权在那里说话,然后在机器人中发送欢迎信息。找到频道。
以下是我的表现:
client.on("guildCreate", guild => {
var found = false;
guild.channels.forEach(function(channel, id) {
// If a channel is already found, nothing more needs to be done
if(found == true || channel.type != "text") {
return;
}
// If the channel isn't found and the bot has permission to
// send and read messages in the channel, send a welcome message there
if(guild.me.permissionsIn(channel).has("SEND_MESSAGES") && guild.me.permissionsIn(channel).has("VIEW_CHANNEL")) {
found = true;
return channel.send("Thanks for inviting me, blablabla")
}
})
});
对我而言,它完美无缺,如果您对代码有任何疑问,请告诉我。
答案 4 :(得分:0)
不幸的是,您无法获得该机器人的邀请人,但是,您可以获得该机器人被邀请的服务器的所有者(该机器人最多),您可以这样写:
client.on("guildCreate", guild => {
guild.owner.send('Thanks for adding me!')
});
答案 5 :(得分:0)
尝试这样的事情
const Discord = require("discord.js");
const client = new Discord.Client();
client.on("guildCreate", server => {
let embed = new Discord.RichEmbed() // Makes a pretty embed
.setTitle("Thanks for adding me to your server!")
.setDescription("something here...")
.setColor("RANDOM")
.setFooter("Copyright ExampleBot.com");
server.owner.send(embed);
});
client.login("token");
答案 6 :(得分:0)
首先,我们需要检查机器人是否已添加到公会中。可以使用以下代码完成此操作:
zfs set compression=on <name of pool>
执行完此操作后,我们实际上应该向所有者发送消息:
client.on("guildMemberAdd", (guild) => {
});