見出し画像

【dislash.py】スラッシュコマンド対応日記#2 メッセージコマンド・ユーザーコマンド


6/16 追記
dislash.py は開発・サポートを終了しております。




# 1に引き続きの形となります。

メインのテーマは、その前に。

discord.pyの開発終了にともない、その後継が開発されていますが、
Pycordが一応、一番人気のようです。イチから作る人にとってはPycordから入るのが、現状一番いいのかもしれません。

私の使っているdislash.pyは、discord.pyで作ったコードをそのまま転用する意味では優れているとは思いますが。


ということで、本来の内容へ。

メッセージコマンド ユーザーコマンド


スラッシュコマンド以外にも普段使われているところを見たことないような機能も実装できます。

メッセージコマンド

まず、メッセージコマンドですが、その名の通り、メッセージに対するコマンドです。
ここで良く混同することになるのですが、特定のコマンドをテキストチャンネルで送信する
$dice

のようなものとは別のものです。

百聞は一見にしかず
下の画像のように、すでに投稿されているメッセージに対して使用するもので、画像のものは、メッセージの内容を読み取り、
りんご → ごんり

のように反転させて返すコマンドです。

コード自体は単純で

@slash_client.message_command(name="Reverse")
async def reverse(inter: ContextMenuInteraction):
    # Message commands always have only this ^ argument
    if inter.message.content:
        pprint.pprint(inter)
        # Here we will send a reversed message to the chat
        await inter.respond(inter.message.content[::-1])
    else:
        # Here we will explain that the message isn't valid
        await inter.respond("There's no content", ephemeral=True)

メッセージコマンドの使用したメッセージの情報を inter.message で受け、メッセージ内容のinter.message.content を[::-1]で逆順にしているだけです。

上のコードでは、pprint.pprint(inter)で中身を見ていますが、情報量が多いためすべてを上げませんが、概ね今までのコマンドの情報と大差ないと考えてください。

ユーザーコマンド

メッセージコマンドがメッセージに対するものであるのに対して、ユーザーコマンドはユーザーに対してのものです。

例としてあるものは、ユーザー情報を引き出すコマンドです。

@slash_client.user_command(name="Created at")
async def created_at(inter: ContextMenuInteraction):
    # User commands always have only this ^ argument
    await inter.respond(
        f"{inter.user} was created at {inter.user.created_at}",
        ephemeral=True  # Make the message visible only to the author
    )
    pprint.pprint(inter.user)

上の user.created_at でアカウントが作成された日時を取れるというのは、調べていても出てこなかったため、どういう情報をとれるのか次第で上手く利用できるかもしれません・・・・。


以上、メッセージコマンドとユーザーコマンドについての説明ですが、今現在はスマホ版ではどちらも対応していないので注意が必要です。
スマホ版Discordでも利用できれば、一考するのですが、スマホでの利用も多いため、これ以上は私も触れていません。


今回は、一通りの実験が終えたため、その記録としてつけています。

ではでは

----------
Shiftkeyについて


noteの内容に共感していただければ、ぜひともサポートを宜しくお願いします。今後の記事投稿の励みになります。