Latest commit

History

History
290 lines (227 loc) · 8.62 KB

File metadata and controls

290 lines (227 loc) · 8.62 KB
search
keywords
echo
bot
telegram
simple
getting started
1

Lesson 1. Simple echo bot

Hello! If you want to know, how to code Telegram Bots on Java, you are on the right way!

Prepare to launch

Bot API is based on HTTP-requests, but in this book I will use Rubenlagus' library for Java.

Install the library

You can install TelegramBots library with different methods:

  • Using Maven:
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>Latest</version>
</dependency>
  • Using Jitpack
  • Or just download .jar file with dependencies from here

In this tutorial I will use next machines:

  • Ubuntu 16.04 Server with 1GB of RAM
  • My home Windows 10 laptop with IntelliJ Idea pre-installed

Lets go to code!

Well, enough for words. Let's get down to buisness. In this lesson we will write simple bot that echoes everything we sent to him. Now, open IntelliJ Idea and create a new project. You can call it whatever you want. Then, dont forget to install TelegramBots library with preffered method. I think, that it is most easy to just download .jar from here

Now, when you are in the project, create files MyAmazingBot.java and Main.java within the src directory. Open MyAmazingBot.java and lets write our actual bot:

Remember! The class must extends TelegramLongPollingBot and implement necessary methods

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// TODOreturnnull;
}
@OverridepublicStringgetBotToken() {
// TODOreturnnull;
}
}

As you can understand, getBotUsername() and getBotToken() must return bot's username and bot's token, obtained from @BotFather. So now, our MyAmazingBot.java file will look like this:

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Now, let's move on to the logic of our bot. As I said before, we want him to reply every text we send to him. onUpdateReceived(Update update) method is for us. When an update recieved, it will call this method.

@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Good! But how do I run the bot? Well, its a good question. Lets save that file and open Main.java. This file will instantiate TelegramBotsApi and register our new bot. It will look like this:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// TODO Initialize Api Context// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Now, lets initialize Api Context

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Instantiate Telegram Bots API:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// TODO Register our bot
}
}

And register our bot:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Here is all our files:

src/Main.java

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

src/MyAmazingBot.java

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Well done! Now we can pack our project into runnable .jar file and run it on our computer/server!

You can find all sources to this lesson in GitHub repository.

java -jar MyAmazingBot.jar

Now we can see our bot running:

Here it is!

Well, thats all for now. Hope to see you soon!:)

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

History
290 lines (227 loc) · 8.62 KB

File metadata and controls

290 lines (227 loc) · 8.62 KB
search
keywords
echo
bot
telegram
simple
getting started
1

Lesson 1. Simple echo bot

Hello! If you want to know, how to code Telegram Bots on Java, you are on the right way!

Prepare to launch

Bot API is based on HTTP-requests, but in this book I will use Rubenlagus' library for Java.

Install the library

You can install TelegramBots library with different methods:

  • Using Maven:
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>Latest</version>
</dependency>
  • Using Jitpack
  • Or just download .jar file with dependencies from here

In this tutorial I will use next machines:

  • Ubuntu 16.04 Server with 1GB of RAM
  • My home Windows 10 laptop with IntelliJ Idea pre-installed

Lets go to code!

Well, enough for words. Let's get down to buisness. In this lesson we will write simple bot that echoes everything we sent to him. Now, open IntelliJ Idea and create a new project. You can call it whatever you want. Then, dont forget to install TelegramBots library with preffered method. I think, that it is most easy to just download .jar from here

Now, when you are in the project, create files MyAmazingBot.java and Main.java within the src directory. Open MyAmazingBot.java and lets write our actual bot:

Remember! The class must extends TelegramLongPollingBot and implement necessary methods

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// TODOreturnnull;
}
@OverridepublicStringgetBotToken() {
// TODOreturnnull;
}
}

As you can understand, getBotUsername() and getBotToken() must return bot's username and bot's token, obtained from @BotFather. So now, our MyAmazingBot.java file will look like this:

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Now, let's move on to the logic of our bot. As I said before, we want him to reply every text we send to him. onUpdateReceived(Update update) method is for us. When an update recieved, it will call this method.

