2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[interactions.py] Discord Botの作り方 #05 - Slash Command ②

Last updated at Posted at 2022-12-10

はじめに

この記事ではinteractions.pyというモジュールを使用してDiscord Botを作りたい人向けです。

#05ではSlashCommandの応用について解説していきたいと思います。

SlashCommandを登録する

これが基礎のプログラムです。

@bot.command(
  name="main",
  description="メインコマンド",
)

では今からこのプログラムにサブコマンドなどを追加していきたいと思います。

サブコマンドを登録する

@bot.command(
  name="main",
  description="テストコマンド",
  options=[
    interactions.Option(
      type=interactions.OptionType.STRING,
      name="sub",
      description="サブコマンド",
      required=True,
    ),
  ],
)

こうすることでサブコマンドを追加できます。
f5で実行した時にこの様になれば成功です。
CF4E0FC7-76E5-45A1-845E-24F70EBA182C.jpeg

サブコマンドに選択肢を追加する

通常だとサブコマンドには選択肢がないので、追加していきます。

@bot.command(
  name="main",
  description="テストコマンド",
  options=[
    interactions.Option(
      type=interactions.OptionType.STRING,
      name="sub",
      description="サブコマンド",
      required=True,
      choices=[
        interactions.Choice(name="Option1", value="option1"),
        interactions.Choice(name="Option2", value="option2")
      ], 
    ),
  ],
)

options 内に choices = ... という感じで追加することで選択肢を追加することができます。
成功するとこの様になります。
704CACFC-0518-4E4A-BC05-CD88752DF79E.jpeg

サブコマンドに書かれたことを取得する

サブコマンドの欄に書かれたことを取得するには、

async def main(ctx: interactions.CommandContext, sub: str):
  #print(sub)

という感じで、 sub: str をctxの後に追加することでsubコマンド内に書かれたことを取得することができます。

最後に

今回はinteractionsに含まれる Slash Commandについてさらに解説しました。

もし分からないところがあれば Azusa#5812 に気軽にDMしてください。

Discordサーバー

この度、bot開発者が話し合えるようなDiscordサーバーを開設しました!
ぜひ見に来てください!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?