marukot-chの日記

弱小SEの雑記です

スラッシュコマンドを使うDiscord Botは/helpを潰さないでほしい

タイトル通り。

スラッシュコマンドを使わないBotのヘルプが使えなくなってしまうため。

f:id:marukot-ch:20210606205445p:plain

/helpをするとコイツが発動する

 

対処方法

<スラッシュコマンドを使うBotでできる方法>

・/help-rythmなど、Bot名を後ろにつける(前でもいいよ。/help以外なら)

多分、普通にコマンドに色々書いている気がするのでそうやってほしい!

 

 

<スラッシュコマンドを使わないBotでできる方法>

・スラッシュ以外の記号を使うようにする(スラッシュコマンドは「/」(スラッシュ)しか見なかった気がするので)

・helpコマンドの呼び出しを別名にする(下記のあとがきに書いてある方法)

 

最終的には全部、スラッシュコマンドに対応する気もするので、過渡期のときだけの問題かもしれないなって思ってる。

あとがき

Helpコマンドって、起動するコマンドの名前を変更できるの? と思って調べたら(ネットでは見つからなかったけど)、ソースにhelpって名前がデフォルトとして(変更可能な雰囲気で)書いてあったので*1、HelpCommandを継承したクラスを作って*2、self.command_attrs['name']にhelpとして認識してほしい文字列を設定したらちゃんと認識した。下記の場合、「help-cat」でヘルプが起動

def __init__(self):

# スーパークラスのコンストラクタに値を渡して実行。

super().__init__()

self.command_attrs['name'] = 'help-cat'

self.no_category = '__カテゴリ未設定__'

self.command_attrs['description'] = 'コマンドリストを表示します。'

self.command_attrs['help'] = 'このBOTのヘルプコマンドです。'

# ここでメソッドのオーバーライドを行います。

 

ただし、スラッシュコマンドと組み合わせた感じ、スラッシュコマンドのやつがデコレーダのメソッドはヘルプコマンドで表示する対象にならなかったので、なんかダメそう。そもそも、スラッシュコマンドからヘルプコマンドを呼び出す方法もイマイチ分からないし。。。