标签: discord-jda

如何检查邮件中是否包含组合字符?

.

.

.

例如:กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็ ็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้(或任何"zalgo"文本)

我还没有找到任何方法来检查这些.我正在制作一种反垃圾邮件,我认为不需要保留这些反垃圾邮件,因为它们可能会滞后于用户,而且通常只是垃圾邮件.

我想做的是

if (getMessage().getRawContent().contains(combined character).delete();
Run Code Online (Sandbox Code Playgroud)

如果有人知道检查组合字符的简单方法,请发布!

如果您对我的要求感到困惑,我可以进一步解释,并在需要时显示更多示例.

java discord discord-jda

15
推荐指数
1
解决办法
472
查看次数

java.lang.NullPointerException:无法读取数组长度,因为“<local3>”为空

我正在开发 JDA Discord 机器人,每次运行它时,我都会遇到此异常。

java.lang.NullPointerException: Cannot read the array length because "<local3>" is null
    at com.houseofkraft.handler.CommandHandler.scanIndex(CommandHandler.java:42)
    at com.houseofkraft.core.DiscordBot.<init>(DiscordBot.java:68)
    at com.houseofkraft.Stratos.main(Stratos.java:13)
Run Code Online (Sandbox Code Playgroud)

我试图制作一个基本的命令处理程序,这是它的代码:

 public void scanIndex(Index index) throws IOException, InvalidLevelException {
        String[] commandList = index.indexClass;

        for (String classPath : commandList) {
            if (classPath.startsWith("com.houseofkraft")) {

                String[] classPathSplit = classPath.split("\\.");
                String commandName = classPathSplit[classPathSplit.length-1].toLowerCase();

                commandPaths.put(commandName, classPath);
                DiscordBot.logger.log("Added " + commandName + " / " + classPath + " to path.", Logger.DEBUG);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

索引.java:

package com.houseofkraft.command;

public class Index {
    public String[] indexClass; …
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception discord-jda

6
推荐指数
1
解决办法
5万
查看次数

如何让 Discord Bot 等待特定用户使用 JDA 发送消息?

我目前正在介绍 Java 编程课程,最近开始尝试使用 JDA 工具为我的服务器制作一个基本的 Discord 机器人。理想情况下,我希望我的机器人在有人说“你好苹果!”时做出回应。通过询问他们的名字,然后回答“嗨!” 如果此消息是由说“Hello Apples!”的同一个人发送的 现在我的机器人无法等待任何用户输入超过最初的“Hello Apples!” 消息,并立即溢出所有文本。我相信我当前的代码设置正确,以确保机器人只会响应“嗨!” 如果它收到来自最初发送“Hi Apples!”的同一个人的消息,但我不能完全确定,因为它不会等待其他消息,
你好!告诉我你的名字,或者说“停止”!
嗨嗨苹果!!
等待轮到你

我真的很想知道如何创建某种“停止”,或者一种方法,它会导致机器人等待最初问候机器人的用户的额外用户输入,如果可能的话,一种设置时间的方法限制,以便机器人在他们不回复时不会保持无法操作。

import net.dv8tion.jda.core.AccountType;
import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.JDABuilder;

public class Main {
  public static void main(String[] args) throws Exception {
    try {
      JDA api = new     JDABuilder(AccountType.BOT).setToken("NTQxMTMxMDc4MTY1ODU2MjYw.DzbGoQ.oFIM_py    pLMOc60qU1PgeeUXU8Qo").build();
      api.addEventListener(new MyEventListener());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.MessageChannel;
import net.dv8tion.jda.core.entities.Role;
import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.entities.*;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;

public class MyEventListener extends ListenerAdapter {
  public void onMessageReceived(MessageReceivedEvent …
Run Code Online (Sandbox Code Playgroud)

java discord discord-jda

5
推荐指数
1
解决办法
7245
查看次数

有没有办法在不和谐消息中找到单词的确切字符串?

目前我正在开发一个不和谐的机器人,它正在过滤消息。当尝试过滤包含在其他单词中的单词时,会出现问题,从而触发重复消息。

\n

这是我的filter.txt:

\n
sad\nsadness\nsadnesses\n
Run Code Online (Sandbox Code Playgroud)\n

由于“悲伤”也可以在“悲伤”中找到,因此每当写“悲伤”时,我都会得到“悲伤”的误报。
\n是否可以仅检测消息中的确切字符串?就像:I want to be happy, because sadness is bad \xe2\x86\x92 '只检测悲伤'

\n

我希望你明白我的意思。

\n

代码:

\n
public void onGuildMessageReceived(GuildMessageReceivedEvent e) {\n    File file = new File("src/filter.txt");\n    try {\n        BufferedReader br = new BufferedReader(new FileReader(file));\n        String line;\n        while ((line = br.readLine()) != null) {\n            if(!line.startsWith("#")) {\n                if(e.getMessage().getContentRaw().contains(line)) {\n                    User user = e.getJDA().getUserById(e.getAuthor().getIdLong());\n                    e.getMessage().delete().queue();\n                    user.openPrivateChannel().queue(privateChannel -> {\n                        privateChannel.sendMessage("Bitte achte auf deine Sprache!").queue();\n                    });\n                }                   \n            }\n        }\n    } catch (IOException e1) {}\n}\n …
Run Code Online (Sandbox Code Playgroud)

java discord-jda

5
推荐指数
1
解决办法
8425
查看次数

IntelliJ IDEA中的Java语言级别问题

我只是开始用IntelliJ IDEA在Java中用一些简单的函数来编写Discord Bot。现在我确实有一个问题,我必须为特定功能使用语言级别8,但是当我这样做时,它给我一个错误,以前没有任何工作现在可以正常工作。

码:

package main;
import net.dv8tion.jda.core.AccountType;
import net.dv8tion.jda.core.JDABuilder;
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.events.guild.voice.GuildVoiceJoinEvent;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
import net.dv8tion.jda.core.entities.Role;
import net.dv8tion.jda.core.entities.User;
import java.util.List;
import javax.security.auth.login.LoginException;

public class Main extends ListenerAdapter {

public static void main(String[] args) throws LoginException {
    JDABuilder builder = new JDABuilder(AccountType.BOT);

    String token = "Token of bot which i dont want to show here";

    builder.setToken(token);

    builder.addEventListener(new main.Main());

    builder.buildAsync();
}

@Override
public void onMessageReceived(MessageReceivedEvent event) {
    System.out.println("We received a message from " +
            event.getAuthor().getName()+": "+ event.getMessage().getContentDisplay());

    if(event.getMessage().getContentRaw().equals("!ping")) …
Run Code Online (Sandbox Code Playgroud)

java discord-jda

4
推荐指数
1
解决办法
1375
查看次数

如何使用 JDA 将带有消息的文件发送到 Discord?

我正在使用JDA lib 创建我的不和谐机器人,但遇到了一个问题:为了使用文件发送消息,我应该使用现有消息:

RestAction<Message> sendFile(File file, Message message)
RestAction<Message> sendFile(File file, String fileName, Message message)
RestAction<Message> sendFile(InputStream data, String fileName, Message message)
Run Code Online (Sandbox Code Playgroud)

没有使用简单字符串消息发送文件的实现。因此,当我尝试发送文件并向其传递消息时,我收到了重复的消息。

所以问题是:如何Message在不重复消息的情况下创建附加文件?

java discord discord-jda

3
推荐指数
1
解决办法
1万
查看次数

使用 JDA 向 Discord 中的特定频道发送消息

如何要求bot向另一个与bot接收命令不同的通道(特定通道)发送消息?

假设 bot!ban @xxx在 channel 中接收消息#a,如果操作完成,bot 发送ban to user @xxx is given到 channel #b

代码Main.java

import net.dv8tion.jda.core.*;

public class Main {

    private static String token = "NDk0MjI2Mjk2OTY5MjMyMzk0.DowgCA.j0sQHnBV3wm70rzz7Q78rX0NVPU";
    public static void main(String[] args) throws Exception{

        try {
            JDA api = new JDABuilder(AccountType.BOT).setToken(token).build();
            api.addEventListener(new MyEventListner() );
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

代码MyEventListner.java

import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.MessageChannel;
import net.dv8tion.jda.core.entities.Role;
import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;

    public …
Run Code Online (Sandbox Code Playgroud)

java discord discord-jda

3
推荐指数
1
解决办法
1万
查看次数

JDA如何通过ID获取消息

有没有办法只通过他的ID和他的TextChannelID来获取消息?

我找到了这个 :

Message message = TextChannel.getHistory().getMessageById(String id);
Run Code Online (Sandbox Code Playgroud)

但它只是抛出一个错误: net.dv8tion.jda.api.exceptions.ErrorResponseException: 10008: Unknown Message

java discord-jda

3
推荐指数
1
解决办法
5985
查看次数

Discord JDA - 无效的成员列表

我正在创建一个 Discord 机器人并遇到了一个奇怪的问题。我需要遍历服务器上的每个用户并执行条件操作。但是当收到所有成员的列表时,它只包含我和机器人本身。

public class Bot extends ListenerAdapter {
    public void onGuildMessageReceived(GuildMessageReceivedEvent Event) {
        String Message = Event.getMessage().getContentRaw();

        if(Message.charAt(0) == Globals.BOT_PREFIX) {
            String[] Args = Message.split("\\s+");

        if(Args[0].equalsIgnoreCase(CommandType.COMMAND_DEV_TEST)) {
            List<Member> MemberList = Event.getGuild().getMembers();
            for(int i = 0; i < MemberList.size(); i++)
                System.out.println(MemberList.get(i));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果另一个人写,那么仍然只显示我和机器人。

java bots discord discord-jda

3
推荐指数
1
解决办法
3371
查看次数

JDA - 将“用户”转换为“会员”

为了从不同用户中删除角色,我使用以下代码行:

Member member = e.getMember();
Guild guild = member.getGuild();

for (Role role : guild.getRoles()) {
    System.out.println("getting em!");
    System.out.println(role.getId());
    if (role.getId().equals("496415978603675658")) {
        System.out.println("he has it, boss");
        guild.getController().removeSingleRoleFromMember(member, role)
                    .complete();
        guild.getController().addSingleRoleToMember(member, jda.getRoleById("496415995569766410"))
                    .complete();
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但问题是它只适用于 Member 对象 ( e.getMember),否则我不知道如何检索 Member 对象。我将另一个用户存储为用户对象,但我不知道如何将他转换为成员。

java discord discord-jda

2
推荐指数
1
解决办法
1702
查看次数

标签 统计

discord-jda ×10

java ×10

discord ×6

bots ×1

nullpointerexception ×1