问题标签 [discord4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2097 浏览

java - Discord4J API (Java)| 如何获取服务器用户名的所有者并将其存储在字符串中?

我正在制作一个不和谐的机器人,我想获取服务器所有者的用户名并将其放入字符串中。

我想要的 ProcessCommand 类的代码:

0 投票
1 回答
325 浏览

java - 向成员添加角色时的任务权限 Discord4J

在我的程序中,我尝试为公会的(新)成员添加角色。但是当我尝试将角色添加到成员时,我收到一条错误消息:“缺少权限”。令人困惑的是,该机器人已经拥有管理角色的权限。在我授予机器人管理员权限后,错误仍然出现。

对代码的一些进一步解释: 成员 tempMem:是应该接收学生角色的成员。 Role getRole(String name, Guild guild):是一种方法,它只查看公会中的角色列表并返回具有作为参数给出的正确名称的角色。这个机器人所在的每个公会都应该有一个名为 STUDENT_ROLE_NAME 的角色。如果一切正常,这个片段应该只是获取学生角色并将其分配给 tempMem。

0 投票
2 回答
823 浏览

java - ReactionEmojis 如何在 discord4j 3.1.0 中工作

我目前正在使用 discord4j 开发一个机器人,我想在其中向消息添加反应(表情符号)。但我不知道如何使用 addReaction() 方法,而且我发现的每个示例都使用的是旧版本。在 dicord4j 的早期版本中,您可以将表情符号的 unicode 表示形式的字符串作为参数,但现在它只接受 ReactionEmoji 类型的对象。我查看了它的方法,除了 ReactionEmoji.unicode(String raw) 之外没有任何意义,但随后我收到错误消息“未知表情符号”。作为字符串的输入,我尝试了 unicode,实际的表情符号本身,然后我进入调试模式,向消息添加反应,然后在调试模式下获取反应,并复制反应的原始值,将其粘贴为unicode() mehtod 的输入参数,但它仍然没有 t 将其识别为表情符号。是否有一些我找不到的文档?我的代码:

0 投票
1 回答
2398 浏览

java - 从频道获取所有消息,discord-api

(discord4j 3.1.0)所以我想从(Guild)MessageChannel 获取所有消息,但据我所知,没有直接的方法(我的意思是没有 channel.getMessages() .block() 什么的)。一段时间以来,我一直在使用替代方法,它获取通道的最后一条消息,然后获取之前的所有消息。

直到今天它都运行良好......因为在 MessageDeleteEvent 中调用此方法时会出现问题。如果所述删除的方法是通道的最后一个方法。因为即使消息被删除了,channel.getLastMessage() 和 channel.getLastMessageId() 都引用了删除的方法。(在这种情况下,第一种方法会引发异常,而第二种方法是无用的,因为即使它返回 messageId,所有试图获取实际消息的方法也会引发异常)。我尝试在频道中创建自己的消息,然后调用 channel.getMessagesBefore(message) 但是 getMessagesOfChannel() 方法在我的程序中被调用得太频繁了,所以它完全填充了我的不和谐通知:(。那么有什么聪明的(或不是)以其他方式获取频道的所有消息的方法,

0 投票
1 回答
479 浏览

java - 如何在 spigot 插件中使用 discord4j

我正在为朋友的我的世界服务器制作插件,他们也为此服务器提供了不和谐服务器。我正在尝试使用 discord4j 在不和谐服务器和插件之间添加一些集成。插件编译得很好,当我尝试加载插件时,我得到两个异常之一:

  1. 第一次加载插件
  1. 当我重新加载插件时

这是我的 pom.xml:

负责不和谐互动的班级

0 投票
1 回答
262 浏览

java - Java Reactor - if/else 链接(过滤)

我正在将我的 Discord 机器人从Discord4J v2重写为v3基于 Reactor 的。我是响应式编程的新手,尤其是 Java Reactor。我想用三种类型的命令实现一个命令系统:

  1. DM 命令——用户作为直接消息发送给机器人的命令,
  2. 公共公会命令——用户#bot-commands在我的 Discord 服务器的特殊频道中发送的命令——每个具有特定角色X的人都可以使用这些命令,并且
  3. admin guild commands — 类似于 public,但用户必须有一些角色Y(高于X)。

如果用户尝试执行某些特定命令但他们没有获得所需的角色,机器人应该告诉他们这一点。否则,应该执行命令(考虑到发送者(消息作者)、发送此命令的通道以及命令本身(消息))。

我不确定如何反应地实现这一切,我在 Discord4J wiki 上找不到必要的信息。这是我目前拥有的:

此代码似乎工作正常,并允许我处理admin guild commands,即“权限级别”(最高角色级别)至少为我指定的成员在我的 Discord 服务器的文本频道中发送的命令。

但是我如何正确地(反应地和很好地)实现其余的命令呢?我没有在 Reactor 中找到类似 if/else 链接的东西,而且我真的不想多次重复上面的代码,只filter(...)更改 1-2 行。

0 投票
0 回答
1179 浏览

java - Discord4J:不存在类型变量 R 的实例,因此 void 符合 Mono

我有以下错误no instance(s) of type variable(s) R exist so that void conforms to Mono<? extends R>。我将如何解决这个问题?我用 Discord4J 在 Java 中编写了一个不和谐的机器人。当用户对相应性别 ID 的机器人表情符号做出反应时,喜欢写入数据库(或在此示例中简单地打印)用户及其性别。

我有一个数据库方法:

反应命令是这样的:

编辑:错误发生在这一行.flatMap(e -> Database.setUserGender(e.getUser().toString(), e.getEmoji()))

Edit2:我尝试了第一个使用 .flatMapMany() 的建议。我收到同样的错误:

0 投票
2 回答
98 浏览

java - 我对 Discord4Js MemberJoinEvent 有疑问

我刚开始为自己编写一个新的 Discord 机器人,看看我能创造什么。目前,我正在开发 Autorole 功能,但我只是不明白为什么 Bot 不会被 MemberJoinEvent 触发。这是我的代码:

0 投票
0 回答
58 浏览

java - 如何在 discrod4j 中为聊天机器人添加冷却时间?

我是初学者,刚刚学习。我使用 discord4j 为不和谐写了一个聊天机器人。一切正常,一切正常。但我不能解决一个问题。如何为我的机器人设置冷却时间?对于所有用户。全球冷却!如果有任何帮助,我将不胜感激!

0 投票
0 回答
55 浏览

discord - Discord4J 检测用户昵称更新

我试图让我的不和谐机器人(API Wrapper Discord4J)收听昵称的更新。

这是我尝试过的:

但是,当更改某人的昵称时,不会触发该事件。

该机器人已经可以收听消息,该消息通过以下方式工作:

我也尝试了 UserUpdateEvent,但结果相同。