当前位置: 首页 > 知识库问答 >
问题:

discord.js,尽管打开了意图,事件仍不工作

万俟玉书
2023-03-14

这是我在这里的第一个问题,所以如果我做错了什么,我提前道歉。

如你所知,不和谐最近实施了一些改变,这使得有必要激活特权网关意图,这样机器人就可以继续欢迎新成员并给他们角色。

我的机器人在一个服务器中,所以我同时授予它PRESENCE INTENT和SERVER MEMBERS INTENT。我的印象是,这应该足以让机器人重新开始正常工作,但可悲的是,它仍然不欢迎新成员,也没有给它自定义角色。其他一切正常工作(它响应!nameofthebot),并且机器人在线。我还在我希望它们处于活动状态的通道中手动给了它所有必要的权限。

我对代码不是很了解,由于阅读了这里和其他网站上的讨论,我构建了这个机器人。因此,我想知道在这个级别上是否也有一些东西需要更新。下面是有问题的代码:

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', function(member) {
  member.guild.channels.get("539191415624826903").send(`Welcome to our server <@${member.user.id}>. Please do not forget to read the rules, and if you have time, don't hesitate to tell us a little about yourself.<:__:551298213622317066>`)
 var role = member.guild.roles.get("549670094079524867");
 member.addRole(role)
});

client.login(process.env.BOT_TOKEN);

我仔细检查了频道和成员ID,他们应该没事。为了以防万一,代码托管在GitHub上,机器人运行要归功于Heroku。

提前感谢所有能够帮助我找出我所缺少的东西的人。

共有1个答案

葛昕
2023-03-14

对于guildMemberAdd、guildMemberRemove、guildMemberUpdate事件,您需要启用“GUILD_MEMBERS”意图

请检查此链接

这就是我如何创建我的机器人客户端:

const Discord = require("discord.js");  
const { Client, Intents } = require("discord.js");

client = new BotClient({
  ws: { intents: [Intents.NON_PRIVILEGED, "GUILD_MEMBERS"] },
});

const Discord = require("discord.js");  
const { Client, Intents } = require("discord.js");

client = new BotClient({
  ws: { intents: Intents.ALL },
});

还请确保您已在您的不和谐开发人员门户上启用了特权意图

 类似资料:
  • 问题内容: 我正在尝试将IBM的CPLEX库与我的Java应用程序集成。现在,我只是试图创建一个IloCplex对象。我添加了Cplex.jar,它可以很好地编译,但是当我运行它时: Cplex在抛出异常之前打印此消息: 我通过这个参数给JVM: 。这是cplex124.dll的位置。我看过的每个教程都给出了相同的步骤,我觉得自己很好地遵循了它们。 我究竟做错了什么?? 问题答案: 我在互连网上发

  • 在我的应用程序中,我有3个活动,主要活动,次要活动和第三次活动。我希望SecondaryActivity成为Android 6上特定域的默认应用程序链接处理程序,如本指南所述。同时,我希望另一个活动TertiaryActivity能够处理来自另一个域的链接,但不是默认处理程序,因为我不拥有该域。下面是我的AndroidManifest来说明: 我阅读了这本关于应用程序链接的广泛指南,它解释了And

  • 问题内容: 我不明白…是我还是这是节点中的错误? 可以按预期进行: 这发出了警告: 我懂了 问题答案: 使用与承诺回报新希望(这就是所谓的链接)。因此,当您执行以下操作时: 您的最初承诺在哪里,您将在第1行上创建一个新的承诺(现在不再存在。我们称它为 )。因此,即使您使用with ,也不会处理上的拒绝,这解释了您在控制台上看到的消息。 为了避免出现此消息,您应该在第1行的新承诺中添加a

  • 我希望存储在redis缓存中的数据在给定的时间段后自动从缓存中清除,而无需对其调用delete方法。在这个POC中,我将TTL设置为60秒。我曾尝试在缓存管理器中使用API SetDefaultExpire、setExpires设置它,并在RedisTemplate中使用API expire设置它。到目前为止,没有一个解决方案对我有效。 在使用的redis存储库中, 请给我指出正确的方向。感谢您的

  • 我在sdcard中的某个文件夹中有一些pdf文件。我创建了一个将所有pdf显示为ListView的应用程序。当我单击任何pdf文件时,它会在officeSuite应用程序(不支持或损坏文件格式)中出现错误。代码有问题。这是代码。 //显示为ListVIew的项目代码 //打开文件的代码VIA Intent 错误: 损坏或不支持的文件格式

  • 问题内容: 我正在尝试将接口绑定到其实现,如从配置文件中读取的那样,以便可以将其提供给IoC容器。这大致是我想做的事情: 是否有可能获得? 问题答案: 您需要将类显式传递给构造函数(并自行存储)。