@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Good! But how do I run the bot? Well, its a good question. Lets save that file and open Main.java. This file will instantiate TelegramBotsApi and register our new bot. It will look like this:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// TODO Initialize Api Context// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Now, lets initialize Api Context

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Instantiate Telegram Bots API:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// TODO Register our bot
}
}

And register our bot:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Here is all our files:

src/Main.java

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

src/MyAmazingBot.java

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Well done! Now we can pack our project into runnable .jar file and run it on our computer/server!

You can find all sources to this lesson in GitHub repository.

java -jar MyAmazingBot.jar

Now we can see our bot running:

Here it is!

Well, thats all for now. Hope to see you soon!:)

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

History
290 lines (227 loc) · 8.62 KB

File metadata and controls

290 lines (227 loc) · 8.62 KB
search
keywords
echo
bot
telegram
simple
getting started
1

Lesson 1. Simple echo bot

Hello! If you want to know, how to code Telegram Bots on Java, you are on the right way!

Prepare to launch

Bot API is based on HTTP-requests, but in this book I will use Rubenlagus' library for Java.

Install the library

You can install TelegramBots library with different methods:

  • Using Maven:
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>Latest</version>
</dependency>
  • Using Jitpack
  • Or just download .jar file with dependencies from here

In this tutorial I will use next machines:

  • Ubuntu 16.04 Server with 1GB of RAM
  • My home Windows 10 laptop with IntelliJ Idea pre-installed

Lets go to code!

Well, enough for words. Let's get down to buisness. In this lesson we will write simple bot that echoes everything we sent to him. Now, open IntelliJ Idea and create a new project. You can call it whatever you want. Then, dont forget to install TelegramBots library with preffered method. I think, that it is most easy to just download .jar from here

Now, when you are in the project, create files MyAmazingBot.java and Main.java within the src directory. Open MyAmazingBot.java and lets write our actual bot:

Remember! The class must extends TelegramLongPollingBot and implement necessary methods

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// TODOreturnnull;
}
@OverridepublicStringgetBotToken() {
// TODOreturnnull;
}
}

As you can understand, getBotUsername() and getBotToken() must return bot's username and bot's token, obtained from @BotFather. So now, our MyAmazingBot.java file will look like this:

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Now, let's move on to the logic of our bot. As I said before, we want him to reply every text we send to him. onUpdateReceived(Update update) method is for us. When an update recieved, it will call this method.

@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Good! But how do I run the bot? Well, its a good question. Lets save that file and open Main.java. This file will instantiate TelegramBotsApi and register our new bot. It will look like this:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// TODO Initialize Api Context// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Now, lets initialize Api Context

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Instantiate Telegram Bots API:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// TODO Register our bot
}
}

And register our bot:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Here is all our files:

src/Main.java

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

src/MyAmazingBot.java

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Well done! Now we can pack our project into runnable .jar file and run it on our computer/server!

You can find all sources to this lesson in GitHub repository.

java -jar MyAmazingBot.jar

Now we can see our bot running:

Here it is!

Well, thats all for now. Hope to see you soon!:)

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

History
290 lines (227 loc) · 8.62 KB

File metadata and controls

290 lines (227 loc) · 8.62 KB
search
keywords
echo
bot
telegram
simple
getting started
1

Lesson 1. Simple echo bot

Hello! If you want to know, how to code Telegram Bots on Java, you are on the right way!

Prepare to launch

Bot API is based on HTTP-requests, but in this book I will use Rubenlagus' library for Java.

Install the library

You can install TelegramBots library with different methods:

  • Using Maven:
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>Latest</version>
</dependency>
  • Using Jitpack
  • Or just download .jar file with dependencies from here

In this tutorial I will use next machines:

  • Ubuntu 16.04 Server with 1GB of RAM
  • My home Windows 10 laptop with IntelliJ Idea pre-installed

Lets go to code!

Well, enough for words. Let's get down to buisness. In this lesson we will write simple bot that echoes everything we sent to him. Now, open IntelliJ Idea and create a new project. You can call it whatever you want. Then, dont forget to install TelegramBots library with preffered method. I think, that it is most easy to just download .jar from here

