создал бота, начал использовать telegram api проект собирается при помощи maven докинул зависимость
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>3.5</version>
</dependency>
Далее частично реализовал методы onUpdate , getBotUsername и getBotToken
@Override
public void onUpdateReceived(Update update) {
if(update.hasMessage() && update.getMessage().hasText()){
SendMessage message = new SendMessage().setChatId(update.getMessage().getChatId());
Message msg = update.getMessage();
String text = "";
message.setText(text);
}
else if(update.hasCallbackQuery()){
}
}
@Override
public String getBotUsername() {
return "name";
}
@Override
public String getBotToken() {
return "token";
}
в методе main
ApiContextInitializer.init();
TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
try {
telegramBotsApi.registerBot(new ConnectToTelegramm());
} catch (TelegramApiRequestException e) {
e.printStackTrace();
}
и после этого выскакивает ошибка
фев 17, 2019 8:20:34 AM org.apache.http.impl.execchain.RetryExec execute
INFO: I/O exception (java.net.SocketException) caught when processing request to {s}->https://api.telegram.org:443: Connection reset
фев 17, 2019 8:20:34 AM org.apache.http.impl.execchain.RetryExec execute
INFO: Retrying request to {s}->https://api.telegram.org:443
фев 17, 2019 8:20:35 AM org.apache.http.impl.execchain.RetryExec execute
INFO: I/O exception (java.net.SocketException) caught when processing request to {s}->https://api.telegram.org:443: Connection reset
фев 17, 2019 8:20:35 AM org.apache.http.impl.execchain.RetryExec execute
INFO: Retrying request to {s}->https://api.telegram.org:443
фев 17, 2019 8:20:35 AM org.apache.http.impl.execchain.RetryExec execute
INFO: I/O exception (java.net.SocketException) caught when processing request to {s}->https://api.telegram.org:443: Connection reset
фев 17, 2019 8:20:35 AM org.apache.http.impl.execchain.RetryExec execute
INFO: Retrying request to {s}->https://api.telegram.org:443
org.telegram.telegrambots.exceptions.TelegramApiRequestException: Error executing setWebook method
at org.telegram.telegrambots.bots.TelegramLongPollingBot.clearWebhook(TelegramLongPollingBot.java:55)
at org.telegram.telegrambots.TelegramBotsApi.registerBot(TelegramBotsApi.java:120)
at Bots.main(Bots.java:15)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
at sun.security.ssl.InputRecord.read(InputRecord.java:503)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:359)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at org.telegram.telegrambots.bots.TelegramLongPollingBot.clearWebhook(TelegramLongPollingBot.java:43)
... 2 more
Подскажите, что я делаю не так?
Ваш бот не имеет доступа к api.telegram.org. Скорей всего это связано с блокировкой доступа к телеграмм на территории РФ.
Для обхода блокировки можно использовать http прокси на уровне клиента: Using Http Proxy
В случае если ваш бот расширяет TelegramLongPollingBot
, то добавьте ему конструктор с DefaultBotOptions
public ConnectToTelegramm(DefaultBotOptions options){
super(options);
}
После чего, в вашем методе main создавайте бота с найтройками:
ApiContextInitializer.init();
TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
try {
// Авторизация бота в прокси, после создания будет использоваться автоматически
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(PROXY_USER, PROXY_PASSWORD.toCharArray());
}
});
// Создаем экземпляр настроек
DefaultBotOptions botOptions = ApiContext.getInstance(DefaultBotOptions.class);
// Устанавливаем настройки прокси
botOptions.setProxyHost(PROXY_HOST);
botOptions.setProxyPort(PROXY_PORT);
// Выбираем тип прокси: [HTTP|SOCKS4|SOCKS5] (по умолчанию: NO_PROXY)
botOptions.setProxyType(DefaultBotOptions.ProxyType.SOCKS5);
telegramBotsApi.registerBot(new ConnectToTelegramm(botOptions));
} catch (TelegramApiRequestException e) {
e.printStackTrace();
}
Так же можно использовать socks прокси. Его поддержка была добавлена в данном PR: https://github.com/rubenlagus/TelegramBots/pull/451
Сталкивался с этой проблемой. Telegram заблокирован в РФ :/
Используйте VPN или Proxy.
Виртуальный выделенный сервер (VDS) становится отличным выбором
входящие данные Числа типа double 20 000 000 общая сумма
Пишу программу на Java и возникла потребность хранить данные на подобии последнего введенного имени пользователя и выбранного пользователем...