机器人有什么问题?

问题描述

这个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 (将#修改为@)