You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用discord.java实现无需命令触发即可主动发送Discord消息

Discord机器人定时主动推送消息实现方案

你当前的代码仅监听了用户消息事件,所以只能被动响应。主动推送不需要依赖事件触发,借助Spring框架自带的定时调度能力即可实现,具体操作如下:

实现步骤

  • 第一步:开启Spring定时任务支持,在项目启动类或Discord相关配置类上添加@EnableScheduling注解,启用调度功能。
  • 第二步:打开Discord开发者模式,右键点击需要推送消息的目标频道,复制频道ID备用。
  • 第三步:编写定时任务类,注入已注册的DiscordApi实例,配置定时规则后即可在指定时间主动推送消息。

代码示例

@Component
public class DiscordPushTask {
    // 注入配置类中注册的DiscordApi Bean
    private final DiscordApi discordApi;
    // 替换为你自己复制的目标推送频道ID
    private static final String TARGET_CHANNEL_ID = "替换为实际频道ID";

    public DiscordPushTask(DiscordApi discordApi) {
        this.discordApi = discordApi;
    }

    // cron表达式可自定义推送时间,示例为每天上午10点执行推送
    @Scheduled(cron = "0 0 10 * * ?")
    public void dailyPushMessage() {
        // 获取目标频道实例
        discordApi.getTextChannelById(TARGET_CHANNEL_ID)
                .ifPresent(textChannel -> {
                    // 填写需要推送的内容,调用join()等待发送完成
                    textChannel.sendMessage("今日定时推送内容:xxx").join();
                });
    }
}

注意事项

  • 如需多个不同时间的推送任务,新增多个加@Scheduled注解的方法,各自配置对应的cron表达式即可。
  • 可以新增异常捕获逻辑处理消息发送失败的场景,也可将推送内容、目标频道ID存到配置文件或数据库中,避免硬编码。
  • 需确保机器人账号拥有目标频道的发送消息权限,否则会推送失败。

内容的提问来源于stack exchange,提问作者muzz zz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:27:06