Discord bot异常重复 [英] Discord bot unusually repeats

查看:56
本文介绍了Discord bot异常重复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我正在尝试创建一个discord bot,该bot可以简单地访问数据库以打印出值,我的代码当前会将这些值打印到discord服务器,但会重复5次.

So I'm trying to create a discord bot that has simple access to a database for printing out values, my code currently will print the values to the discord server but it repeats them 5 times.

Bot功能类:

private MySQLAccess sql = new MySQLAccess();

public static void main(String[] args) throws Exception {
    JDABuilder ark = new JDABuilder(AccountType.BOT);
    ark.setToken("insert_discord_token_here");
    ark.addEventListener(new MessageListener());
    ark.buildAsync();
}



@Override
public void onMessageReceived(MessageReceivedEvent e) {
    if (e.getAuthor().isBot()) return;
    Message msg = e.getMessage();
    String str = msg.getContentRaw();

    //Ping pong
    if (str.equalsIgnoreCase("!ping")) {
        e.getChannel().sendMessage("Pong!").queue();
    }

    //Bal check
    if (str.contains("!bal")) {
        String user = str.substring(5);
        System.out.println(user);
        try {
            sql.readDataBase(e.getChannel(), user);
        } catch (Exception e1) {
        }

    }
}

数据库访问类:

private Connection connect = null;
private Statement statement = null;
private ResultSet resultSet = null;
private final String user = "pass";
private final String pass = "user";


public void readDataBase(MessageChannel msg, String username) throws Exception {
    //Retrieve data and search for username
    try {
        Class.forName("com.mysql.cj.jdbc.Driver");

        connect = DriverManager.getConnection("jdbc:mysql://localhost/serverusers?allowPublicKeyRetrieval=true&useSSL=false", user, pass);

        statement = connect.createStatement();
        resultSet = statement
                .executeQuery("select * from serverusers.userinfo where user=\"" + username + "\"");
        writeResultSet(resultSet, msg);

    } catch (Exception e) {
        throw e;
    } finally {
        close();
    }

}

private void writeResultSet(ResultSet resultSet, MessageChannel msg) throws SQLException {
    // Check resultSet and print its contents
    if (resultSet.next()) {
        String user = resultSet.getString(2);
        Double website = resultSet.getDouble(3);
        msg.sendMessage("User: " + user).queue();
        msg.sendMessage("Bank Amount: " + website).queue();
    }
}

private void close() {
    try {
        if (resultSet != null) {
            resultSet.close();
        }

        if (statement != null) {
            statement.close();
        }

        if (resultSet != null) {
            resultSet.close();
        }
        if (connect != null) {
            connect.close();
        }
    } catch (Exception e) {

    }
}

当程序运行时,它会找到我要查找的正确数据,并且搜索功能很好,但是由于某些奇怪的原因,该程序将吐出相同的用户名并平衡5次. Discord Bot屏幕截图

When the program is run it finds the correct data that I'm looking for and the search function is fine, but for some odd reason the program will spit the same username and balance out 5 times. Screenshot of Discord Bot

推荐答案

此处的常见错误是您多次运行该程序,然后每个实例都以相同的方式响应.您可以通过打开任务管理器并查找Java进程来检查是否是这种情况.使用控制台的开发人员经常会发生这种情况,因为控制台将其他进程隐藏在控制台的下拉菜单后面.

The common mistake here is that you run the program multiple times, each instance then responds accordingly with the same thing. You can check if that is the case by opening the task manager and looking for java processes. This often occurs with developers using the Eclipse IDE because of the console hiding other processes behind a drop-down menu on the console.

这篇关于Discord bot异常重复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