Tutorial Dyscord Bot Python Paling Lengkap - Asia B Technology

Tutorial Dyscord Bot Python Paling Lengkap

Dyscord Bot Python

Tutorial ini akan menunjukkan kepada Anda cara membuat Dyscord Bot Python Anda sendiri sepenuhnya di cloud.

Anda tidak perlu menginstal apa pun di komputer Anda, dan Anda tidak perlu membayar apa pun untuk meng-host bot Anda.

Kami akan menggunakan sejumlah alat, termasuk Discord API, pustaka Python, dan platform komputasi awan yang disebut Repl.it.

Cara Membuat Akun Bot Perselisihan

Dyscord Bot Python

Untuk bekerja dengan pustaka Python dan API Discord, pertama-tama kita harus membuat akun Discord Bot Python.

Berikut adalah langkah-langkah untuk membuat akun Discord Bot.

  1. Pastikan Anda masuk ke situs Discord web.
  2. Arahkan ke halaman aplikasi.
  3. Klik tombol “Aplikasi Baru”.
  4. Beri nama aplikasi dan klik “Buat”.
  5. Buka tab “Bot” lalu klik “Add Bot”. Anda harus mengonfirmasi dengan mengklik “Ya, lakukan!”

Pertahankan pengaturan default untuk Bot Publik (dicentang) dan Require OAuth2 Code Grant (tidak dicentang).

Bot Anda telah dibuat. Langkah selanjutnya adalah menyalin token.

Token ini adalah kata sandi bot Anda, jadi jangan bagikan dengan siapa pun. Itu bisa memungkinkan seseorang untuk masuk ke bot Anda dan melakukan segala macam hal buruk.

Anda dapat membuat ulang token jika tidak sengaja dibagikan.

Cara Mengundang Bot Anda untuk Bergabung dengan Server

Sekarang Anda harus memasukkan Pengguna Bot Anda ke server. Untuk melakukan ini, Anda harus membuat URL undangan untuk itu.

Buka tab “OAuth2”. Kemudian pilih “bot” di bawah bagian “cakupan”.

Sekarang pilih izin yang Anda inginkan untuk bot. Bot kami sebagian besar akan menggunakan pesan teks sehingga kami tidak memerlukan banyak izin. Anda mungkin membutuhkan lebih banyak tergantung pada apa yang Anda ingin bot Anda lakukan. Hati-hati dengan izin “Administrator”.

Setelah memilih izin yang sesuai, klik tombol ‘salin’ di atas izin. Itu akan menyalin URL yang dapat digunakan untuk menambahkan bot ke server.

Rekatkan URL ke browser Anda, pilih server untuk mengundang bot, dan klik “Otorisasi”.

Untuk menambahkan bot, akun Anda memerlukan izin “Kelola Server”.

Sekarang setelah Anda membuat pengguna bot, kami akan mulai menulis kode Python untuk bot.

Cara Membuat Kode Bot Perselisihan Dasar dengan Perpustakaan discord.py

Kami akan menggunakan pustaka Python discord.py untuk menulis kode bot. discord.py adalah pembungkus API untuk Discord yang memudahkan pembuatan bot Discord dengan Python.

Cara Membuat Repl dan Instal discord.py

Anda dapat mengembangkan bot di komputer lokal Anda dengan editor kode apa pun. Namun, dalam tutorial ini, kita akan menggunakan Repl.it karena akan mempermudah siapa saja untuk mengikutinya. Repl.it adalah IDE online yang dapat Anda gunakan di browser web Anda.

Mulailah dengan membuka Repl.it. Buat Repl baru dan pilih “Python” sebagai bahasa.

Untuk menggunakan perpustakaan discord.py, cukup tuliskan import discord di bagian atas main.py. Repl.it akan secara otomatis menginstal ketergantungan ini ketika Anda menekan tombol “jalankan”.

Jika Anda lebih suka membuat kode bot secara lokal, Anda dapat menggunakan perintah ini di MacOS untuk menginstal discord.py:

python3 -m pip install -U discord.py

Anda mungkin harus menggunakan pip3 alih-alih pip.

Jika Anda menggunakan Windows, maka Anda harus menggunakan baris berikut sebagai gantinya:

