如何在Discord.js事件“ guildCreate”中发送消息

时间:2018-09-08 06:22:28

标签: javascript discord.js

我一直想知道当有人邀请我的机器人到他们的服务器时如何发送消息。

请在这方面帮助我,我无法弄清楚它在Python中是否存在,但我还不习惯。

谢谢您的帮助

3 个答案:

答案 0 :(得分:3)

以上所有答案均假设您对服务器有所了解,而在大多数情况下您却不了解!

您需要做的是循环浏览公会中的频道,找到您有权输入文字的频道。

您可以从公会获取频道缓存。 以以下示例为例:

bot.on("guildCreate", guild => {
  
let defaultChannel = "";
guild.channels.cache.forEach((channel) => {
  if(channel.type == "text" && defaultChannel == "") {
    if(channel.permissionsFor(guild.me).has("SEND_MESSAGES")) {
      defaultChannel = channel;
    }
  }
})
//defaultChannel will be the channel object that the bot first finds permissions for
defaultChannel.send('Hello, Im a Bot!')
    
   
});

您当然可以做进一步的检查,以确保可以在发短信之前先发短信,但这将使您走上正确的道路

更新discord.js 12+ Discord.JS现在使用缓存-这是12岁以上的答案

bot.on("guildCreate", guild => {
    let found = 0;
    guild.channels.cache.map((c) => {
        if (found === 0) {
          if (channel.type === "text") {
            if (channel.permissionsFor(bot.user).has("VIEW_CHANNEL") === true) {
              if (channel.permissionsFor(bot.user).has("SEND_MESSAGES") === true) {
                channel.send(`Hello - I'm a Bot!`);
                
                found = 1;
              }
            }
          }
        }
      });
   
  })

答案 1 :(得分:0)

您可以简单地使用guild.author.send("Thanks for inviting my bot");

向所有者发送消息

或者您也可以向特定用户发送消息: client.users.get("USER ID").send("My bot has been invited to a new server!");

答案 2 :(得分:0)

我不确定您是否正在使用命令处理程序,因为您似乎对JS不熟悉,所以我会假设您不是。以下是您要执行的操作的代码段:

client.on('guildCreate', (guild) => {
    guild.channels.find(t => t.name == 'general').send('Hey their Im here now!'); // Change where it says 'general' if you wan't to look for a different channel name.
});