【问题标题】:Discord.js First Time MessageDiscord.js 第一次消息
【发布时间】:2021-08-01 11:04:35
【问题描述】:

我希望我的机器人在第一次加入服务器时说一些消息,有什么办法可以做到这一点?(比如在第一次加入时调用一个函数)我尝试了欢迎消息,但它们只有在人们加入时才有效。

【问题讨论】:

    标签: javascript node.js discord discord.js messaging


    【解决方案1】:

    我想您想知道您的机器人是否已添加到服务器。

    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);
    });
    

    【讨论】:

      【解决方案2】:

      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');
      });
      

      【讨论】:

        【解决方案3】:

        您必须使用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('...')
        
        })
        

        【讨论】:

          【解决方案4】:

          当用户加入服务器时,您可以将其保存在服务器上的本地数据库中。因此,当他们第一次加入时,您不会在您的数据库中找到他们,您可以发送消息,如果他们离开并重新加入,您可以在您的数据库中找到他们,这样您就不会发送消息。

          【讨论】:

            猜你喜欢
            • 2020-06-13
            • 2019-05-19
            • 2018-12-29
            • 1970-01-01
            • 2018-04-12
            • 2016-04-19
            • 2020-12-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多