BAB 3
METODE PENELITIAN
3.1 Tujuan Aplikasi
Bot ini merupakan salah satu jenis bot informasi yang dapat memberikan
informasi seputar list film, tahun rilis film, dan informasi lainnya. Dalam proses
pembuatan bot ini yang dapat digunakan melalui discord yaitu menggunakan
sedemikian tools pendukung. Secara umum bot ini memiliki 4 command atau 4
perintah agar bot dapat dipanggil dan memberikan jawaban yang tersimpan di dalam
database.
3.2 Analisa Sistem
Analisa sistem merupakan langkah yang dipakai untuk menguraikan suatu
sistem informasi yang utuh ke dalam bagian – bagian komponennya dengan maksud
untuk mengidentifikasi dan mengevalusi permasalahan, hambatan yang terjadi,
kesempatan dan kebutuhan yang diharapkan.
3.2.1. Analisa Kebutuhan Masyarakat
Analisa kebutuhan masyarakat pada bot ini berupa informasi mengenai
penjelasan dari judul film yang tersedia di dalam list tersebut.
3.2.2. Analisa Kebutuhan Admin
Analisa kebutuhan admin digunakan untuk mengatur data – data dan
penambahan mengenai informasi tambahan ataupun pendambahan deskripsi dari
judul film yang sudah tersedia.
3.2.3. Analisa Kebutuhan Software dan Hardware
Kebutuhan software dan hardware yang dibutuhkan sebagai berikut :
Menggunakan sistem operasi windows 10.
Menggunakan firebase sebagai penyimpanan database utama.
Menggunakan visual code studio sebagai text editor tempat melakukan proses
coding.
Menggunakan Node Js sebagai bantuan untuk bahasa pemrograman.
Discord sebagai tempat dimana user dapat mengakses bot.
Laptop Asus U36SD
Proccesor Intel i5-2410M CPU 2.30Ghz (4 CPUs).
Memori RAM 8 GB
3.3 Rancangan Sistem Aplikasi
Pada tahap ini dilakukan beberapa tahap proses perancangan pada bot yang
akan dibuat, dimana untuk mempermudah dalam pembuatan tampilan yang akan
tersedia. Proses perancangan ini antara lain yaitu, perancangan desain antarmuka,
desain struktur navigasi, dan UML menggunakan [Link].
3.3.1. Stuktur Navigasi
Struktur navigasi merupakan termasuk rangkaian penting dalam pembuatan
rancangan aplikasi dan gambarnya harus ada pada tahap perancangan. Stuktur
navigasi merupakan hubungan dan rantai dari beberapa area yang berbeda
Pada aplikasi ini menggunakan struktur navigasi non-linier. Struktur navigasi
non-linier merupakan pengembangan dari struktur navigasi linier. Struktur ini
diperkenankan membuat navigasi bercabang. tiap-tiap tampilan mempunyai
kedudukan yang sama yaitu tidak ada Master Page dan Slave Page.
Gambar 3.1 Struktur Navigasi
3.4 Rancangan UML (Unified Modelling Language)
Perancangan pada pembuatan bot ini menggunakan diagram UML (Unified
Modelling Language). Perancangan sistem pada pembuatan bot ini menggunakan Use
Case Diagram. Lalu diagram aktivitas digunakan untuk mengetahui apa saja aktivitas
yang terjadi pada sistem ini. Berikut penjelasan mengenai pembuatan diagram –
diagram UML :
3.4.1. Rancangan Use Case
Menggambarkan sekelompok use case yang disertai hubungan atau relasi
diantaranya. Diagram use case ini digunakan untuk menjelaskan dan menerangkan
kebutuhan yang diinginkan atau dikehendaki user.
Gambar 3.2 Use Case Diagram Admin
Gambar 3.3 Use Case Diagram User
3.4.2. Rancangan Activity Diagram
Menggambarkan rangkaian aliran aktivitas dari awal hingga akhir, digunakan
untuk mendeskripsikan suatu aktivitas yang dibentuk dalam sebuah operasi.
Gambar 3.4 Activity Diagram Admin
Gambar 3.5 Activity Diagram User
3.5 Rancangan Aplikasi
Sebelum melakukan pembuatan bot, harus membuat rancangan saat
pemanggilan perintah tiap fitur yang ada terlebih dahulu untuk memudahkan pada
saat pembuatan aplikasi. Berikut ini merupakan rancangan tampilan dari bot tersebut :
3.5.1 Rancangan Command Ping
Command ping digunakan untuk mengetahui jika bot yang telah dibuat sudah
aktif dan bisa digunakan pada server discord yang tersedia.
Gambar 3.6 Rancangan Tampilan Command Ping
3.5.2 Rancangan Command Info
Command info digunakan untuk mengetahui ada fitur apa saja yang dimiliki
oleh bot yang telah dibuat, sehingga memudahkan pengguna dalam menggunakan bot
tersebut.
Gambar 3.7 Rancangan Tampilan Command Info
3.5.3 Rancangan Command Filmlist
Command filmlist digunakan untuk mengetahui terdapat judul film apa saja
yang ada pada tahun tersebut.
Gambar 3.8 Rancangan Tampilan Command Filmlist
Gambar 3.9 Rancangan Tampilan Command Filmlist Error
3.5.4 Rancangan Command Film
Command film digunakan untuk mengetahui tentang penjelasan mengenai
judul film yang terdapat pada list tersebut.
Gambar 3.10 Rancangan Tampilan Command Film
Gambar 3.11 Rancangan Tampilan Command Film Error
3.6 Persiapan Tools
Mempersiapkan tools dibutuhkan dalam pembuatan bot discord karena untuk
mengetahui tools apa saja yang akan dipakai. Selain code editor, dibutuhkan beberapa
installasi lainnya agar bot dapat dibuat dan dijalankan.
3.6.1 Setup Discord Developer Portal
Melakukan setup discord developer portal sebagai landasan bot yang akan
dibuat. Disini dapat membuat bot langsung diberikan oleh discord nya tetapi belum
bisa dipakai, dengan kata lain masih belum berfungsi. Langkah yang dilalui untuk
pembuatannya sebagai berikut :
a. Melakukan login lalu memilih untuk membuat new application untuk bot
yang dibuat
Gambar 3.12 Membuat Bot Baru New Application
Gambar 3.13 Melengkapi General Information
Gambar 3.14 Melengkapi OAuth2 untuk Url Generator
Gambar 3.15 Melengkapi OAuth2 untuk Bot Permission
Gambar 3.16 Menyalin url yang telah diberikan untuk memasukkan bot ke server
3.6.2 Instalasi Node Js
Menyiapkan Node Js sebagai platform software dan bahasa pemrograman
yang dipakai untuk membantu dalam pembuatan bot discord. Langkah yang dilalui
dalam pembuatan Node Js sebagai berikut :
a. Mendownload Node Js dari website resmi agar lebih mudah lalu melakukan
instalasi.
Gambar 3.17 Website Resmi Node Js
Gambar 3.18 Melakukan instalasi Setup
b. Setelah itu mengecek apakah versi node js yang di download sudah terinstall
di dalam pc kalian
Gambar 3.19 Versi Node Js
3.6.3 Instalasi Npm dan Discord Js
Langkah berikutnya yaitu melakukan instalasi Npm dan Discord Js sebagai
landasan untuk [Link] dari bot discord yang dibuat. Hal ini dibutuhkan untuk
melakukan pendataan dan lisensi dari bot yang dibuat , juga sebagai landasan seperti
apa saja yang dipakai dalam pembuatan bot discord ini. Langkah yang dilalui sebagai
berikut :
a. Melakukan Npm init lalu menginput apa saja yang anda butuhkan
Gambar 3.20 Melakukan npm init
Gambar 3.21 Melihat data ulang yang sudah masuk
Gambar 3.22 Melakukan instalasi discord js
Gambar 3.23 Terlihat [Link] sudah terisi
3.6.4 Instalasi Dotenv
Melakukan instalasi Dotenv agar memudahkan pemanggilan bot dan membuat
penempatan untuk api token dari bot yang dibuat. Langkah nya sebagai berikut :
a. Melakukan npm install dotenv terlebih dahulu agar dotenv dapat dijalankan
setelahnya
Gambar 3.24 Install dotenv
b. Memasukkan api token dari bot yang telah dibuat sebelumnya di discord
developer portal
Gambar 3.25 Mengambil API Token
Gambar 3.26 Menyimpan Api Token
3.6.5 Instalasi Nodemon
Nodemon adalah package tambahan yang diberikan oleh Node Js agar
memudahakan dalam proses pembuatan dan pemanggilan bot discord. Langkah nya
sebagai berikut :
a. Melakukan pemanggilan Nodemon memakai terminal yang ada di Visual
Code Studio
Gambar 3.27 Install Nodemon memakai Npm
Gambar 3.28 Penggunaan nodemon untuk memanggil bot
3.6.6 Membuat Database dengan Firebase
Menggunakan Firebase sebagai database adalah hal yang perlu dilakukan
sebagai pembuat bot discord. Firebase dapat menambahkan atau menguragi data
secara real time tanpa ada kendala. Berikut langkah yang harus dilakukan :
a. Membuka website firebase untuk membuat database baru
Gambar 3.29 Halaman awal firebase
b. Membuat project baru atau database baru
Gambar 3.30 Project database baru
c. Memasukkan list data yang ingin ditampilkan ke dalam database dan harus
sesuai.
Gambar 3.31 Contoh memasukkan data ke database
Gambar 3.32 Memasukan question untuk pemanggilan perintah bot
Gambar 3.33 List data yang ingin ditampilkan
3.6.7 Melakukan Koneksi Database dari Firebase
Setelah membuat dan mengisi data pada database, hal yang perlu dilakukan
yaitu membuat koneksi antara bot dengan firebase agar data dalam database dapat
ditampilkan. Berikut langkah yang perlu dilakukan :
a. Melakukan instalasi menggunakan npm terlebih dahulu
Gambar 3.34 Instalasi menggunakan npm
Gambar 3.35 Hasilnya jika firebase-admin sudah terinstall
b. Mengambil Admin SDK dan generate private key pada firebase
Gambar 3.36 Mengambil listing code untuk node js
Gambar 3.37 Melakukan generate new private key
c. Menyambungkan database pada firebase config dan pada bagian list model
Gambar 3.38 Memasukan list code yang sudah diambil dari firebase untuk node js
d. Melakukan setup pada [Link]
const firebase = require('../db/firebaseConfig');
const getLIST = (callback) => {
[Link](`list`).once(
'value',
(snapshot) => {
callback([Link]());
},
(err) => {
[Link]('Read Failed: ', [Link]);
}
);
};
[Link] = { getLIST };
3.7 Pembuatan Index Utama Bot
Berikutnya adalah menyatukan semua yang sudah dibuat dan disiapkan
kedalam satu tempat yaitu pada [Link]. Disini meliputi semua bagian termasuk
prefix untuk memanggil bot dan menyimpan commands apa saja yang dapat
dipanggil. Disini juga dapat memberikan notifikasi apabila bot sudahh dinyalakan.
Gambar 3. 39 Menambahkan [Link]
const { Client, Collection, MessageEmbed } = require('[Link]');
const fs = require('fs');
const client = new Client();
const PREFIX = '!';
const commands = new Collection();
const files = [Link]('./commands').filter((file) => [Link]('.js'));
for (const file of files) {
const command = require(`./commands/${file}`);
[Link]([Link], command);
}
if ([Link].NODE_ENV !== 'production') {
require('dotenv').config();
}
[Link]('ready', () => {
[Link]('Bot Online');
[Link](`Logged in as ${[Link]}!`);
});
[Link]('message', (msg) => {
if ([Link]) return;
if () return;
let args = [Link]([Link]).split(' ');
switch (args[0]) {
case 'ping':
[Link]('ping').execute(msg, args, client);
break;
case 'filmlist':
[Link]('filmlist').execute(msg, args, client);
break;
case 'info':
[Link]('info').execute(msg, args, client);
break;
case 'film':
[Link]('film').execute(msg, args, client);
break;
default:
break;
}
});
[Link]([Link].API_TOKEN);
3.8 Pembuatan Command Bot
Dalam pembuatan bot, diperlukan beberapa command agar bot dapat
terpanggil sesuai dengan apa yang kita ketikan. Di dalam 1 bot bisa terdapat banyak
sekali command yang bisa dilakukan. Bot yang penulis buat kali ini dapat memanggil
5 jenis command yang dapat bot lakukan. Berikut apa saja dan bagaiman cara bot
tersebut dapat dipanggil :
3.8.1 Command Ping
Command ping adalah langkah awal untuk mengetahui bot kita sudah
terkoneksi dengan discord.
Gambar 3.40 Menambahkan [Link] pada folder commands
[Link] = {
name: 'ping',
description: 'ini merupakan command test bot',
execute(msg) {
[Link]('Bot sudah aktif');
},
};
3.8.2 Command Info
Menambahkan bagian info agar pengguna dapat mengetahui tentang bot yang
dibuat dan ada perintah apa saja yang dapat dipanggil oleh user kepada bot tersebut.
Gambar 3.41 Menambahkan [Link] pada folder commands
const {MessageEmbed} = require('[Link]');
[Link] ={
name:'info',
description:'Ini merupakan command untuk mengetahui kata kunci dari list film',
execute(msg, args, client){
const botembed = new MessageEmbed()
.setTitle([Link])
.setColor(0x1076de)
.setDescription(`Sebuah Bot yang digunakan untuk melihat daftar film.\n
dibawah ini adalah perintah yang bisa dilakukan.\n enjoy!`)
.setThumbnail([Link]())
.addField("filmlist", "2019, 2019-2, 2020, 2021")
.addField("film", "Uncharted, Sing-2, Umma, dll")
.setFooter("contoh : \n!filmlist 2021\n!film Uncharted\nGunakan - untuk
pengganti spasi (!film Toy-Story-4)"
);
[Link](botembed);
}
}
3.8.3 Command Filmlist
Fitur pertama pada bot ini yaitu dapat menampilkan list film berdasarkan
tahun yang diinginkan. Disini salah satu hal yang diperlukan oleh pengguna dalam
mengetahui ada list film apa saja pada tahun tersebut.
Gambar 3.42 Menambahkan [Link] pada folder commands
const { getLIST } = require('../models/listModel');
[Link] = {
name: 'filmlist',
description: 'Ini merupakan penjelasan film',
execute(msg, args, client) {
if (args[1]) {
getLIST((data) => {
let answer,
answer1,
answer2,
answer3,
answer4,
answer5,
answer6,
answer7,
answer8,
answer9,
answer10,
answer11,
answer12,
answer13,
answer14,
answer15,
answer16,
answer17,
answer18,
answer19,
answer20,
answer21,
answer22,
answer23,
answer24,
answer25 = '';
[Link](data).map((key) => {
if (data[key].question === args[1]) {
answer = data[key].answer;
answer1 = data[key].answer1;
answer2 = data[key].answer2;
answer3 = data[key].answer3;
answer4 = data[key].answer4;
answer5 = data[key].answer5;
answer6 = data[key].answer6;
answer7 = data[key].answer7;
answer8 = data[key].answer8;
answer9 = data[key].answer9;
answer10 = data[key].answer10;
answer11 = data[key].answer11;
answer12 = data[key].answer12;
answer13 = data[key].answer13;
answer14 = data[key].answer14;
answer15 = data[key].answer15;
answer16 = data[key].answer16;
answer17 = data[key].answer17;
answer18 = data[key].answer18;
answer19 = data[key].answer19;
answer20 = data[key].answer20;
answer21 = data[key].answer21;
answer22 = data[key].answer22;
answer23 = data[key].answer23;
answer24 = data[key].answer24;
answer25 = data[key].answer25;
}
});
if (answer) {
[Link](`${answer}`);
[Link](`${answer1}`);
[Link](`${answer2}`);
[Link](`${answer3}`);
[Link](`${answer4}`);
[Link](`${answer5}`);
[Link](`${answer6}`);
[Link](`${answer7}`);
[Link](`${answer8}`);
[Link](`${answer9}`);
[Link](`${answer10}`);
[Link](`${answer11}`);
[Link](`${answer12}`);
[Link](`${answer13}`);
[Link](`${answer14}`);
[Link](`${answer15}`);
[Link](`${answer16}`);
[Link](`${answer17}`);
[Link](`${answer18}`);
[Link](`${answer19}`);
[Link](`${answer20}`);
[Link](`${answer21}`);
[Link](`${answer22}`);
[Link](`${answer23}`);
[Link](`${answer24}`);
[Link](`${answer25}`);
} else {
[Link]('Maaf tahun tidak tersedia');
}
});
} else {
[Link]('Masukkan tahun film nya');
}
},
};
3.8.4 Command Film
Fitur berikutnya pada bot ini yaitu dapat menampilkan detail dari judul film
yang diinginkan, Disini pengguna dapat mengetahui review dari sumber yang
terpercaya agar memudahkan pengguna memilih film yang ditonton. Disini juga
menampilkan link trailer untuk film yang dipilih.
Gambar 3.43 Menambahkan [Link] pada folder commands
const { getLIST } = require('../models/listModel');
[Link] = {
name: 'film',
description: 'Ini merupakan penjelasan film',
execute(msg, args, client) {
if (args[1]) {
getLIST((data) => {
let answer,
answer1,
answer2,
answer3,
answer4,
answer5,
answer6,
answer7,
answer8,
answer9,
answer10,
answer11,
answer12 = '';
[Link](data).map((key) => {
if (data[key].question === args[1]) {
answer = data[key].answer;
answer1 = data[key].answer1;
answer2 = data[key].answer2;
answer3 = data[key].answer3;
answer4 = data[key].answer4;
answer5 = data[key].answer5;
answer6 = data[key].answer6;
answer7 = data[key].answer7;
answer8 = data[key].answer8;
answer9 = data[key].answer9;
answer10 = data[key].answer10;
answer11 = data[key].answer11;
answer12 = data[key].answer12;
}
});
if (answer) {
[Link](`${answer}`);
[Link](`${answer1}`);
[Link](`${answer2}`);
[Link](`${answer3}`);
[Link](`${answer4}`);
[Link](`${answer5}`);
[Link](`${answer6}`);
[Link](`${answer7}`);
[Link](`${answer8}`);
[Link](`${answer9}`);
[Link](`${answer10}`);
[Link](`${answer11}`);
[Link](`${answer12}`);
} else {
[Link]('Maaf judul tidak tersedia');
}
});
} else {
[Link]('Masukkan judul dengan benar');
}
},
};