这个bot应该在VKONTAKTE社区墙上发布发送到discord频道的消息,请告诉我为什么他没有在墙上发布这些消息? 我按照 VKontakte 上的技术文档做了一切,但我无法弄清楚缺少发布的原因是什么 它与电报一起工作正常,它不想联系 VKONTACTE 包 domain_name.project;
import com.google.gson.Gson;
import domain_name.project.json.Config;
import domain_name.project.json.TelegramMessage;
import domain_name.project.json.TelegramPhotos;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.requests.GatewayIntent;
import net.dv8tion.jda.api.requests.restaction.MessageAction;
import okhttp3.*;
import org.jetbrains.annotations.NotNull;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.List;
import java.util.stream.Collectors;
public class Project {
private static final Config config = new Gson().fromJson(new InputStreamReader(Project.class.getResourceAsStream("/config.json")), Config.class);
private static final OkHttpClient client = new OkHttpClient();
public static void main(String[] args) throws Exception {
JDA builder = new JDABuilder()
.setActivity(Activity.watching("за миром"))
.setToken(config.discord.token)
.build();
JDA jda = JDABuilder.create(config.discord.token, GatewayIntent.GUILD_MESSAGES, GatewayIntent.GUILD_MEMBERS).build();
jda.addEventListener(new ListenerAdapter() {
@Override
public void onMessageReceived(@NotNull MessageReceivedEvent event) {
if (event.getAuthor().isBot()) return;
if (event.getChannel().getId().equals(config.discord.posts_channel_id)) {
String post = event.getMessage().getContentStripped();
List<String> attachments = event.getMessage().getAttachments().stream().filter(Message.Attachment::isImage).map(Message.Attachment::getUrl).collect(Collectors.toList());
if (attachments.isEmpty()) {
event.getChannel().sendMessage(event.getMessage()).queue();
} else {
MessageAction message = event.getChannel().sendMessage(event.getMessage());
short i = 0;
try {
for (String url : attachments) {
BufferedImage img = ImageIO.read(new URL(url));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "png", baos);
message = message.addFile(baos.toByteArray(), String.format("image%d.png", i));
i++;
}
} catch (IOException e) {
e.printStackTrace();
}
message.complete();
}
try {
if (!post.isEmpty()) {
client.newCall(new Request.Builder().url(String.format("https://api.telegram.org/bot%s/sendMessage", Project.config.telegram.token)).post(RequestBody.create(MediaType.get("application/json"), new Gson().toJson(new TelegramMessage(Project.config.telegram.chat_id, post)))).build()).execute();
if (attachments.isEmpty()) {
client.newCall(new Request.Builder().url(new HttpUrl.Builder().scheme("https").host("api.vk.com").addPathSegment("method").addPathSegment("wall.post").addQueryParameter("v", "5.130").addQueryParameter("owner_id", Project.config.vk.id).addQueryParameter("from_group", Project.config.vk.from_group).addQueryParameter("message", post).addQueryParameter("access_token", Project.config.vk.token).build().url()).get().build()).execute();
} else {
client.newCall(new Request.Builder().url(String.format("https://api.telegram.org/bot%s/sendMediaGroup", Project.config.telegram.token)).post(RequestBody.create(MediaType.get("application/json"), new Gson().toJson(new TelegramPhotos(Project.config.telegram.chat_id, attachments.stream().map(TelegramPhotos.InputMediaPhoto::new).collect(Collectors.toList()))))).build()).execute();
client.newCall(new Request.Builder().url(new HttpUrl.Builder().scheme("https").host("api.vk.com").addPathSegment("method").addPathSegment("wall.post").addQueryParameter("v", "5.130").addQueryParameter("owner_id", Project.config.vk.id).addQueryParameter("from_group", Project.config.vk.from_group).addQueryParameter("message", post + "\n\n" + String.join("\n", attachments)).addQueryParameter("access_token", Project.config.vk.token).build().url()).get().build()).execute();
}
} else {
client.newCall(new Request.Builder().url(String.format("https://api.telegram.org/bot%s/sendMediaGroup", Project.config.telegram.token)).post(RequestBody.create(MediaType.get("application/json"), new Gson().toJson(new TelegramPhotos(Project.config.telegram.chat_id, attachments.stream().map(TelegramPhotos.InputMediaPhoto::new).collect(Collectors.toList()))))).build()).execute();
client.newCall(new Request.Builder().url(new HttpUrl.Builder().scheme("https").host("api.vk.com").addPathSegment("method").addPathSegment("wall.post").addQueryParameter("v", "5.130").addQueryParameter("owner_id", Project.config.vk.id).addQueryParameter("from_group", Project.config.vk.from_group).addQueryParameter("message", String.join("\n", attachments)).addQueryParameter("access_token", Project.config.vk.token).build().url()).get().build()).execute();
}
} catch (IOException e) {
e.printStackTrace();
}
event.getMessage().delete().queue();
}
}
});
jda.awaitReady();
System.out.println("Ready");
}
}