py -3 -m pip install -U discord.py

Cara Mengatur Acara Perselisihan untuk Bot Anda

discord.py berkisar pada konsep acara. Suatu peristiwa adalah sesuatu yang Anda dengarkan dan kemudian tanggapi. Misalnya, ketika sebuah pesan terjadi, Anda akan menerima peristiwa tentangnya yang dapat Anda tanggapi.

Mari kita membuat bot yang membalas pesan tertentu. Kode bot sederhana ini, bersama dengan penjelasan kode, diambil dari dokumentasi discord.py. Kami akan menambahkan lebih banyak fitur ke bot nanti.

Tambahkan kode ini ke main.py. (Anda dapat memberi nama file dengan nama lain jika Anda suka, hanya saja bukan discord.py.) Saya akan segera menjelaskan apa yang dilakukan semua kode ini.

import discord
import os

client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')

client.run(os.getenv('TOKEN'))

Saat Anda membuat pengguna bot Anda di Discord, Anda menyalin token. Sekarang kita akan membuat file .env untuk menyimpan token. Jika Anda menjalankan kode secara lokal, Anda tidak memerlukan file .env. Ganti saja os.getenv(‘TOKEN’) dengan token.

File .env digunakan untuk mendeklarasikan variabel lingkungan. Di Repl.it, sebagian besar file yang Anda buat dapat dilihat oleh siapa saja, tetapi file .env hanya dapat dilihat oleh Anda. Orang lain yang melihat perwakilan publik tidak akan dapat melihat konten file .env.

Jadi jika Anda mengembangkan di Repl.it, hanya sertakan informasi pribadi seperti token atau kunci dalam file .env.

Klik tombol “Tambah file” dan buat file bernama .env.

Di dalam file tambahkan baris berikut, termasuk token aktual yang Anda salin sebelumnya:

TOKEN=[paste token here]

Sekarang mari kita bahas apa yang dilakukan setiap baris kode dalam kode bot Discord Anda.

  1. Baris pertama mengimpor perpustakaan discord.py.
  2. Baris kedua mengimpor perpustakaan os, tetapi ini hanya digunakan untuk mendapatkan variabel TOKEN dari file .env. Jika Anda tidak menggunakan file .env, Anda tidak memerlukan baris ini.
  3. Selanjutnya, kami membuat instance dari Klien. Ini adalah koneksi ke Discord.
  4. Dekorator @client.event() digunakan untuk mendaftarkan event. Ini adalah perpustakaan asinkron, jadi semuanya dilakukan dengan panggilan balik. Callback adalah fungsi yang dipanggil ketika sesuatu yang lain terjadi. Dalam kode ini, event on_ready() dipanggil saat bot siap untuk mulai digunakan. Kemudian, ketika bot menerima pesan, event on_message() dipanggil.
  5. Acara on_message() terpicu setiap kali pesan diterima, tetapi kita tidak ingin pesan itu melakukan apa pun jika pesan itu berasal dari diri kita sendiri. Jadi jika Message.author sama dengan Client.user, kodenya baru saja kembali.
  6. Selanjutnya, kita periksa apakah Message.content dimulai dengan ‘$hello’. Jika demikian, maka bot akan membalas dengan ‘Halo!’ ke saluran yang digunakan.
  7. Sekarang bot sudah diatur, baris terakhir menjalankan bot dengan token login. Itu mendapat token dari file .env keluar.

Kami memiliki kode untuk bot jadi sekarang kami hanya perlu menjalankannya.

Cara Menjalankan Bot

Sekarang klik tombol run di atas untuk menjalankan bot Anda di repl.it.

Jika Anda menulis bot secara lokal, Anda dapat menggunakan perintah ini di terminal untuk menjalankan bot:

Di Windows:

py -3 main.py

Pada sistem lain:

python3 main.py

Sekarang pergi ke ruang Discord Anda dan ketik “$halo”. Bot Anda harus mengembalikan “Halo!”.

Cara Meningkatkan Bot

Sekarang kami memiliki bot dasar yang berfungsi, kami akan meningkatkannya. Ini disebut “Dorong Bot” karena suatu alasan.

