package org.example;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import java.io.*;
public class exampleclass extends ListenerAdapter
{
@Override
public void onMessageReceived(MessageReceivedEvent event)
{
MessageChannel channel = event.getChannel();
// Check if the message was sent in the desired channel
if (channel.getId().equals("987082455435591680") && !event.getAuthor().isBot())
{
Message message = event.getMessage();
String content = message.getContentRaw();
// API KEY here is provided, but not shown
String command = "curl https://api.openai.com/v1/completions \\ -H \"Content-Type: application/json\" \\ -H \"Authorization: Bearer API-KEY\" \\ -d '{\"model\": \"text-davinci-003\", \"prompt\": \"" + content + "\", \"temperature\": 0, \"max_tokens\": 1024}'";
try
{
System.out.println(command);
// Send the message to the terminal
Process process = Runtime.getRuntime().exec(command);
StringBuilder sb = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
reader.close();
String output = sb.toString();
Gson gson = new Gson();
JsonObject responseJson = gson.fromJson(output, JsonObject.class);
String responseText = responseJson.get("choices").getAsJsonArray().get(0).getAsJsonObject().get("text").getAsString();
System.out.println(output);
int exitCode = process.waitFor();
System.out.println("\nExited with error code : " + exitCode);
// Send the output as a message in the channel
channel.sendMessage(responseText).queue();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
throw new RuntimeException(e);
}
}
}
}
this is code partially created by ChatGPT,
it takes the the content of a message in discord (variable: content) in to the String variable “command”, then it executes the command in the “RunTime.getRuntime().exec(command);” method is taking the hole output into a single string and outputs it into discord.
The Endpoint gives me the error, that there is no API-Key provided, but there is.
And yes, i tested the command in the terminal.
If integrating the AI into a Discord Application is against the Terms, which i havent found, then pls tell me