Skip to main content

Deploy Telegram Bot ke AWS

· 4 min read
Zia Kasyfi

aws

Pada kesempatan kali ini saya akan berbagi mengenai cara deploy Telegram Bot menggunakan service AWS.

Prerequisites

  • Akun AWS
  • Akun Telegram
tip

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.

screenshot

Setup AWS Lambda

  1. Login ke akun AWS kalian dan buka service Lambda dan klik Create function

    lambda

  2. Pilih opsi Author from scratch dan isi informasi function sesuai keinginan. Pada kali ini saya akan menggunakan function berbahasa Python dengan architecture x86_64

    createFunction

  3. Set permission function seperti di bawah ini dan klik Create Function

    permissions

Setelah itu kalian akan mendapatkan Lambda function dengan code default

lambdaFunction

Setup AWS API Gateway

  1. Buka service API Gateway dan klik Create API

  2. Pilih opsi import pada REST API (pilih yang tidak ada private nya)

    apigateway

  3. Pilih New API dan isi informasi API sesuai keinginan

    newapi

  4. Buat method dengan cara klik Actions > Create Method

    method Pada tahap ini kita dapat memilih ANY sebagai method. Jika kalian ingin lebih spesifik maka dapat memilih method lainnya.

    action

  5. 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

    setup

  6. Setelah itu kalian dapat melakukan testing dengan menekan TEST pada kolom Client

    test

  7. Kalian akan melihat hasil test seperti di bawah ini. Dapat dilihat response body berisi return message "Hello from Lambda!" yang ada pada lambda_handler

    testResult

    Pada lambda function kalian juga akan bertambah informasi API Gateway yang baru saja kita Buat

    lambdaapi

Deploy API

  1. Setelah kalian memastikan API Gateway kalian sudah bekerja dengan benar. Maka lakukan Deploy API dengan cara klik Actions > Deploy API

    deployAPI

  2. Beri Stage name sesuka kalian (dapat menggunakan stage name seperti beta atau v1)

    stagename

    Kalian akan mendapatkan Invoke URL yang pada step selanjutnya akan kita gunakan untuk setup webhook bot telegram kita.

    invoker

Setup Webhook Telegram Bot

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

tip

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: raw

Copy dan paste code di bawah ini ke editor di Lambda function

lambda_function.py
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: 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!