Bot ini akan merespon dengan pesan penyemangat setiap kali seseorang mengirim pesan yang berisi kata sedih atau menyedihkan.

Siapa pun akan dapat menambahkan pesan yang mendorong untuk digunakan bot dan pesan yang dikirimkan pengguna akan disimpan di database Repl.it.

Bot juga akan mengembalikan kutipan inspirasional acak dari API ketika seseorang mengetik pesan “$inspire” ke dalam obrolan.

Kita akan mulai dengan menambahkan fitur “$inspire”.

Cara Menambahkan Kutipan Inspirasional ke Bot

Kami akan mendapatkan kutipan inspirasional dari API bernama zenquotes.io. Kita perlu mengimpor beberapa modul Python lagi, menambahkan fungsi get_quote(), dan memperbarui kode bot kita untuk memanggil fungsi tersebut.

Berikut adalah kode yang diperbarui. Setelah kode, saya akan menjelaskan bagian-bagian baru.

import discord
import os
import requests
import json

client = discord.Client()

def get_quote():
  response = requests.get("https://zenquotes.io/api/random")
  json_data = json.loads(response.text)
  quote = json_data[0]['q'] + " -" + json_data[0]['a']
  return(quote)

@client.event
async def on_ready():
  print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
  if message.author == client.user:
    return

  if message.content.startswith('$inspire'):
    quote = get_quote()
    await message.channel.send(quote)

client.run(os.getenv('TOKEN'))

Kita sekarang harus mengimpor modul permintaan. Modul ini memungkinkan kode kita untuk membuat permintaan HTTP untuk mendapatkan data dari API. API mengembalikan JSON, sehingga modul json mempermudah bekerja dengan data yang dikembalikan.

Fungsi get_quote() cukup mudah. Pertama, ia menggunakan modul permintaan untuk meminta data dari URL API. API mengembalikan kutipan inspirasional acak. Fungsi ini dapat dengan mudah ditulis ulang untuk mendapatkan kutipan dari API yang berbeda, jika yang sekarang berhenti bekerja.

Selanjutnya di dalam fungsi, kita menggunakan json.loads() untuk mengonversi respons dari API ke JSON. Melalui coba-coba saya menemukan cara untuk mendapatkan kutipan dari JSON ke dalam format string yang saya inginkan. Kutipan dikembalikan dari fungsi sebagai string.

Bagian terakhir yang diperbarui dalam kode adalah menjelang akhir. Sebelumnya ia mencari pesan yang dimulai dengan “$halo”. Sekarang mencari “$inspire”. Alih-alih mengembalikan “Halo!”, ia mendapatkan kutipan dengan kutipan = get_quote() dan mengembalikan kutipan.

Pada titik ini Anda dapat menjalankan kode Anda dan mencobanya.

Cara Menambahkan Pesan yang Mendorong ke Bot

Sekarang kami akan menerapkan fitur di mana bot merespons dengan pesan yang menggembirakan ketika pengguna memposting pesan dengan kata sedih.

Cara Menambahkan Kata Sedih ke Bot

Pertama kita perlu membuat daftar Python yang berisi kata-kata sedih yang akan ditanggapi bot.

Tambahkan baris berikut setelah variabel klien dibuat:

sad_words = [“sedih”, “depresi”, “tidak bahagia”, “marah”, “sengsara”]

Jangan ragu untuk menambahkan lebih banyak kata ke dalam daftar.

Cara Menambahkan Pesan yang Mendorong ke Bot

Sekarang kita akan menambahkan daftar pesan penyemangat yang akan ditanggapi oleh bot.

Tambahkan daftar berikut setelah daftar sad_words yang Anda buat:

starter_encouragements = [
  "Cheer up!",
  "Hang in there.",
  "You are a great person / bot!"
]

Seperti sebelumnya, jangan ragu untuk menambahkan lebih banyak frasa pilihan Anda ke dalam daftar. Saya hanya menggunakan tiga item untuk saat ini karena nanti kami akan menambahkan kemampuan bagi pengguna untuk menambahkan frasa yang lebih mendorong untuk digunakan bot.

Bagaimana Menanggapi Pesan

