diff --git a/Changelog.md b/Changelog.md index 07da17c..82e9f2d 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,7 @@ +### 4.1.1 ### +1. Removed unsafe dependencies +2. Fix bugs: #535, #524, #563, #562 and #557 + ### 4.1 ### 1. Support for Api Version [4.1](https://core.telegram.org/bots/api-changelog#august-27-2018) 2. Fix #507 and #512 diff --git a/FAQ.md b/FAQ.md index eeac8dc..bacd32d 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1,4 +1,5 @@ -* [How to get picture?](#how_to_get_picture) +* [How to get picture?](#how_to_get_picture) +* [How to display ChatActions like "typing" or "recording a voice message"?](#how_to_sendchataction) * [How to send photos?](#how_to_send_photos) * [How do I send photos by file_id?](#how_to_send_photos_file_id) * [How to use custom keyboards?](#how_to_use_custom_keyboards) @@ -74,6 +75,38 @@ public java.io.File downloadPhotoByFilePath(String filePath) { The returned `java.io.File` object will be your photo +## How to display ChatActions like "typing" or "recording a voice message"? ## +Quick example here that is showing ChactActions for commands like "/type" or "/record_audio" + +```java +if (update.hasMessage() && update.getMessage().hasText()) { + + String text = update.getMessage().getText(); + + SendChatAction sendChatAction = new SendChatAction(); + sendChatAction.setChatId(update.getMessage().getChatId()); + + if (text.equals("/type")) { + // -> "typing" + sendChatAction.setAction(ActionType.TYPING); + // -> "recording a voice message" + } else if (text.equals("/record_audio")) { + sendChatAction.setAction(ActionType.RECORDAUDIO); + } else { + // -> more actions in the Enum ActionType + // For information: https://core.telegram.org/bots/api#sendchataction + sendChatAction.setAction(ActionType.UPLOADDOCUMENT); + } + + try { + Boolean wasSuccessfull = execute(sendChatAction); + } catch (TelegramApiException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } +} +``` + ## How to send photos? ## There are several method to send a photo to an user using `sendPhoto` method: With a `file_id`, with an `url` or uploading the file. In this example, we assume that we already have the *chat_id* where we want to send the photo: @@ -231,8 +264,6 @@ Your main spring boot class should look like this: ```java @SpringBootApplication -//Add this annotation to enable automatic bots initializing -@EnableTelegramBots public class YourApplicationMainClass { public static void main(String[] args) { @@ -246,10 +277,10 @@ public class YourApplicationMainClass { After that your bot will look like: ```java - //Standart Spring component annotation + //Standard Spring component annotation @Component public class YourBotClassName extends TelegramLongPollingBot { //Bot body. } ``` -Also you could just implement LongPollingBot or WebHookBot interfaces. All this bots will be registered in context and connected to Telegram api. \ No newline at end of file +Also you could just implement LongPollingBot or WebHookBot interfaces. All this bots will be registered in context and connected to Telegram api. diff --git a/Getting-Started.md b/Getting-Started.md index 2bea5d5..9b5e132 100644 --- a/Getting-Started.md +++ b/Getting-Started.md @@ -11,13 +11,13 @@ First you need ot get the library and add it to your project. There are few poss org.telegram telegrambots - 4.1 + 4.1.1 ``` * With **Gradle**: ```groovy - compile group: 'org.telegram', name: 'telegrambots', version: '4.1' + compile group: 'org.telegram', name: 'telegrambots', version: '4.1.1' ``` 2. Don't like **Maven Central Repository**? It can also be taken from [Jitpack](https://jitpack.io/#rubenlagus/TelegramBots). diff --git a/Handling-Bot-Tokens.md b/Handling-Bot-Tokens.md new file mode 100644 index 0000000..305f9d5 --- /dev/null +++ b/Handling-Bot-Tokens.md @@ -0,0 +1,88 @@ +* [Bot Token Dont's](#bot-token-donts) +* [Using Enviroment Variables](#using-environment-variables) + * [Setting Enviroment Variables](#setting-environment-variables) + * [Accessing Enviroment Variables](#accessing-enviroment-variables) +* [Using Command Line Arguments](#using-command-line-arguments) + +# Bot Token Dont's ## +* Tokens should not be hardcoded into the bot code +* Tokens should never be published +* Tokens should not be pushed into Repositorys + +# Using Environment Variables ### +One convenient way to inject your bot token into the application is by using Environment Variables. Environment Variables are Values that are set in the Environment the Bot is running. + +Those Values are not defined in the Application and therefore are not visible in the code. + +## Setting Environment Variables ### + +### Windows +Enviroment Variables in Windows can be set using the Console (CMD) using +```batchfile +SETX [VARIABLE_NAME] [YOUR_BOT_TOKEN] +``` + +It can also be set using the Windows GUI +* From the desktop, right click the Computer icon. +* Choose Properties from the context menu. +* Click the Advanced system settings link. +* Click Environment Variables... +* In the 'User Variables for X' click New and enter a Name and your Token as the Value + +### Linux & Mac +* Open the '~/.bash_profile' File +* Append the following to it: +```bash +export VARIABLE_NAME = {YOUR_BOT_TOKEN} +``` +* Save the file +* Either reboot your system or run the command above in your terminal + +### IntelliJ +* Go to Run->Edit Configuratuions... +* Navigate to your Java Run Configuration +* Under Enviroment->Enviroment Variables click the Folder Icon +* Click the Plus Icon to add a new Variable +* Enter a Name and your Token as the Value + +###Heroku Cloud +* Naviage to your App +* In the Settings Tab under Config Vars, click "Reveal Config Vars" +* Enter a Name and your Token as the Value +* Click the "Add" button + +## Accessing Enviroment Variables ## + +### Java +You can access the Enviroment Variables by using System.getEnv() + +```java +String BOT_TOKEN = System.getenv("VARIABLE_NAME"); +``` + +### Spring + +In Spring the @Value annotation allows you to inject the Value into your class +```java +public class Bot extends TelegramLongPollingBot { + public Bot(@Value("${VARIABLE_NAME") String botToken) { + this.botToken = botToken; + } +} +``` + +# Using Command Line Arguments +An easier but not Recommended way of injecting the Bottoken is by utilizing Command Line Arguments when starting the Application + +In this case your main Method is responsible for taking in the Token + +```java +public static void main(String[] args) { + String botToken = args[0]; +} +``` + +You now have to call your jar by using +``` +java -jar myBot.jar [BOT_TOKEN] +``` \ No newline at end of file diff --git a/Home.md b/Home.md index b22449b..882c90e 100644 --- a/Home.md +++ b/Home.md @@ -1,3 +1,3 @@ Welcome to the TelegramBots wiki. Use the sidebar on the right. If you're not sure what to look at, why not take a look at the [[Getting Started|Getting-Started]] guide? -If you want more detailed explanations, you can also visit this [gitbook by MonsterDeveloper's](https://www.gitbook.com/book/monsterdeveloper/writing-telegram-bots-on-java/details) \ No newline at end of file +If you want more detailed explanations, you can also visit this [gitbook by MonsterDeveloper's](https://monsterdeveloper.gitbooks.io/writing-telegram-bots-on-java/content/) diff --git a/_Sidebar.md b/_Sidebar.md index 0bc64b5..f423f02 100644 --- a/_Sidebar.md +++ b/_Sidebar.md @@ -3,6 +3,7 @@ * [[Errors Handling]] * [[Using HTTP Proxy]] * [[FAQ]] + * [[Handling Bot Tokens]] * AbilityBot * [[Simple Example]] * [[Hello Ability]] @@ -11,5 +12,6 @@ * [[Bot Testing]] * [[Bot Recovery]] * [[Advanced]] + * [[Additional Examples]] * [[Changelog]] * [[How To Update]] \ No newline at end of file diff --git a/abilities/Additional-Examples.md b/abilities/Additional-Examples.md new file mode 100644 index 0000000..786bfbf --- /dev/null +++ b/abilities/Additional-Examples.md @@ -0,0 +1,5 @@ +# Additional Examples +The following are nifty links to projects and examples that leverage the AbilityBot module. If you do have a project that you would like to share, please reach out! + +[FitnessBot](https://craftcodecrew.com/getting-started-with-the-telegram-abilitybot/) - +A fully fledged guide that walks you through building a fitness bot from A to Z \ No newline at end of file diff --git a/abilities/Simple-Example.md b/abilities/Simple-Example.md index a05dddc..800d1b7 100644 --- a/abilities/Simple-Example.md +++ b/abilities/Simple-Example.md @@ -9,12 +9,12 @@ As with any Java project, you will need to set your dependencies. org.telegram telegrambots-abilities - 4.1 + 4.1.1 ``` * **Gradle** ```groovy - compile group: 'org.telegram', name: 'telegrambots-abilties', version: '4.1' + compile group: 'org.telegram', name: 'telegrambots-abilties', version: '4.1.1' ``` * [JitPack](https://jitpack.io/#rubenlagus/TelegramBots)