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

JDA机器人没有监听消息

冷正青
2023-03-14
import net.dv8tion.jda.api.AccountType;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import org.jetbrains.annotations.NotNull;

public class Main extends ListenerAdapter {
    public static void main(String[] args) throws Exception{
        JDABuilder bot = new JDABuilder(AccountType.BOT);
        String token = "token";
        bot.setToken(token);
        bot.build();
    }

    @Override
    public void onMessageReceived(@NotNull MessageReceivedEvent event) {
        System.out.println("message received");
        event.getChannel().sendMessage("reeeeeeee");
        super.onMessageReceived(event);
    }
}

共有1个答案

邵弘义
2023-03-14

您没有对SendMessage返回的MessageAction调用Queue()

使用X时不会发生任何事情

在JDA中,我们通过使用公共RestAction类来使用异步速率限制处理。当您有诸如Channel.SendMessage(“Hello”)之类的代码时;或message.delete();实际上什么都没发生。这是因为sendMessage(...)以及delete()返回一个RestAction实例。这里没有完成,因为该类只是执行请求的一个中间步骤。在这里,您可以决定使用异步队列()(推荐)、提交()或阻塞完成()(不推荐)。

public class Main extends ListenerAdapter {
    public static void main(String[] args) throws Exception{
        JDABuilder.createDefault(token) // don't use the deprecated constructor
                  .addEventListeners(new Main()) // register your listener
                  .build();
    }

    @Override
    public void onMessageReceived(@NotNull MessageReceivedEvent event) {
        System.out.println("message received");
        event.getChannel().sendMessage("reeeeeeee").queue(); // call queue
    }
}
 类似资料:
  • 我正在尝试让我的JDA discord bot删除文本频道中的所有消息,目前我使用的代码效率极低,偶尔有效,有时无效。代码: 我知道一个事实,我正在调用函数,我知道一个事实,正在传递的文本通道是正确的。请帮我同样的忙。

  • 在与JMS合作的过程中,我有一个疑问。据我所知,创建同步消息消费者是可能的。但是,我必须以一定的频率启动它,因为事实上没有侦听器。接下来,为了同步使用队列中的消息,我可以创建一个MDB并将池设置为1。我认为这不是一个好的解决办法。 我的目标是在消息出现在队列中时同步地使用它们。从我的观点来看,上述解决方案并不好:1。不时推出的消费者。2.MDB(通常异步)和池设置为1。 有什么适合我的解决方案吗?

  • 我在某处读到,您每10分钟只能修改2个通道,但您发送的消息也是如此吗?或者您只能每10分钟执行更改/发送/创建两次这样的操作吗? 和之间有什么区别 提前致谢:D

  • null 编辑: 我使用了jda.getUserCache();检查缓存是否工作,我是缓存,但它仍然不工作。

  • 只有监听设备消息后,在就收到消息数据才会返回消息内容,否则,不返回接收的消息内容。 请求方式: "|4|2|2|\r" 返回值: "|4|2|2|1|\r" 监听成功 Arduino样例: softSerial.print("|4|2|2|\r");

  • 我试图做一个程序来创建一个无尽的循环,例如: 但是主要的问题是一个机器人听不到另一个机器人的声音,所以这不起作用。。。 有没有办法让机器人听另一个机器人的?提前感谢!:)