Sekarang kita perlu memperbarui bot kita untuk menggunakan dua daftar yang kita buat. Pertama, impor modul acak karena bot akan memilih pesan yang mendorong secara acak. Tambahkan baris berikut ke pernyataan impor di bagian atas kode: import random.

Sekarang kita akan memperbarui fungsi on_message() untuk memeriksa semua pesan untuk melihat apakah mereka mengandung kata dari daftar sad_words. Jika kata sedih ditemukan, bot akan mengirimkan pesan dorongan secara acak.

Berikut adalah kode yang diperbarui:

async def on_message(message):
  if message.author == client.user:
    return

  msg = message.content

  if msg.startswith('$inspire'):
    quote = get_quote()
    await message.channel.send(quote)
    
  if any(word in msg for word in sad_words):
    await message.channel.send(random.choice(starter_encouragements))

Ini saat yang tepat untuk menguji bot. Anda cukup tahu sekarang untuk membuat bot Anda sendiri. Tapi selanjutnya Anda akan belajar bagaimana menerapkan fitur yang lebih canggih dan menyimpan data menggunakan database Repl.it.

Cara Mengaktifkan Pesan yang Dikirim Pengguna

Bot sepenuhnya berfungsi, tetapi sekarang mari kita perbarui bot langsung dari Discord. Seorang pengguna harus dapat menambahkan lebih banyak pesan yang mendorong untuk digunakan bot ketika mendeteksi kata sedih.

Kita akan menggunakan database bawaan Repl.it untuk menyimpan pesan yang dikirimkan pengguna. Basis data ini adalah penyimpanan nilai kunci yang ada di setiap repl.

Di bagian atas kode, di bawah pernyataan impor lainnya, tambahkan dari db impor ulang. Ini akan memungkinkan kita untuk menggunakan database Repl.it.

Pengguna akan dapat menambahkan pesan penyemangat khusus untuk bot untuk digunakan langsung dari obrolan Discord. Sebelum menambahkan perintah baru untuk bot, mari buat dua fungsi pembantu yang akan menambahkan pesan khusus ke database dan menghapusnya.

Tambahkan kode berikut setelah fungsi get_quote():

def update_encouragements(encouraging_message):
  if "encouragements" in db.keys():
    encouragements = db["encouragements"]
    encouragements.append(encouraging_message)
    db["encouragements"] = encouragements
  else:
    db["encouragements"] = [encouraging_message]

def delete_encouragment(index):
  encouragements = db["encouragements"]
  if len(encouragements) > index:
    del encouragements[index]
  db["encouragements"] = encouragements

Fungsi update_encourgements() menerima pesan yang mendorong sebagai argumen.

Pertama ia memeriksa apakah “dorongan” adalah kunci dalam database. Jika demikian, ia mendapatkan daftar dorongan yang sudah ada di database, menambahkan yang baru ke daftar, dan menyimpan daftar yang diperbarui kembali ke database di bawah kunci “dorongan”.

Jika database belum berisi “dorongan”, kunci baru dengan nama itu dibuat dan pesan dorongan baru ditambahkan sebagai elemen pertama dalam daftar.

Fungsi delete_encourgement() menerima indeks sebagai argumen.

Itu mendapat daftar dorongan dari database yang disimpan di bawah kunci “dorongan”. Jika jumlah item dalam daftar dorongan lebih besar dari indeks, maka item daftar pada indeks tersebut akan dihapus.

Terakhir, daftar yang diperbarui disimpan kembali dalam database di bawah kunci “dorongan”.

Berikut adalah kode yang diperbarui untuk fungsi on_message(). Setelah kode, saya akan menjelaskan bagian baru.

async def on_message(message):
  if message.author == client.user:
    return

  msg = message.content
 
  if msg.startswith("$inspire"):
    quote = get_quote()
    await message.channel.send(quote)

  options = starter_encouragements
  if "encouragements" in db.keys():
    options = options + db["encouragements"]

  if any(word in msg for word in sad_words):
    await message.channel.send(random.choice(options))

  if msg.startswith("$new"):
    encouraging_message = msg.split("$new ",1)[1]
    update_encouragements(encouraging_message)
    await message.channel.send("New encouraging message added.")

  if msg.startswith("$del"):
    encouragements = []
    if "encouragements" in db.keys():
      index = int(msg.split("$del",1)[1])
      delete_encouragment(index)
      encouragements = db["encouragements"]
    await message.channel.send(encouragements)

