Anda di halaman 1dari 31

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 draw.io.

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 package.json 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 package.json 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 listmodel.js
const firebase = require('../db/firebaseConfig');

const getLIST = (callback) => {


firebase.ref(`list`).once(
'value',
(snapshot) => {
callback(snapshot.val());
},
(err) => {
console.log('Read Failed: ', err.name);
}
);
};

module.exports = { getLIST };

3.7 Pembuatan Index Utama Bot

Berikutnya adalah menyatukan semua yang sudah dibuat dan disiapkan


kedalam satu tempat yaitu pada index.js. 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 index.js

const { Client, Collection, MessageEmbed } = require('discord.js');


const fs = require('fs');

const client = new Client();

const PREFIX = '!';

const commands = new Collection();


const files = fs.readdirSync('./commands').filter((file) => file.endsWith('.js'));

for (const file of files) {


const command = require(`./commands/${file}`);
commands.set(command.name, command);
}

if (process.env.NODE_ENV !== 'production') {


require('dotenv').config();
}

client.on('ready', () => {
console.log('Bot Online');
console.log(`Logged in as ${client.user.tag}!`);
});

client.on('message', (msg) => {


if (msg.author.bot) return;
if (!msg.content.startsWith(PREFIX)) return;
let args = msg.content.substring(PREFIX.length).split(' ');

switch (args[0]) {
case 'ping':
commands.get('ping').execute(msg, args, client);
break;
case 'filmlist':
commands.get('filmlist').execute(msg, args, client);
break;
case 'info':
commands.get('info').execute(msg, args, client);
break;
case 'film':
commands.get('film').execute(msg, args, client);
break;

default:
break;
}
});

client.login(process.env.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 ping.js pada folder commands

module.exports = {
name: 'ping',
description: 'ini merupakan command test bot',
execute(msg) {
msg.reply('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 info.js pada folder commands


const {MessageEmbed} = require('discord.js');
module.exports ={
name:'info',
description:'Ini merupakan command untuk mengetahui kata kunci dari list film',
execute(msg, args, client){
const botembed = new MessageEmbed()
.setTitle(client.user.username)
.setColor(0x1076de)
.setDescription(`Sebuah Bot yang digunakan untuk melihat daftar film.\n
dibawah ini adalah perintah yang bisa dilakukan.\n enjoy!`)
.setThumbnail(client.user.displayAvatarURL())
.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)"
);

msg.channel.send(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 filmlist.js pada folder commands

const { getLIST } = require('../models/listModel');


module.exports = {
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 = '';
Object.keys(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) {
msg.reply(`${answer}`);
msg.channel.send(`${answer1}`);
msg.channel.send(`${answer2}`);
msg.channel.send(`${answer3}`);
msg.channel.send(`${answer4}`);
msg.channel.send(`${answer5}`);
msg.channel.send(`${answer6}`);
msg.channel.send(`${answer7}`);
msg.channel.send(`${answer8}`);
msg.channel.send(`${answer9}`);
msg.channel.send(`${answer10}`);
msg.channel.send(`${answer11}`);
msg.channel.send(`${answer12}`);
msg.channel.send(`${answer13}`);
msg.channel.send(`${answer14}`);
msg.channel.send(`${answer15}`);
msg.channel.send(`${answer16}`);
msg.channel.send(`${answer17}`);
msg.channel.send(`${answer18}`);
msg.channel.send(`${answer19}`);
msg.channel.send(`${answer20}`);
msg.channel.send(`${answer21}`);
msg.channel.send(`${answer22}`);
msg.channel.send(`${answer23}`);
msg.channel.send(`${answer24}`);
msg.channel.send(`${answer25}`);
} else {
msg.reply('Maaf tahun tidak tersedia');
}
});
} else {
msg.reply('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 film.js pada folder commands

const { getLIST } = require('../models/listModel');


module.exports = {
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 = '';
Object.keys(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) {
msg.reply(`${answer}`);
msg.channel.send(`${answer1}`);
msg.channel.send(`${answer2}`);
msg.channel.send(`${answer3}`);
msg.channel.send(`${answer4}`);
msg.channel.send(`${answer5}`);
msg.channel.send(`${answer6}`);
msg.channel.send(`${answer7}`);
msg.channel.send(`${answer8}`);
msg.channel.send(`${answer9}`);
msg.channel.send(`${answer10}`);
msg.channel.send(`${answer11}`);
msg.channel.send(`${answer12}`);
} else {
msg.reply('Maaf judul tidak tersedia');
}
});
} else {
msg.reply('Masukkan judul dengan benar');
}
},
};

Anda mungkin juga menyukai