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>4.1.2</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();
}
}
}
Мне было проще реализовать это программно, т.к. боты стоят у клиентов на разных серверах.Можно сделать еще проще, с помощью nginx сделать proxy_pass до api.telegram.org, хост, естественно указать свой (alert.example.com) и отправлять все пакеты туда.
Когда первый раз пытался обойти блокировку с помощью прокси, оказалось, что интернет-провайдер ЦОДа блокирует все заголовки (в том числе и которые отправляются с помощью прокси). Как говорится - пришлось импровизировать.
А если будет ситуация такая как у меня (блокировка в заголовке) встречается, кстати - довольно часто, по этой причине пришлось поднимать общий сервер для всех проектов - что будете делать? Просто праздное любопытство, не более.Мне было проще реализовать это программно, т.к. боты стоят у клиентов на разных серверах.
Ну если столкнусь, там и посмотрим. За все время с момента блокировки - не сталкивался. Да и тема была создана в ознакомительных целях, т.к. в и в иннете, и лично у меня люди интересовались несколько раз о программном методе обхода блокировки. А, и да, описаный вами вариант о поднятии посредника это один большой костыль, т.к. бот имеет свойство отваливаться из-за таймаута.А если будет ситуация такая как у меня (блокировка в заголовке) встречается, кстати - довольно часто, по этой причине пришлось поднимать общий сервер для всех проектов - что будете делать? Просто праздное любопытство, не более.
Ни разу не отваливался, работает идеальноНу если столкнусь, там и посмотрим. За все время с момента блокировки - не сталкивался. Да и тема была создана в ознакомительных целях, т.к. в и в иннете, и лично у меня люди интересовались несколько раз о программном методе обхода блокировки. А, и да, описаный вами вариант о поднятии посредника это один большой костыль, т.к. бот имеет свойство отваливаться из-за таймаута.
а его никто не заставляет менять) Или 1$ жалко ?)Ни разу не отваливался, работает идеальноКостыль - да, зато не нужно бегать менять прокси.
Если у нас есть где nginx ткнуть, то естественно там стоит и прокси, но - как я сказал выше - такой вариант не сработал.а его никто не заставляет менять) Или 1$ жалко ?)
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?