Baris kode baru pertama dari atas adalah options = starter_encourgements. Kami membuat salinan starter_encouragements karena kami akan menambahkan pesan yang dikirimkan pengguna ke daftar itu sebelum memilih pesan acak untuk dikirim oleh bot.

Kami memeriksa apakah “dorongan” sudah ada di kunci basis data (artinya pengguna telah mengirimkan setidaknya satu pesan khusus). Jika demikian, kami menambahkan pesan pengguna ke dorongan awal.

Kemudian, alih-alih mengirim pesan acak dari starter_encouragements, bot sekarang mengirim pesan acak dari opsi.

Bagian kode baru berikutnya digunakan untuk menambahkan pesan baru yang dikirimkan pengguna ke database. Jika pesan Discord dimulai dengan “$new”, maka teks setelah “$new” akan digunakan sebagai pesan penyemangat baru.

Kode msg.split(“$new “,1)[1] memisahkan pesan dari perintah “$new” dan menyimpan pesan dalam sebuah variabel. Pada baris kode tersebut, perhatikan spasi di “$new”. Kami menginginkan segalanya setelah spasi.

Kami memanggil fungsi pembantu update_encouragements dengan pesan baru, dan kemudian bot mengirim pesan ke obrolan perselisihan yang mengonfirmasi bahwa pesan telah ditambahkan.

Bagian baru ketiga (di akhir kode di atas) memeriksa apakah pesan Discord baru dimulai dengan “$del”. Ini adalah perintah untuk menghapus item dari daftar “dorongan” di database.

Pertama variabel baru yang disebut dorongan diinisialisasi sebagai array kosong. Alasan untuk ini adalah bahwa bagian kode ini akan mengirim pesan dengan array kosong jika database tidak menyertakan kunci “dorongan”.

Jika kunci “dorongan” ada di database, indeks akan dipisahkan dari pesan Discord yang dimulai dengan “$del”. Kemudian, fungsi delete_encourgement() dipanggil dengan meneruskan indeks untuk dihapus. Daftar dorongan yang diperbarui dimuat ke dalam variabel dorongan, dan kemudian bot mengirim pesan ke Discord dengan daftar saat ini.

Fitur Bot Terakhir

Bot harus bekerja jadi ini saat yang tepat untuk mengujinya. Kami sekarang akan menambahkan beberapa fitur akhir.

Kami akan menambahkan kemampuan untuk mendapatkan daftar pesan yang dikirimkan pengguna langsung dari Discord dan kami akan menambahkan kemampuan untuk mematikan dan apakah bot merespons kata-kata sedih.

Saya akan memberi Anda kode akhir lengkap dari program, dan kemudian saya akan membahas pembaruan di bawah kode.

import discord
import os
import requests
import json
import random
from replit import db

client = discord.Client()

sad_words = ["sad", "depressed", "unhappy", "angry", "miserable"]

starter_encouragements = [
  "Cheer up!",
  "Hang in there.",
  "You are a great person / bot!"
]

if "responding" not in db.keys():
  db["responding"] = True

def get_quote():
  response = requests.get("https://zenquotes.io/api/random")
  json_data = json.loads(response.text)
  quote = json_data[0]["q"] + " -" + json_data[0]["a"]
  return(quote)

def update_encouragements(encouraging_message):
  if "encouragements" in db.keys():
    encouragements = db["encouragements"]
    encouragements.append(encouraging_message)
    db["encouragements"] = encouragements
  else:
    db["encouragements"] = [encouraging_message]

def delete_encouragment(index):
  encouragements = db["encouragements"]
  if len(encouragements) > index:
    del encouragements[index]
  db["encouragements"] = encouragements

@client.event
async def on_ready():
  print("We have logged in as {0.user}".format(client))

