Discord机器人加入语音通话时发送消息

3

我尝试创建一个机器人,在用户加入语音通话时发送一条消息。代码没有显示任何错误信息,但是不起作用。以下是我的代码:

package listeners;

import net.dv8tion.jda.api.events.guild.voice.GuildVoiceJoinEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

public class voiceListener extends ListenerAdapter {
    @Override
    public void onGuildVoiceJoin(GuildVoiceJoinEvent event){
        event.getGuild().getTextChannelById("885172885797343317").sendMessage(event.getVoiceState() + "joined voice channel" + event.getChannelJoined() + ".").queue();
    }
}

我想主方法没问题,因为另一个监听器可以正常工作。

你尝试过打印输出吗?频道ID是否正确?你在哪里以及如何创建这个监听器?请改进你的问题,提供一个mre - CcmU
https://github.com/DV8FromTheWorld/JDA/wiki/19)-Troubleshooting#my-event-listener-code-is-not-executed - Minn
1个回答

2

我成功让它工作了,我为我的机器人编写了一个主要的启动类,将所有的命令链接到这个类中,以便更容易编码(见下文)。

public class BotStartup {

public static void main(String[] args) throws LoginException {
        JDABuilder jda = JDABuilder.createDefault("YOUR BOT TOKEN");
        
        jda.setActivity(Activity.playing("STATUS"));
        jda.setStatus(OnlineStatus.ONLINE);
        jda.addEventListeners(new messages());
        jda.addEventListeners(new events());
        jda.addEventListeners(new Clear());
        jda.addEventListeners(new onJoin());
        jda.setChunkingFilter(ChunkingFilter.ALL);
        jda.setMemberCachePolicy(MemberCachePolicy.ALL);
        jda.enableIntents(GatewayIntent.GUILD_MEMBERS);
        jda.build();

onJoin是我为你的代码所命名的类,它与原始代码完全相同,只是类名不同(见下文)

public class onJoin extends ListenerAdapter {
@Override
public void onGuildVoiceJoin(GuildVoiceJoinEvent event){
    event.getGuild().getTextChannelById("527272203721637890").sendMessage(event.getVoiceState() + "joined voice channel" + event.getChannelJoined() + ".").queue();
}

如您在第一张图片中所见,我使用了 --- jda.addEventListeners(new onJoin()); --- 这将命令链接到启动项,我建议您也这样做,因为这意味着更容易进行编码链接。

这是结果:

VS:DISCORD 服务器我的Discord名称 加入语音频道 VC:General Chat - Main(聊天ID)。

希望这可以帮助您! :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接