ボットにスラッシュ コマンドを強制するという Discord の決定により、このプロジェクトの開発を中止します。これは、問題やバグを修正したり、新しい機能を追加したりしないことを意味します。プロジェクトは GitHub 上に残りますが、必ず達成されます。
この決定を下した主な理由は、ボットを変換してスラッシュ コマンドを使用するには、コマンド ロジック全体を書き直す必要があるためです。コードベースの主要部分を書き直す時間もやる気もありません。その上、dynoBot はメンテナンスが非常に多く、特に音楽ストリーミング モジュールに関しては、壊れやすい他の多くの npm パッケージに依存しています。
したがって、残念ながらこのプロジェクトを中止させていただきます。
dynoBot は、JavaScript を使用し、オプションで Python と Lua も使用するモジュール式の Discord ボットです。これは、好みのスクリプト言語で新しいモジュールを簡単に作成できるように構築されています。
ボットの背後にある考え方は、最小限の労力で必要なモジュールを自分で作成することです。したがって、dynoBot は discord API に関連するすべてを処理するフレームワークと考えることができ、すぐに独自のモジュールの開発を開始できます。
それでも、必要なモジュールが含まれている限り、dynoBot はコードを 1 行も記述することなく使用できます。
ボットには現在次のモジュールがあります。
Discord チャットで「@BotName help」と入力すると、利用可能なすべてのコマンドが表示されます。あるいは、commands.json ファイルを確認することもできます。
まず、nodejs が必要で、オプションで Python モジュール用の python3 と、lua モジュール用の lua が必要です。インストール後、このリポジトリのクローンを作成し、 dynoBot
フォルダー内でnpm install
実行します。必要な依存関係をすべてインストールする必要があります。
discord ボットを実行するには、ディレクトリdynoBot/cfg
内にsecurity.json
ファイルを追加する必要があります。次のようになります。
{
"token" : " your discord bot token "
}
重要: このプロジェクトをフォークするときは、security.json をリポジトリにアップロードしないでください。これにより、他の人があなたの Discord トークンを盗むことができます。
Wolfram|Alpha モジュールを使用したい場合は, security.json
にもその API キーが必要になります。ここで無料のWolfram|Alpha APIキーをリクエストできます。
API キーを使用すると、security.json は次のようになります。
{
"token" : " your discord bot token " ,
"wolframAlphaAPI" : " your api key "
}
デフォルトでは、すべてのログがコンソールに書き込まれます。ログをログ ファイルに書き込む場合は、次のようにsecurity.json
でのログ記録を有効にする必要があります。
{
"token" : " your discord bot token " ,
"logging" : true
}
これで、 dynoBot
ディレクトリ内のコマンドnode main.js
使用してボットを起動できるようになります。
モジュールは JavaScript、Python、または Lua で作成できます。モジュールにはチャットモジュールとフックモジュールの 2 種類があります。チャット モジュールは、ユーザーが対応するコマンドを使用してメッセージを送信するたびに実行されます。フックは特定の間隔で自動的に実行されます。以下では、JavaScript、Python、Lua で作成する方法を説明します。あるいは、プロジェクトに含まれる JavaScript、Python、Lua のサンプル モジュールを確認することもできます。
JavaScript、Python、Lua モジュールでは、commands.json ファイルに次のようなエントリが必要です。
{
"group" : " command-group-name " ,
"type" : " python " ,
"regex" : " py-example|python example " ,
"help" : " python example " ,
"path" : " src/py-modules/example-python.py " ,
"hidden" : false
}
help プロパティの内容はコマンド リストに使用されます。存在しない場合は、regex プロパティが使用されます。
グループ プロパティを使用すると、help コマンドの使用中にフィルタリングを行うことができます。たとえば、すべての組み込みコア コマンドを含む「basic」というグループがあります。コマンド リスト内の「基本」グループのコマンドのみを表示したい場合は、通常のヘルプ コマンドの代わりに「ヘルプ」を使用します。
hidden を true に設定すると、コマンドがコマンド リストから除外されます。
JavaScript モジュールは discord.js ラッパーに直接アクセスできます。モジュールの基本構造は次のようになります。
module . exports = {
run : function ( msg , client ) {
msg . getTextChannel ( ) . send ( "I received these parameters: " + msg . getContentArray ( ) ) ;
}
} ;
モジュールが呼び出されたときに実行されるコードは run 関数に属します。パラメータ msg と client は、chatbot-api-wrapper によるものです。実装に関する詳細情報はそこで見つけることができます。
Python モジュールは discord.js ラッパーにアクセスできませんが、 msg.contentArray
とmsg.aRegexGroups
を取得します。基本構造は次のようになります。
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
ご覧のとおり、この印刷によりボットにメッセージが送信されます。
Lua モジュールも discord.js ラッパーにはアクセスできませんが、 msg.contentArray
とmsg.aRegexGroups
を取得します。基本構造は次のようになります。
-- 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 ]) .. " ] " )
ご覧のとおり、この印刷によりボットにメッセージが送信されます。全体的に、Lua モジュールは Python モジュールによく似ています。
JavaScript モジュールと Python モジュールはどちらも、hooks.json ファイルに次のようなエントリが必要です。
"technicalHookName" : {
"type" : " js " ,
"name" : " hookName " ,
"path" : " src/js-modules/yourModule.js " ,
"channel" : 0 ,
"interval" : 10000 ,
"running" : false
}
JavaScript モジュールは、discord.js ラッパーのチャネル オブジェクトにアクセスできます。モジュールが呼び出されたときに実行されるコードはフック関数に属します。
module . exports = {
hook : function ( channel ) {
channel . send ( "This js message is automatically sent in a specific interval" ) ;
}
} ;
フック関数は、hooks.json に既存のチャネルがあり、実行されているときに実行されます。
Python モジュールはチャネル オブジェクトにアクセスできず、入力を受け取りません。 Python スクリプトを実行するだけで、print を呼び出すたびにボット メッセージが作成されます。次のようになります。
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
Lua モジュールもチャネル オブジェクトにアクセスできず、入力を受け取りません。 lua スクリプトを実行するだけで、print を呼び出すたびにボット メッセージが作成されます。次のようになります。
-- Insert code here
-- This will be the msg that the bot sends
print ( " This lua message is automatically sent in a specific interval. " )
これも Python モジュールに似ています。
はい、コードをレビューし、問題がなければマスターにマージします。既存のモジュールに関してコード スタイルを調整してください。
はい、それも大丈夫です。しかし、より多くの人があなたの作品から利益を得られれば素晴らしいことです。