Now, when you are in the project, create files MyAmazingBot.java and Main.java within the src directory. Open MyAmazingBot.java and lets write our actual bot:

Remember! The class must extends TelegramLongPollingBot and implement necessary methods

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// TODOreturnnull;
}
@OverridepublicStringgetBotToken() {
// TODOreturnnull;
}
}

As you can understand, getBotUsername() and getBotToken() must return bot's username and bot's token, obtained from @BotFather. So now, our MyAmazingBot.java file will look like this:

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Now, let's move on to the logic of our bot. As I said before, we want him to reply every text we send to him. onUpdateReceived(Update update) method is for us. When an update recieved, it will call this method.

@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Good! But how do I run the bot? Well, its a good question. Lets save that file and open Main.java. This file will instantiate TelegramBotsApi and register our new bot. It will look like this:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// TODO Initialize Api Context// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Now, lets initialize Api Context

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Instantiate Telegram Bots API:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// TODO Register our bot
}
}

And register our bot:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Here is all our files:

src/Main.java

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

src/MyAmazingBot.java

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Well done! Now we can pack our project into runnable .jar file and run it on our computer/server!

You can find all sources to this lesson in GitHub repository.

java -jar MyAmazingBot.jar

Now we can see our bot running:

Here it is!

Well, thats all for now. Hope to see you soon!:)

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

History
290 lines (227 loc) · 8.62 KB

File metadata and controls

290 lines (227 loc) · 8.62 KB
search
keywords
echo
bot
telegram
simple
getting started
1

Lesson 1. Simple echo bot

Hello! If you want to know, how to code Telegram Bots on Java, you are on the right way!

Prepare to launch

Bot API is based on HTTP-requests, but in this book I will use Rubenlagus' library for Java.

Install the library

You can install TelegramBots library with different methods:

  • Using Maven:
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>Latest</version>
</dependency>
  • Using Jitpack
  • Or just download .jar file with dependencies from here

In this tutorial I will use next machines:

  • Ubuntu 16.04 Server with 1GB of RAM
  • My home Windows 10 laptop with IntelliJ Idea pre-installed

Lets go to code!

Well, enough for words. Let's get down to buisness. In this lesson we will write simple bot that echoes everything we sent to him. Now, open IntelliJ Idea and create a new project. You can call it whatever you want. Then, dont forget to install TelegramBots library with preffered method. I think, that it is most easy to just download .jar from here

Now, when you are in the project, create files MyAmazingBot.java and Main.java within the src directory. Open MyAmazingBot.java and lets write our actual bot:

Remember! The class must extends TelegramLongPollingBot and implement necessary methods

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// TODOreturnnull;
}
@OverridepublicStringgetBotToken() {
// TODOreturnnull;
}
}

As you can understand, getBotUsername() and getBotToken() must return bot's username and bot's token, obtained from @BotFather. So now, our MyAmazingBot.java file will look like this:

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Now, let's move on to the logic of our bot. As I said before, we want him to reply every text we send to him. onUpdateReceived(Update update) method is for us. When an update recieved, it will call this method.

@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Good! But how do I run the bot? Well, its a good question. Lets save that file and open Main.java. This file will instantiate TelegramBotsApi and register our new bot. It will look like this:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// TODO Initialize Api Context// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Now, lets initialize Api Context

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Instantiate Telegram Bots API:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// TODO Register our bot
}
}

And register our bot:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Here is all our files:

src/Main.java

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

src/MyAmazingBot.java

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Well done! Now we can pack our project into runnable .jar file and run it on our computer/server!

You can find all sources to this lesson in GitHub repository.

java -jar MyAmazingBot.jar

Now we can see our bot running:

Here it is!

Well, thats all for now. Hope to see you soon!:)

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

History
290 lines (227 loc) · 8.62 KB

File metadata and controls

290 lines (227 loc) · 8.62 KB
search
keywords
echo
bot
telegram
simple
getting started
1

Lesson 1. Simple echo bot

Hello! If you want to know, how to code Telegram Bots on Java, you are on the right way!

Prepare to launch

Bot API is based on HTTP-requests, but in this book I will use Rubenlagus' library for Java.

Install the library

