Tutorial Cara Mudah Membuat Bot Telegram Untuk Nuyul / Bitcoin Terbaru - Versi Heroku | Infinite Haxor

News Ticker


Tutorial Cara Mudah Membuat Bot Telegram Untuk Nuyul / Bitcoin Terbaru - Versi Heroku - Dalam tutorial ini, kita akan membuat bot Telegram sederhana menggunakan Python-Telegram-bot dan menyebarkannya ke Heroku menggunakan Heroku Container Registry dan Docker.

Semua kode sumber tersedia di repositori GitHub.

Baca Juga


Commands

Bot kita memiliki 2 perintah: /start dan /Random.

  • Command /Start mengatakan Halo untuk pengguna baru kami
  • Command /Random mengirimkan nomor acak ke pengguna

Bot

import logging
import os
import random
import sys

from telegram.ext import Updater, CommandHandler

# Enabling logging
logging.basicConfig(level=logging.INFO,
                    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
logger = logging.getLogger()

# Getting mode, so we could define run function for local and Heroku setup
mode = os.getenv("MODE")
TOKEN = os.getenv("TOKEN")
if mode == "dev":
    def run(updater):
        updater.start_polling()
elif mode == "prod":
    def run(updater):
        PORT = int(os.environ.get("PORT", "8443"))
        HEROKU_APP_NAME = os.environ.get("HEROKU_APP_NAME")
        # Code from https://github.com/python-telegram-bot/python-telegram-bot/wiki/Webhooks#heroku
        updater.start_webhook(listen="0.0.0.0",
                              port=PORT,
                              url_path=TOKEN)
        updater.bot.set_webhook("https://{}.herokuapp.com/{}".format(HEROKU_APP_NAME, TOKEN))
else:
    logger.error("No MODE specified!")
    sys.exit(1)


def start_handler(bot, update):
    # Creating a handler-function for /start command 
    logger.info("User {} started bot".format(update.effective_user["id"]))
    update.message.reply_text("Hello from Python!\nPress /random to get random number")


def random_handler(bot, update):
    # Creating a handler-function for /random command
    number = random.randint(0, 10)
    logger.info("User {} randomed number {}".format(update.effective_user["id"], number))
    update.message.reply_text("Random number: {}".format(number))


if __name__ == '__main__':
    logger.info("Starting bot")
    updater = Updater(TOKEN)

    updater.dispatcher.add_handler(CommandHandler("start", start_handler))
    updater.dispatcher.add_handler(CommandHandler("random", random_handler))

    run(updater)

Script kami memiliki 2 cara kerja: pengembangan (lokal) dan produksi (Heroku). Hal ini ditentukan dengan menggunakan variabel env MODE with 2 nilai yang mungkin: dev, prod. Jika Anda tidak menentukan MODE, Anda akan mendapatkan pesan Error logger dan script akan keluar.

Baca Juga


Tidak kalah pentingnya adalah env variable TOKEN. Anda bisa mendapatkannya dari sistem Telegram bot disebut BotFather.

Berikut adalah contoh gambar dari dialog Anda mungkin dengan BotFather.

Contoh membuat bot baru dan mendapatkan token-nya. Token untuk bot ini adalah 798031528: AAFsvUypwHyAyhhWZ5X8WYYgSwiBTJB8I0Q. Token ini tidak bekerja lagi, saya mencabut itu.

PENTING: Jangan bilang siapa pun TOKEN bot Anda, jangan meletakkannya di GitHub repo publik Anda dll!

Jika Anda bertanya-tanya tentang variabel env PORT, Anda dapat dengan mudah tidak mengaturnya, 8443 adalah nomor port OK untuk Heroku.

HEROKU_APP_NAME adalah nama aplikasi Anda yang telah Anda buat di Heroku.

Sekarang, saatnya untuk berbicara tentang kode itu sendiri.

Pertama-tama, kita perlu menginisialisasi Updater kita dengan TOKEN.

Kemudian, kita perlu menambahkan handler perintah, kita akan menggunakan kelas CommandHandler dari paket Telegram. Ext. Ini menerima dua argumen wajib:

  • Command — string atau daftar string handler ini harus mendengarkan
  • callback — fungsi callback untuk handler ini

Dalam contoh kita, jika pengguna mengirim message /start, itu akan tertangkap oleh start_hanlder, /random akan tertangkap oleh random_handler; Semua pesan lainnya akan diabaikan.

Local

Untuk menjalankan bot ini secara lokal, Anda perlu mengeksekusi perintah di terminal Anda:

MODE=dev; TOKEN=<your TOKEN from BotFather>; python bot.py

Jika Anda menggunakan PyCharm untuk pengembangan Python, Anda dapat menggunakan jendela konfigurasi Run/debug.

Run/debug konfigurasi PyCharm window

Environmental Variables PyCharm window
Setelah menjalankan bot.py menggunakan opsi pilihan Anda, Anda akan mendapatkan :

2018–12–14 15:12:21,500 — root — INFO — Starting bot

Jika Anda pergi ke bot Anda di telegram dan tekan tombol Start, Anda akan mendapatkan

2018–12–14 15:12:36,617 — root — INFO — User <user_id> started bot

Dan jika Anda mengetikkan /Random Command, Anda akan mendapatkan

2018–12–14 15:12:38,238 — root — INFO — User <user_id> randomed number 2

Heroku

Anda harus memiliki akun Heroku.

Baca Juga


Untuk meluncurkan bot Anda di Heroku Anda harus pergi melalui langkah berikutnya:

  • membuat akun atau menggunakan yang sudah ada
  • membuat aplikasi (ingat tentang HEROKU_APP_NAME)

Membuat aplikasi di akun Anda

  • menentukan variabel lingkungan di tab pengaturan aplikasi Anda

Pengaturan env variabel. TOKEN yang disediakan dalam gambar tidak valid.

Untuk menyebarkan ke Heroku saya lebih memilih Heroku Container Registry. Dengan demikian Anda perlu Docker untuk diinstal dan berjalan.

Docker tutorial dapat ditemukan disini.

Link instalasi untuk:


Anda dapat membaca petunjuk lengkap tentang menyebarkan gambar ke Heroku di sini. Tapi saya akan fokus pada langkah yang sebenarnya Anda butuhkan untuk memulai bot Anda.

Ini adalah contoh dari Dockerfile untuk membangun sebuah gambar dan mendorongnya ke Heroku Container Registry.

FROM python:3.7

RUN pip install python-telegram-bot

RUN mkdir /app
ADD . /app
WORKDIR /app

CMD python /app/bot.py


Pergi ke direktori di mana Anda menempatkan bot.py, Dockerfile danmengeksekusi langkah berikutnya:

  • Download Heroku CLI disini
  • Login

heroku container: login

  • Membuat dan mendorong gambar

heroku container:push --app <HEROKU_APP_NAME> web

  • Membuat rilis baru

heroku container:release --app <HEROKU_APP_NAME> web

  • Lihat log

heroku logs --tail --app <HEROKU_APP_NAME>

Setelah beberapa waktu, Anda harus dapat melihat log bot Anda.

Dan ya, itu bisa jadi gratis.

Finally

Jadi, dalam tutorial ini, kami telah membuat bot Telegram sederhana menggunakan Python dan mendeploy-nya di Heroku menggunakan Heroku Container Registry dan Docker.

Baca Juga


P.S. bot adalah hidup, Anda dapat memeriksanya disini.

Saya pribadi hanya memiliki satu masalah dengan rencana gratis Heroku. Aplikasi Anda tidur setelah 30 menit tidak aktif. Hal ini mengarah pada fakta bahwa negara di mana bot Anda, tidak akan disimpan, dan upaya untuk menanggapi pesan lama tidak akan mengarah pada sesuatu.

Ada 2 kemungkinan solusi untuk masalah ini:

  • Gunakan rencana tingkat berikutnya pada Heroku (memerlukan $)
  • Gunakan persistensi dalam Python-Telegram-bot. Hal ini dalam pengembangan sekarang, tapi saya percaya akan segera dirilis.

No Comment to " Tutorial Cara Mudah Membuat Bot Telegram Untuk Nuyul / Bitcoin Terbaru - Versi Heroku "

Link Aktif Akan Dihapus