From ce82e627a6cbd01f1d5f4c8a668acab0098aa7fe Mon Sep 17 00:00:00 2001 From: chase Date: Fri, 28 Sep 2018 22:09:48 +0200 Subject: [PATCH] Created page on how to handle bot tokens --- TelegramBots.wiki/Handling-Bot-Tokens.md | 88 ++++++++++++++++++++++++ TelegramBots.wiki/_Sidebar.md | 1 + 2 files changed, 89 insertions(+) create mode 100644 TelegramBots.wiki/Handling-Bot-Tokens.md diff --git a/TelegramBots.wiki/Handling-Bot-Tokens.md b/TelegramBots.wiki/Handling-Bot-Tokens.md new file mode 100644 index 00000000..0904136d --- /dev/null +++ b/TelegramBots.wiki/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/TelegramBots.wiki/_Sidebar.md b/TelegramBots.wiki/_Sidebar.md index 0bc64b51..c4a738ad 100644 --- a/TelegramBots.wiki/_Sidebar.md +++ b/TelegramBots.wiki/_Sidebar.md @@ -3,6 +3,7 @@ * [[Errors Handling]] * [[Using HTTP Proxy]] * [[FAQ]] + * [[Handling Bot Tokens]] * AbilityBot * [[Simple Example]] * [[Hello Ability]]