Karena keputusan discord untuk menerapkan perintah garis miring untuk bot, saya akan berhenti mengembangkan proyek ini. Ini berarti saya tidak akan memperbaiki masalah atau bug apa pun atau menambahkan fitur baru. Proyek ini akan tetap berada di GitHub tetapi akan tercapai.
Alasan utama saya mengambil keputusan ini adalah karena mengubah bot untuk menggunakan perintah garis miring akan mengharuskan saya menulis ulang seluruh logika perintah. Saya tidak punya waktu atau motivasi untuk menulis ulang bagian utama dari basis kode. Selain itu, pemeliharaan dynoBot cukup berat, terutama dalam hal modul streaming musik yang bergantung pada banyak paket npm lain yang cenderung rusak.
Oleh karena itu, dengan sedih saya akan menghentikan proyek ini.
dynoBot adalah bot Discord modular yang menggunakan JavaScript dan opsional juga Python dan Lua. Itu dibangun sedemikian rupa sehingga pembuatan modul baru dapat dilakukan dengan mudah dalam bahasa skrip yang Anda sukai.
Ide di balik bot ini adalah membuat modul yang Anda perlukan sendiri dengan sedikit usaha. Oleh karena itu, dynoBot dapat dianggap sebagai kerangka kerja yang menangani segala sesuatu yang berhubungan dengan api perselisihan, sehingga Anda dapat segera mulai mengembangkan modul Anda sendiri.
Namun demikian, dynoBot dapat digunakan tanpa menulis satu baris kode pun selama Anda hanya membutuhkan modul yang disertakan.
Bot saat ini memiliki modul berikut:
Anda dapat melihat semua perintah yang tersedia dengan mengetikkan "@BotName help" di obrolan perselisihan. Alternatifnya, Anda dapat melihat file command.json.
Pertama, Anda memerlukan nodejs dan opsional python3 untuk modul python dan lua untuk modul lua. Setelah instalasi, kloning repositori ini dan jalankan npm install
di dalam folder dynoBot
. Itu harus menginstal semua dependensi yang diperlukan.
Untuk menjalankan bot perselisihan, Anda harus menambahkan file security.json
di dalam direktori dynoBot/cfg
. Seharusnya terlihat seperti ini:
{
"token" : " your discord bot token "
}
PENTING: Saat Anda melakukan fork pada proyek ini, jangan unggah security.json ke repositori Anda. Ini akan memungkinkan orang lain mencuri token perselisihan Anda.
Jika Anda ingin menggunakan modul Wolfram|Alpha, Anda juga memerlukan kunci API mereka di security.json
. Anda dapat meminta kunci Wolfram|Alpha API gratis di sini.
Dengan kunci API, security.json Anda akan terlihat seperti ini:
{
"token" : " your discord bot token " ,
"wolframAlphaAPI" : " your api key "
}
Secara default, semua log ditulis ke konsol. Jika Anda ingin log ditulis ke file log, Anda harus mengaktifkan login di security.json
seperti ini:
{
"token" : " your discord bot token " ,
"logging" : true
}
Sekarang Anda dapat memulai bot dengan menggunakan perintah node main.js
di dalam direktori dynoBot
.
Anda dapat membuat modul dalam JavaScript, Python atau Lua. Ada dua jenis modul, modul obrolan dan modul kait. Modul obrolan dijalankan setiap kali pengguna mengirim pesan dengan perintah yang sesuai. Sebuah hook secara otomatis dieksekusi dalam interval tertentu. Di bawah ini saya akan menunjukkan cara membuatnya dalam JavaScript, Python dan Lua. Alternatifnya, Anda dapat melihat contoh modul untuk JavaScript, Python, dan Lua yang disertakan dalam proyek.
Modul JavaScript, Python dan Lua memerlukan entri dalam file command.json yang terlihat seperti ini:
{
"group" : " command-group-name " ,
"type" : " python " ,
"regex" : " py-example|python example " ,
"help" : " python example " ,
"path" : " src/py-modules/example-python.py " ,
"hidden" : false
}
Konten properti bantuan akan digunakan untuk daftar perintah. Jika tidak ada, properti regex akan digunakan.
Properti grup dapat digunakan untuk mengizinkan pemfilteran saat menggunakan perintah bantuan. Misalnya ada grup bernama "basic" yang mencakup semua perintah inti bawaan. Jika Anda hanya ingin melihat perintah grup "dasar" di daftar perintah, gunakan "bantuan" alih-alih perintah bantuan biasa.
Menyetel tersembunyi ke benar akan mengecualikan perintah dari daftar perintah.
Modul JavaScript memiliki akses langsung ke pembungkus discord.js. Struktur dasar modul terlihat seperti ini:
module . exports = {
run : function ( msg , client ) {
msg . getTextChannel ( ) . send ( "I received these parameters: " + msg . getContentArray ( ) ) ;
}
} ;
Kode yang dieksekusi ketika modul dipanggil termasuk dalam fungsi run. Parameter pesan dan klien ditentukan oleh chatbot-api-wrapper. Anda dapat menemukan informasi lebih lanjut tentang penerapannya di sana.
Modul Python tidak memiliki akses ke pembungkus discord.js tetapi mendapat msg.contentArray
dan msg.aRegexGroups
. Struktur dasarnya terlihat seperti ini:
import sys
msg = sys . argv [ 1 ]. split ( "," ) # Array of input parameters
regexGroups = sys . argv [ 2 ]. split ( "," ) # Array of input regex groups
# insert code to handle the input parameters here
print ( "I received these parameters: " + str ( msg )) # This will be the msg that the bot sends
print ( "These are the regex groups" + str ( regexGroups )) # This is a second message that the bot sends
sys . stdout . flush () # cleanup
Seperti yang Anda lihat, hasil cetak membuat bot mengirim pesan.
Modul Lua juga tidak memiliki akses ke pembungkus discord.js tetapi mendapat msg.contentArray
dan msg.aRegexGroups
. Struktur dasarnya terlihat seperti ini:
-- Import lua module helper for splitting strings into arrays
require " src/utils/luaUtils "
local sMessage = arg [ 1 ] -- String of input parameters
local sRegexGroups = arg [ 2 ] -- String of input regex groups
local aMessage = utils . splitString ( sMessage , " , " ) -- Array of input parameters
local aRegexGroups = utils . splitString ( sRegexGroups , " , " ) -- Array of input regex groups
-- Insert code to handle the input parameters here
-- This will be the msg that the bot sends
print ( " I received these parameters: [ " .. tostring ( aMessage [ 1 ]) .. " , " .. tostring ( aMessage [ 2 ]) .. " ] " )
-- This is a second message that the bot sends
print ( " These are the regex groups: [ " .. tostring ( aRegexGroups [ 1 ]) .. " ] " )
Seperti yang Anda lihat, hasil cetak membuat bot mengirim pesan. Secara keseluruhan modul Lua sangat mirip dengan modul Python.
Modul JavaScript dan Python keduanya memerlukan entri dalam file hooks.json yang terlihat seperti ini:
"technicalHookName" : {
"type" : " js " ,
"name" : " hookName " ,
"path" : " src/js-modules/yourModule.js " ,
"channel" : 0 ,
"interval" : 10000 ,
"running" : false
}
Modul JavaScript memiliki akses ke objek saluran dari pembungkus discord.js. Kode yang dieksekusi ketika modul dipanggil termasuk dalam fungsi hook.
module . exports = {
hook : function ( channel ) {
channel . send ( "This js message is automatically sent in a specific interval" ) ;
}
} ;
Fungsi hook dijalankan ketika hooks.json memiliki saluran yang ada dan berjalan.
Modul Python tidak memiliki akses ke objek saluran, tidak menerima masukan. Itu hanya menjalankan skrip python dan setiap panggilan cetak membuat pesan bot. Seharusnya terlihat seperti ini:
import sys
# insert code to handle the input parameters here
# This will be the msg that the bot sends
print ( "This py message is automatically sent in a specific interval" )
sys . stdout . flush () # cleanup
Modul Lua juga tidak memiliki akses ke objek saluran, ia tidak menerima masukan. Itu hanya menjalankan skrip lua dan setiap panggilan pencetakan menciptakan pesan bot. Seharusnya terlihat seperti ini:
-- Insert code here
-- This will be the msg that the bot sends
print ( " This lua message is automatically sent in a specific interval. " )
Ini sekali lagi mirip dengan modul Python.
Ya, saya akan meninjau kode Anda dan jika bagus, saya akan menggabungkannya ke dalam master. Harap sesuaikan gaya kode Anda dengan modul yang sudah ada.
Ya, itu juga oke. Namun alangkah baiknya jika lebih banyak orang yang bisa mengambil manfaat dari karya Anda.