You can install TelegramBots library with different methods:

  • Using Maven:
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>Latest</version>
</dependency>
  • Using Jitpack
  • Or just download .jar file with dependencies from here

In this tutorial I will use next machines:

  • Ubuntu 16.04 Server with 1GB of RAM
  • My home Windows 10 laptop with IntelliJ Idea pre-installed

Lets go to code!

Well, enough for words. Let's get down to buisness. In this lesson we will write simple bot that echoes everything we sent to him. Now, open IntelliJ Idea and create a new project. You can call it whatever you want. Then, dont forget to install TelegramBots library with preffered method. I think, that it is most easy to just download .jar from here

Now, when you are in the project, create files MyAmazingBot.java and Main.java within the src directory. Open MyAmazingBot.java and lets write our actual bot:

Remember! The class must extends TelegramLongPollingBot and implement necessary methods

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// TODOreturnnull;
}
@OverridepublicStringgetBotToken() {
// TODOreturnnull;
}
}

As you can understand, getBotUsername() and getBotToken() must return bot's username and bot's token, obtained from @BotFather. So now, our MyAmazingBot.java file will look like this:

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Now, let's move on to the logic of our bot. As I said before, we want him to reply every text we send to him. onUpdateReceived(Update update) method is for us. When an update recieved, it will call this method.

@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Good! But how do I run the bot? Well, its a good question. Lets save that file and open Main.java. This file will instantiate TelegramBotsApi and register our new bot. It will look like this:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// TODO Initialize Api Context// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Now, lets initialize Api Context

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Instantiate Telegram Bots API:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// TODO Register our bot
}
}

And register our bot:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Here is all our files:

src/Main.java

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

src/MyAmazingBot.java

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Well done! Now we can pack our project into runnable .jar file and run it on our computer/server!

You can find all sources to this lesson in GitHub repository.

java -jar MyAmazingBot.jar

Now we can see our bot running:

Here it is!

Well, thats all for now. Hope to see you soon!:)

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

History
290 lines (227 loc) · 8.62 KB

File metadata and controls

290 lines (227 loc) · 8.62 KB
search
keywords
echo
bot
telegram
simple
getting started
1

Lesson 1. Simple echo bot

Hello! If you want to know, how to code Telegram Bots on Java, you are on the right way!

Prepare to launch

Bot API is based on HTTP-requests, but in this book I will use Rubenlagus' library for Java.

Install the library

You can install TelegramBots library with different methods:

  • Using Maven:
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>Latest</version>
</dependency>
  • Using Jitpack
  • Or just download .jar file with dependencies from here

In this tutorial I will use next machines:

  • Ubuntu 16.04 Server with 1GB of RAM
  • My home Windows 10 laptop with IntelliJ Idea pre-installed

Lets go to code!

Well, enough for words. Let's get down to buisness. In this lesson we will write simple bot that echoes everything we sent to him. Now, open IntelliJ Idea and create a new project. You can call it whatever you want. Then, dont forget to install TelegramBots library with preffered method. I think, that it is most easy to just download .jar from here

Now, when you are in the project, create files MyAmazingBot.java and Main.java within the src directory. Open MyAmazingBot.java and lets write our actual bot:

Remember! The class must extends TelegramLongPollingBot and implement necessary methods

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// TODOreturnnull;
}
@OverridepublicStringgetBotToken() {
// TODOreturnnull;
}
}

As you can understand, getBotUsername() and getBotToken() must return bot's username and bot's token, obtained from @BotFather. So now, our MyAmazingBot.java file will look like this:

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Now, let's move on to the logic of our bot. As I said before, we want him to reply every text we send to him. onUpdateReceived(Update update) method is for us. When an update recieved, it will call this method.

@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Good! But how do I run the bot? Well, its a good question. Lets save that file and open Main.java. This file will instantiate TelegramBotsApi and register our new bot. It will look like this:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// TODO Initialize Api Context// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Now, lets initialize Api Context

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Instantiate Telegram Bots API:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// TODO Register our bot
}
}

And register our bot:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Here is all our files:

src/Main.java

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

src/MyAmazingBot.java

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Well done! Now we can pack our project into runnable .jar file and run it on our computer/server!

