Я разрабатываю своего Java-бота для разногласий. И я хочу отправить изображение. Я пробовал использовать TextChannel.sendFile(File, Message), но это не тот результат, который я хочу получить. Я хочу, чтобы этот файл отображался как нормальное изображение.
Импорт:
import java.io.File;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import javax.xml.namespace.QName;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import org.apache.commons.io.FileUtils;
import net.dv8tion.jda.core.MessageBuilder;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.TextChannel;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
И другой код:
URL url = new URL(s.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(conn.getInputStream());
final List<String> files = new ArrayList<>();
while (reader.hasNext()) {
XMLEvent e = reader.nextEvent();
if (e.isStartElement()) {
StartElement se = e.asStartElement();
if (se.getName().getLocalPart().equals("post")) {
Attribute purl = se.getAttributeByName(new QName("file_url"));
files.add(purl.getValue());
}
}
}
int rid = ThreadLocalRandom.current().nextInt(files.size() - 1);
String p = files.get(rid);
files.clear();
URL u = new URL(p);
final String[] dots = p.split("\\.");
final String format = dots[dots.length - 1];
File f = new File("its not a porn." + format);
FileUtils.copyURLToFile(url, f);
Message m = new MessageBuilder().append("okay :)").build();
c.sendFile(f, m).queue();
}
Я пытался где-то найти решение, но не нашел никакой информации, которая могла бы помочь.
@IddoE, мне нужно включить это в свой путь сборки, верно? Тогда как мне это сделать с помощью discord4j?
поделитесь текущим кодом, чтобы мы могли помочь, я спросил только потому, что вижу пример с этой библиотекой
@IddoE нет, в моем проекте этого нет
@IddoE добавлен под вопрос. Я использую JDA
@IddoE Ага, вот этот: D
образовательное предположение и поделитесь своим импортом, пожалуйста, попробуйте дать полный пример кода для вашей конкретной проблемы
@IddoE добавил импорт: D




Читая документацию, вам нужно создать Сообщение и добавить его в сообщение с помощью m.setEmbed (..)
На JDA 4.2.0_168
сообщение в sendFile () - это имя файла, который вы отправляете на серверы Discord, поэтому ему нужно расширение
пример:
File f = new File("image.png");
TextChannel.sendFile(f, "image.png").queue();
если вам нужны комментарии в сообщении
File f = new File("image.png");
//the name doesn't need to be the same, just the same extension
TextChannel.sendFile(f, "another_name.png").append("okay :)").queue();
поделитесь кодом, вы используете
sx.blah.discord.Discord4J?