Pada kesempatan kali ini saya akan berbagi mengenai cara deploy Telegram Bot menggunakan service AWS.
Prerequisites
- Akun AWS
- Akun Telegram
Gunakan akun AWS Free Tier agar kalian mendapatkan 1 Million free requests per month pada AWS Lambda dan 1 Million free API Calls Recieved per month pada API Gateway
Setup Bot Telegram
Untuk men-deploy bot telegram di AWS tentunya kita memerlukan bot yang akan di-deploy. Untuk membuat bot Telegram caranya cukup mudah, cukup klik @BotFather (telegram.me/BotFather) dan kirimkan command /newbot
pada kolom chat. Kalian akan diminta informasi mengenai nama bot dan setelah itu kalian akan mendapatkan token yang akan kita gunakan nanti.
Setup AWS Lambda
Login ke akun AWS kalian dan buka service Lambda dan klik Create function
Pilih opsi Author from scratch dan isi informasi function sesuai keinginan. Pada kali ini saya akan menggunakan function berbahasa Python dengan architecture x86_64
Set permission function seperti di bawah ini dan klik Create Function
Setelah itu kalian akan mendapatkan Lambda function dengan code default
Setup AWS API Gateway
Buka service API Gateway dan klik Create API
Pilih opsi import pada REST API (pilih yang tidak ada private nya)
Pilih New API dan isi informasi API sesuai keinginan
Buat method dengan cara klik Actions > Create Method
Pada tahap ini kita dapat memilih ANY sebagai method. Jika kalian ingin lebih spesifik maka dapat memilih method lainnya.
Pilih Lambda Function sebagai Integration type dan centang Use Lambda Proxy Integration. Set Lambda Region sesuai dengan region dimana kalian membuat lambda function sebelumnya. Lalu isi nama lambda yang telah dibuat pada kolom Lambda Function. Setelah itu klik Save
Setelah itu kalian dapat melakukan testing dengan menekan TEST pada kolom Client
Kalian akan melihat hasil test seperti di bawah ini. Dapat dilihat response body berisi return message "Hello from Lambda!" yang ada pada lambda_handler
Pada lambda function kalian juga akan bertambah informasi API Gateway yang baru saja kita Buat
Deploy API
Setelah kalian memastikan API Gateway kalian sudah bekerja dengan benar. Maka lakukan Deploy API dengan cara klik Actions > Deploy API
Beri Stage name sesuka kalian (dapat menggunakan stage name seperti beta atau v1)
Kalian akan mendapatkan Invoke URL yang pada step selanjutnya akan kita gunakan untuk setup webhook bot telegram kita.
Buka link di bawah ini pada browser kalian untuk melakukan setup webhook bot telegram. Ganti value {bot_token} dan {invoke_url} dengan value yang sesuai
https://api.telegram.org/bot{bot_token}/setWebhook?url={invoke_url}
Menambahkan Script Telegram ke AWS Lambda
Setelah Lambda function dan API Gateway kalian siap, kita dapat mencoba untuk menambahkan script Telegram yang akan mengirimkan kembali pesan yang dikirim
Untuk mengetahui struktur pesan yang dimiliki oleh telegram. Kalian dapat menggunakan bot Telegram Bot Raw dan mengirim pesan ke bot tersebut. Kalian akan mendapatkan hasil seperti ini:
Copy dan paste code di bawah ini ke editor di Lambda function
import json
import requests
TELE_TOKEN='TOKEN TELEGRAM BOT'
URL = "https://api.telegram.org/bot{}/".format(TELE_TOKEN)
def send_message(name, text, chat_id):
final_text = "{} said: {}".format(name, text)
url = URL + "sendMessage?text={}&chat_id={}".format(final_text, chat_id)
requests.get(url)
def lambda_handler(event, context):
message = json.loads(event['body'])
chat_id = message['message']['chat']['id']
reply = message['message']['text']
name = message['message']['from']['first_name']
send_message(name, reply, chat_id)
return {
'statusCode': 200
}
Ubah value TELE_TOKEN dengan token yang kalian dapat dari BotFather lalu klik Deploy
Kirim pesan ke bot telegram kalian dan kalian akan mendapatkan hasil:
Bot Telegram kalian telah siap! Kalian dapat mengganti script lambda function sesuai keinginan kalian, mengolah input command dari user, mengolah file, dsb.
Terima Kasih!