【问题标题】:Discord.js V12 | How can i send a welcome message to users that has joinedDiscord.js V12 |如何向已加入的用户发送欢迎消息
【发布时间】:2023-03-20 21:26:01
【问题描述】:

我想在人们通过我的机器人在这样的特定频道中加入我的服务器时发送消息(只是特定服务器而不是机器人加入他们的其他服务器!):

Welcome {USERNAME_TAG}
Invited by: {THE USER WHO INVITE THE USER}
Member count: {CHANNEL MEMBERS}

我是一个新的编码员 - 对不起菜鸟问题

【问题讨论】:

    标签: node.js discord.js bots


    【解决方案1】:

    您可以使用guildMemberAdd 事件,该事件在成员加入您的机器人所在的公会时发出。

    // create the event
    client.on('guildMemberAdd', (member) => {
     // code..
    });
    

    第一个和最后一个请求相当简单。 member.user.tag可以显示会员标签,member.guild.memberCount可以获取公会会员数量。

    但是,您的第二个请求虽然可能,但执行起来会有点困难。我建议阅读 this guide 以了解有关邀请以及如何使用邀请的更多信息,但现在,我将只使用他们网站上显示的代码。

    const invites = {};
    
    client.on('guildMemberAdd', (member) => {
     member.guild.fetchInvites().then(async (guildInvites) => {
      const ei = invites[member.guild.id];
      invites[member.guild.id] = guildInvites;
      const invite = guildInvites.find((i) => ei.get(i.code).uses < i.uses);
      const inviter = await client.users.fetch(invite.inviter.id);
    
      const channel = member.guild.channels.cache.get('Channel ID Here');
      channel.send(
       `Welcome ${member.user.tag}\nInvited by ${inviter.tag ||
        'Unknown#0000'}\nMember Count: ${member.guild.memberCount}`
      );
     });
    });
    

    【讨论】:

    • 谢谢,但是...@Lioness100 我需要向特定服务器打招呼的命令,而不是机器人加入的其他服务器! h知道如何在特定频道中说消息!我只想在会员加入我的服务器而不是其他服务器时发送消息
    • 只需在顶部添加一个if (member.guild.id !== 'Guild ID') 行。请在以后更好地表达您的问题,很难理解您想要什么。
    【解决方案2】:

    第一和第三件事可以做。中间的事情,我不相信能做到。代码如下:

    // Run dotenv
    require('dotenv').config();
    
    const Discord = require('discord.js');
    const client = new Discord.Client();
    
    client.on('ready', () => {
        console.log(`Logged in as ${client.user.tag}!`);
    });
    
    client.on('guildMemberAdd', member => {
        channel = member.guild.channels.cache.get("channel id");
        channel.send("Welcome " + member.displayName + "\n Member Count: " + member.guild.memberCount);
    })
    
    client.login(process.env.DISCORD_TOKEN);
    

    那里。当有人加入时,我们只是将带有一些数据的消息发送到频道。

    【讨论】:

    • 仅适用于我的频道吗?因为我的机器人加入了 3 个通道
    • @Sarajohns 你的意思是在 3 个公会中?然后你使用channel = msg.guild.channels.cache.find(c =&gt; c.name === 'channel-name-here');
    • 不,兄弟,我的意思是我需要命令,当用户加入我的服务器时发送该消息(而不是在其他服务器中)并提及加入我的服务器的人,如欢迎@GabRio Blu \n 会员计数
    • @Sarajohns 只需转到设置,外观,然后向下并启用开发人员模式。右键单击您选择的频道,然后将其粘贴到 channel = msg.guild.channels.cache.get("paste here"); 的字符串中,如果我明白您的意思。
    • 哦,我觉得@Lioness100 回答得比我好:P
    【解决方案3】:

    您可以使用 guildMemberAdd

    client.on('guildMemberAdd', (member) => {
        client.channels.cache.get("YOUR CHANNEL ID").send(`Welcome ${member} To The Server!`);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-07
      • 2020-01-22
      • 2021-11-12
      • 2021-12-24
      • 2021-01-25
      • 2021-11-13
      • 2021-10-09
      • 2021-10-12
      相关资源
      最近更新 更多