Discord.js服务器欢迎

时间:2018-04-25 19:45:41

标签: javascript node.js discord discord.js

我有一个discord.js机器人。 机器人是否可以将添加到服务器的用户添加到DM?

示例:

  

用户#0004:将僵尸程序添加到服务器

     

Bot用户#0004的DM:嗨,谢谢你把我加到服务器等..

这在Discord.js / node.js中是否可行.. 如果是这样,有人可以帮我编码吗?谢谢! ;)

7 个答案:

答案 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) => {

});