Весенний бот для Telegram - PullRequest
0 голосов
/ 17 июня 2020

Я пишу бот для телеграмм с Spring Boot, который работает с моими сервисами (beans). Теперь добавляю прокси в телеграмму при запуске. Это основная часть кода бота Telegram:

public class TelegramBotService extends TelegramLongPollingBot {

    private UserTelegramLinkService userTelegramLinkService;

    private UserService userService;
    private SettingsService settingsService;

    private PasswordEncoder passwordEncoder;

    private final static String START_COMMAND = "/start";
    private final static String EXIT_COMMAND = "/exit";

    static {
        ApiContextInitializer.init();
    }
    @Autowired
    public TelegramBotService(UserService userService, UserTelegramLinkService userTelegramLinkService,
                              SettingsService settingsService, PasswordEncoder passwordEncoder) {
        this.userService = userService;
        this.userTelegramLinkService = userTelegramLinkService;
        this.settingsService = settingsService;
        this.passwordEncoder = passwordEncoder;

        log.info("BOT REGISTERING2");

    }

    public TelegramBotService(DefaultBotOptions defaultBotOptions) {
        super(defaultBotOptions);
        log.info("BOT REGISTERING1");
    }

    @PostConstruct
    public void registerBot() {
        log.info("BOT REGISTERING");

        TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
        // Set up Http proxy
        DefaultBotOptions botOptions = ApiContext.getInstance(DefaultBotOptions.class);
        botOptions.setProxyType(DefaultBotOptions.ProxyType.SOCKS5);
        botOptions.setProxyHost("192.168.30.2");
        botOptions.setProxyPort(3128);
        try {
            telegramBotsApi.registerBot(this);
            log.info("bot successfully register");

        } catch (TelegramApiException e) {
            log.error("Error while registering bot in TelegramBotService error: {}", e.getLocalizedMessage());
        }
    }
}

Но мое приложение Spring, я не знаю почему, но оно пытается подключиться к Telegram два раза ... Ошибка:

Telegram Bots Api                        : BOTSESSION

org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException: Error getting updates

Вероятно, я думаю, что мое приложение Spring пытается подключиться два раза, как я уже говорил. Когда я удаляю эту часть кода, все в порядке, но я должен реализовать своего бота с прокси:

public TelegramBotService(DefaultBotOptions defaultBotOptions) {
        super(defaultBotOptions);
        log.info("BOT REGISTERING1");
    }

    @PostConstruct
    public void registerBot() {
        log.info("BOT REGISTERING");

        TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
        // Set up Http proxy
        DefaultBotOptions botOptions = ApiContext.getInstance(DefaultBotOptions.class);
        botOptions.setProxyType(DefaultBotOptions.ProxyType.SOCKS5);
        botOptions.setProxyHost("192.168.30.2");
        botOptions.setProxyPort(3128);
        try {
            telegramBotsApi.registerBot(this);
            log.info("bot successfully register");

        } catch (TelegramApiException e) {
            log.error("Error while registering bot in TelegramBotService error: {}", e.getLocalizedMessage());
        }
    }

Как мне правильно исправить этот код? Помогите, пожалуйста

...