【问题标题】:How Can My Discord.js Bot welcome new people to the server?我的 Discord.js 机器人如何欢迎新人加入服务器?
【发布时间】:2021-02-07 12:37:50
【问题描述】:

我正在努力让机器人自动欢迎多台服务器上的新成员,这是我目前拥有的代码,它没有出现错误,但它不起作用

client.on("guildMemberAdd", (member) => {
    const guild = member.guild;
    if (!newUsers[guild.id]) newUsers[guild.id] = new Discord.Collection();
    newUsers[guild.id].set(member.id, member.user);
  
    if (newUsers[guild.id].size > 10) {
      const userlist = newUsers[guild.id].map(u => u.toString()).join(" ");
      guild.channels.find(channel => channel.name === "general").send("Welcome our new users!\n" + userlist);
      newUsers[guild.id].clear();
    }
  });
  
  client.on("guildMemberRemove", (member) => {
    const guild = member.guild;
    if (newUsers[guild.id].has(member.id)) newUsers.delete(member.id);
  });```

【问题讨论】:

  • 错误是什么?
  • @Jakye 它没有出现错误,它实际上不会发送

标签: javascript discord discord.js


【解决方案1】:

您的问题在于您的第三行代码。你在这里所做的是每次有人加入时创建一个新的集合。这意味着集合永远不会是> 10,因为它始终是1

要解决此问题,只需在索引文件的顶部创建集合,而不是在侦听器内。

在旁注中,我假设您想要创建集合以跟踪谁在您的不和谐服务器中。这不是一个好主意,因为每次机器人重新启动时都会重新创建它,而且它只会在有人加入或离开时更新,所以它不准确。 guild.members 集合更易于使用。

编辑:这就是你会做这样的事情的方式

client.on('guildMemberAdd', member => {
    const guild = member.guild;
    const userlist = guild.members.cache.map(u => `\n${u.user.username}: ${u.user.id}`);
    guild.channels.find(channel => channel.name === "general").send("Welcome our new user!\n Users" + userlist);
})

请记住,这将返回公会的所有成员。您只能使用guildMembersChunk 监听器来欢迎多个成员,并且所有这些成员都需要来自同一个公会,这不太可能。

【讨论】:

  • 谢谢,你能发布一个更正的例子吗?
  • 自带错误,find不是函数 guild.channels.find(channel => channel.name === "general").send("Welcome our new user!\n Users " + 用户列表); ^ TypeError: guild.channels.find 不是函数
  • 您需要使用guild.members.cache。查看答案。
猜你喜欢
  • 2021-11-13
  • 2020-01-22
  • 2018-10-06
  • 2021-11-12
  • 2021-01-22
  • 2021-06-01
  • 2021-06-24
  • 2020-05-18
  • 1970-01-01
相关资源
最近更新 更多