问题描述
这个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",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",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",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",String.join("\n",Project.config.vk.token).build().url()).get().build()).execute();
}
} catch (IOException e) {
e.printstacktrace();
}
event.getMessage().delete().queue();
}
}
});
jda.awaitReady();
System.out.println("Ready");
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)