Start ChatOps with Telegram Chatbot
I’m going to build a ChatOps which manages DigitalOcean Droplets using DigitalOcean API. We’ll utilize a property feature of BotHub.Studio and Telegram keyboard. Extend it yourself to fit your own needs.
We will use python as a language and Telegram as a messenger platform and use a BotHub.Studio for host and run the code.
If you have no experience to build any chatbot before, I recommend reading Build a Telegram Chatbot with Python first.
Preparation
Digital Ocean
We need to generate an access token of Digital Ocean account. Login to DigitalOcean, go to API menu and click Generate New Token. Keep the access token to use later.
Telegram
Find @BotFather in telegram search box. Or you can meet him with https://t.me/BotFather link.
Create a new bot by telling him /newbot
command. Keep the access token he gave you to use later.
BotHub.Studio
Create an account on BotHub.Studio which is a chatbot hosting service, and install CLI tool using the command below:
$ pip install bothub-cli
Run configure
to connect to the service:
$ bothub configure
Create a project directory:
$ mkdir DigitalOceanBot
$ cd DigitalOceanBot
$ bothub init
A template code will be generated after init
finished:
|-- bothub
| |-- bot.py
| `-- __init__.py
|-- bothub.yml
|-- requirements.txt
`-- tests
Connect a Telegram channel to the project:
$ bothub channel add telegram --api-key=<api-key>
The template project is an echo bot so you can check it works without any modification. Test whether your chatbot works by deploying it:
$ bothub deploy
Make it works with DigitalOcean
Create a bothub/doapi.py
in the project directory and write a class below:
You can create, get a list, delete a droplet with DigitalOcean API. For convenience, I limited options to name, region, image, and size will only be 512mb.
Connect to Chatbot
Define Image, Region
Store some information for droplet creation to property.
$ bothub property set image ["14-04-x64","16-04-2-x64","16-10-x64","17-04-x64"]
$ bothub property set region ["nyc1","nyc3","sfo1","sfo2","sgp1"]
Register DigitalOcean access token
Telegram chatbot conversation starts with /start
message. We’ll ask to input access token when we get the message. Open bothub/bot.py
and write Bot.handle_message
method.
‘Create Droplet’ and ‘List all Droplets’ menu will show on Telegram keyboard when the access token is confirmed.
Creating Droplet
Now we’ll create a droplet. (I omitted some part of the previous code for clear understanding. Attach below code to it.)
Retrieve Droplet List / Delete a Droplet
Add below to get Droplet list.
You can get the complete code on Github repository. And you can find a working chatbot with the code above on Telegram with username @Digital_Ocean_Bot, or https://t.me/Digital_Ocean_Bot.