Перейти к содержанию
Авторизация  
se1dhe

Учим бота обходить блокировку

Рекомендуемые сообщения

Учим бота обходить блокировку


Все уже давно в курсе, что РКН пытается блочить ТГ на территории РФ. Сам клиент заблочить у них пока так и не получилось, а вот боты работать перестают. Тут мы научим нашего бота работать через http proxy. Отдельное спасибо человеку с ником "Vyacheslav @bvn13"
  Тело нашего пустого бота:
  public class MyBot extends AbilityBot { protected MyBot(String botToken, String botUsername) { super(botToken, botUsername); } public int creatorId() { return 0; } public Ability hello() { return Ability.builder() .name("test") .info("hello bot") .locality(ALL) .privacy(PUBLIC) .action(ctx -> silent.send("hello!", ctx.chatId())) .build(); } } Регистрация и его запуск:
  public class Main { private static String BOT_NAME = "My test bot"; private static String BOT_TOKEN = "..." /* your bot's token here */; public static void main(String[] args) { try { ApiContextInitializer.init(); // Create the TelegramBotsApi object to register your bots TelegramBotsApi botsApi = new TelegramBotsApi(); // Register your newly created AbilityBot MyBot bot = new MyBot(BOT_TOKEN, BOT_NAME); botsApi.registerBot(bot); } catch (TelegramApiException e) { e.printStackTrace(); } } }
Подключаем зависимость:
Maven
  <!--TelegramAPI--> <dependency> <groupId>org.telegram</groupId> <artifactId>telegrambots-abilities</artifactId> <version>3.6.1</version> </dependency> Gradle
  // telegram bot api compile 'org.telegram:telegrambots:3.6.1' Дальше пример реализации классов 
В классе бота:
  public class MyBot extends AbilityBot { protected MyBot(String botToken, String botUsername, DefaultBotOptions options) { super(botToken, botUsername, options); } /* ... */ }   В регистрации, если прокся без авторизации:
  public class Main { private static String BOT_NAME = "My test bot"; private static String BOT_TOKEN = "..." /* your bot's token here */; private static String PROXY_HOST = "..." /* proxy host */; private static Integer PROXY_PORT = 3128 /* proxy port */; public static void main(String[] args) { try { ApiContextInitializer.init(); // Create the TelegramBotsApi object to register your bots TelegramBotsApi botsApi = new TelegramBotsApi(); // Set up Http proxy DefaultBotOptions botOptions = ApiContext.getInstance(DefaultBotOptions.class); HttpHost httpHost = new HttpHost(PROXY_HOST, PROXY_PORT); RequestConfig requestConfig = RequestConfig.custom().setProxy(httpHost).setAuthenticationEnabled(false).build(); botOptions.setRequestConfig(requestConfig); botOptions.setHttpProxy(httpHost); // Register your newly created AbilityBot MyBot bot = new MyBot(BOT_TOKEN, BOT_NAME, botOptions); botsApi.registerBot(bot); } catch (TelegramApiException e) { e.printStackTrace(); } } } С авторизацией:
  public class Main { private static String BOT_NAME = "My test bot"; private static String BOT_TOKEN = "..." /* your bot's token here */; private static String PROXY_HOST = "..." /* proxy host */; private static Integer PROXY_PORT = 3128 /* proxy port */; private static String PROXY_USER = "..." /* proxy user */; private static String PROXY_PASSWORD = "..." /* proxy password */; public static void main(String[] args) { try { ApiContextInitializer.init(); // Create the TelegramBotsApi object to register your bots TelegramBotsApi botsApi = new TelegramBotsApi(); // Set up Http proxy DefaultBotOptions botOptions = ApiContext.getInstance(DefaultBotOptions.class); CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope(PROXY_HOST, PROXY_PORT), new UsernamePasswordCredentials(PROXY_USER, PROXY_PASSWORD)); HttpHost httpHost = new HttpHost(PROXY_HOST, PROXY_PORT); RequestConfig requestConfig = RequestConfig.custom().setProxy(httpHost).setAuthenticationEnabled(true).build(); botOptions.setRequestConfig(requestConfig); botOptions.setCredentialsProvider(credsProvider); botOptions.setHttpProxy(httpHost); // Register your newly created AbilityBot MyBot bot = new MyBot(BOT_TOKEN, BOT_NAME, botOptions); botsApi.registerBot(bot); } catch (TelegramApiException e) { e.printStackTrace(); } } }

Ну, собсно, и все.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...