You can find all sources to this lesson in GitHub repository.

java -jar MyAmazingBot.jar

Now we can see our bot running:

Here it is!

Well, thats all for now. Hope to see you soon!:)

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

History
290 lines (227 loc) · 8.62 KB

File metadata and controls

290 lines (227 loc) · 8.62 KB
search
keywords
echo
bot
telegram
simple
getting started
1

Lesson 1. Simple echo bot

Hello! If you want to know, how to code Telegram Bots on Java, you are on the right way!

Prepare to launch

Bot API is based on HTTP-requests, but in this book I will use Rubenlagus' library for Java.

Install the library

You can install TelegramBots library with different methods:

  • Using Maven:
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>Latest</version>
</dependency>
  • Using Jitpack
  • Or just download .jar file with dependencies from here

In this tutorial I will use next machines:

  • Ubuntu 16.04 Server with 1GB of RAM
  • My home Windows 10 laptop with IntelliJ Idea pre-installed

Lets go to code!

Well, enough for words. Let's get down to buisness. In this lesson we will write simple bot that echoes everything we sent to him. Now, open IntelliJ Idea and create a new project. You can call it whatever you want. Then, dont forget to install TelegramBots library with preffered method. I think, that it is most easy to just download .jar from here

Now, when you are in the project, create files MyAmazingBot.java and Main.java within the src directory. Open MyAmazingBot.java and lets write our actual bot:

Remember! The class must extends TelegramLongPollingBot and implement necessary methods

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// TODOreturnnull;
}
@OverridepublicStringgetBotToken() {
// TODOreturnnull;
}
}

As you can understand, getBotUsername() and getBotToken() must return bot's username and bot's token, obtained from @BotFather. So now, our MyAmazingBot.java file will look like this:

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// TODO
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Now, let's move on to the logic of our bot. As I said before, we want him to reply every text we send to him. onUpdateReceived(Update update) method is for us. When an update recieved, it will call this method.

@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Good! But how do I run the bot? Well, its a good question. Lets save that file and open Main.java. This file will instantiate TelegramBotsApi and register our new bot. It will look like this:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// TODO Initialize Api Context// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Now, lets initialize Api Context

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// TODO Instantiate Telegram Bots API// TODO Register our bot
}
}

Instantiate Telegram Bots API:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// TODO Register our bot
}
}

And register our bot:

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

Here is all our files:

src/Main.java

importorg.telegram.telegrambots.ApiContextInitializer;
importorg.telegram.telegrambots.TelegramBotsApi;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMain {
publicstaticvoidmain(String[] args) {
// Initialize Api ContextApiContextInitializer.init();
// Instantiate Telegram Bots APITelegramBotsApibotsApi = newTelegramBotsApi();
// Register our bottry {
botsApi.registerBot(newMyAmazingBot());
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}

src/MyAmazingBot.java

importorg.telegram.telegrambots.api.methods.send.SendMessage;
importorg.telegram.telegrambots.api.objects.Update;
importorg.telegram.telegrambots.bots.TelegramLongPollingBot;
importorg.telegram.telegrambots.exceptions.TelegramApiException;
publicclassMyAmazingBotextendsTelegramLongPollingBot {
@OverridepublicvoidonUpdateReceived(Updateupdate) {
// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {
// Set variablesStringmessage_text = update.getMessage().getText();
longchat_id = update.getMessage().getChatId();
SendMessagemessage = newSendMessage() // Create a message object object
.setChatId(chat_id)
.setText(message_text);
try {
execute(message); // Sending our message object to user
} catch (TelegramApiExceptione) {
e.printStackTrace();
}
}
}
@OverridepublicStringgetBotUsername() {
// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return"MyAmazingBot";
}
@OverridepublicStringgetBotToken() {
// Return bot token from BotFatherreturn"12345:qwertyuiopASDGFHKMK";
}
}

Well done! Now we can pack our project into runnable .jar file and run it on our computer/server!

You can find all sources to this lesson in GitHub repository.

java -jar MyAmazingBot.jar

Now we can see our bot running:

Here it is!

Well, thats all for now. Hope to see you soon!:)