@client.event
async def on_message(message):
  if message.author == client.user:
    return

  msg = message.content

  if msg.startswith("$inspire"):
    quote = get_quote()
    await message.channel.send(quote)

  if db["responding"]:
    options = starter_encouragements
    if "encouragements" in db.keys():
      options = options + db["encouragements"]

    if any(word in msg for word in sad_words):
      await message.channel.send(random.choice(options))

  if msg.startswith("$new"):
    encouraging_message = msg.split("$new ",1)[1]
    update_encouragements(encouraging_message)
    await message.channel.send("New encouraging message added.")

  if msg.startswith("$del"):
    encouragements = []
    if "encouragements" in db.keys():
      index = int(msg.split("$del",1)[1])
      delete_encouragment(index)
      encouragements = db["encouragements"]
    await message.channel.send(encouragements)

  if msg.startswith("$list"):
    encouragements = []
    if "encouragements" in db.keys():
      encouragements = db["encouragements"]
    await message.channel.send(encouragements)
    
  if msg.startswith("$responding"):
    value = msg.split("$responding ",1)[1]

    if value.lower() == "true":
      db["responding"] = True
      await message.channel.send("Responding is on.")
    else:
      db["responding"] = False
      await message.channel.send("Responding is off.")

client.run(os.getenv("TOKEN"))

The first section added to the code is right under the starter_encouragements list:

if "responding" not in db.keys():
db["responding"] = True

Kami membuat kunci baru di database yang disebut “menanggapi” dan mengaturnya ke “Benar”. Kami akan menggunakan ini untuk menentukan apakah bot harus merespons kata-kata sedih atau tidak. Karena database disimpan bahkan setelah program berhenti berjalan, kami hanya membuat kunci baru jika belum ada.

Bagian baru berikutnya dari kode ini adalah bahwa bagian yang menanggapi kata-kata sedih sekarang berada di dalam pernyataan if ini: if db[“responding”]:. Bot hanya akan merespon kata sedih jika db[“responding”] = True. Kemampuan untuk memperbarui nilai ini muncul setelah bagian berikut ini.

Selanjutnya, setelah kode untuk membuat bot merespon perintah “$del”, ada kode baru untuk merespons perintah “$list” saat dikirim sebagai pesan Discord.

Bagian ini dimulai dengan membuat daftar kosong yang disebut dorongan. Kemudian, jika sudah ada dorongan dalam database, dorongan tersebut menggantikan daftar kosong yang baru saja dibuat.

Akhirnya, bot mengirimkan daftar dorongan sebagai pesan Perselisihan.

Bagian baru terakhir datang berikutnya. Kode ini membuat bot merespon perintah “$responding”. Perintah ini mengambil argumen baik “benar” atau “salah”. Berikut adalah contoh penggunaan: “$responding true”.

Kode pertama-tama mengeluarkan argumen dengan nilai = msg.split(“$responding “,1)[1] (seperti sebelumnya, perhatikan spasi di “$responding “). Lalu ada pernyataan if/else yang dengan tepat mengatur kunci “merespons” dalam database dan mengirim pesan notifikasi kembali ke Discord. Jika argumennya sama sekali tidak “benar”, kode tersebut mengasumsikan “salah”.

Kode untuk bot selesai! Anda sekarang dapat menjalankan bot dan mencobanya. Namun ada satu langkah penting lagi yang akan kita bahas selanjutnya.

Cara Mengatur Bot agar Berjalan Terus

Jika Anda menjalankan bot Anda di repl.it dan kemudian menutup tab yang menjalankannya, bot Anda akan berhenti berjalan.

Tetapi ada dua cara agar bot Anda terus berjalan, bahkan setelah Anda menutup web bowser.

Cara pertama dan paling sederhana adalah mendaftar untuk paket berbayar di Repl.it. Paket berbayar termurah mereka disebut Paket Peretas dan mencakup lima perwakilan yang selalu aktif.

Anda bisa mendapatkan tiga bulan gratis menggunakan tautan ini (terbatas untuk 1000 orang pertama): https://repl.it/claim?code=tryalwayson2103

Setelah Anda mendaftar untuk paket itu, buka Repl Anda dan klik nama di bagian atas. Kemudian pilih opsi “Selalu Aktif”.

Ada cara lain untuk menjaga agar kode Anda tetap berjalan bahkan di tingkat gratis tetapi ini sedikit lebih rumit. Repl.it akan terus menjalankan server web bahkan setelah tab ditutup. Tetapi bahkan server web hanya akan berjalan hingga satu jam tanpa penggunaan apa pun.

Inilah yang dikatakan repl.it docs:

Setelah digunakan, server akan terus berjalan di latar belakang, bahkan setelah Anda menutup tab browser. Server akan tetap terjaga dan aktif hingga satu jam setelah permintaan terakhirnya, setelah itu akan memasuki tahap tidur. Orang yang sedang tidur akan dibangunkan segera setelah menerima permintaan lain; tidak perlu menjalankan ulang repl. Namun, jika Anda membuat perubahan pada server Anda, Anda harus memulai ulang repl untuk melihat perubahan tersebut tercermin dalam versi langsung.

Agar bot terus berjalan, kami akan menggunakan layanan gratis lainnya bernama Uptime Robot di https://uptimerobot.com/.

Robot Uptime dapat diatur untuk melakukan ping ke server web bot di repl.it setiap 5 menit. Dengan ping konstan, bot tidak akan pernah memasuki tahap tidur dan hanya akan terus berjalan.

Jadi kita harus melakukan dua hal lagi agar bot kita terus berjalan:

buat server web di repl.it dan

mengatur Uptime Robot untuk terus melakukan ping ke server web.

Cara Membuat Server Web di repl.it

Membuat server web lebih sederhana dari yang Anda kira.

Untuk melakukannya, buat file baru di proyek Anda bernama keep_alive.py.

Kemudian tambahkan kode berikut:

from flask import Flask
from threading import Thread

app = Flask('')

@app.route('/')
def home():
    return "Hello. I am alive!"

def run():
  app.run(host='0.0.0.0',port=8080)

def keep_alive():
    t = Thread(target=run)
    t.start()

Dalam kode ini, kami menggunakan Flask untuk memulai server web. Server mengembalikan “Halo. Saya masih hidup.” kepada siapa saja yang mengunjunginya. Server akan berjalan pada utas terpisah dari bot kami. Kami tidak akan membahas semuanya di sini karena sisanya tidak terlalu relevan dengan bot kami.

Sekarang kita hanya perlu bot untuk menjalankan server web ini.

Tambahkan baris berikut ke bagian atas main.py untuk mengimpor server.

from keep_alive import keep_alive

Untuk memulai server web saat main.py dijalankan, tambahkan baris berikut sebagai baris kedua hingga terakhir, tepat sebelum bot berjalan.

berusaha agar hidup()

Saat Anda menjalankan bot di repl.it setelah menambahkan kode ini, jendela server web baru akan terbuka. Ada URL yang ditampilkan untuk server web. Salin URL sehingga Anda dapat menggunakannya di bagian berikutnya.

Cara Mengatur Robot Waktu Aktif

Sekarang kita perlu mengatur Robot Uptime untuk melakukan ping ke server web setiap lima menit. Ini akan menyebabkan bot terus berjalan.

Buat akun gratis di https://uptimerobot.com/.

Setelah Anda masuk ke akun Anda, klik “Tambahkan Monitor Baru”.

Untuk monitor baru, pilih “HTTP(s)” sebagai Monitor Type dan beri nama apa pun yang Anda suka. Kemudian, rekatkan URL server web Anda dari repl.it. Terakhir, klik “Buat Monitor”.

Dilakukan! Sekarang bot akan terus berjalan sehingga orang dapat selalu berinteraksi dengannya di Repl.it.

Kesimpulan

Anda sekarang tahu cara membuat Discord Bot Python, dan menjalankannya terus menerus di cloud.

Ada banyak hal lain yang dapat dilakukan perpustakaan discord.py. Jadi, jika Anda ingin memberi bot Discord lebih banyak fitur, langkah Anda selanjutnya adalah memeriksa dokumen untuk discord.py.

close
Asi B Technology

Silahkan Subscribe untuk Mendapatkan Update Terbaru Sekitar Technology

We don’t spam! Read our privacy policy for more info.