0
0

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.

Discord.pyでモーダルを使用したい。

Posted at

DiscordにてModal機能を使用したいと思っています。
以下のように入力しましたが、中々解決できません。

≪目指す目標≫
Discord内で必要な情報をmodalで収集して管理したい。

≪流れ≫
/modalでフォーム(モーダル)を呼び出す。

メールアドレス、住所、名前など、指定した項目を入力してもらう

送信

送信されたデータをスプレッドシートで受け取る
※CSVなどでも可

入力したPythonコード

import discord
from discord.ext import commands
from discord import Interaction

bot = commands.Bot(command_prefix='.', intents=discord.Intents.all())


class FavoriteFoodModal(discord.ui.Modal):
    def __init__(self):
        super().__init__(
            title="好きな食べ物は何ですか?",
            timeout=None,
        )

        self.food = discord.ui.InputText(
            label="食べ物",
            style=discord.InputTextStyle.short,
            placeholder="おにぎり",
            required=True,
        )
        self.add_item(self.food)

    async def callback(self, interaction: Interaction) -> None:
        await interaction.response.send_message(f"好きな食べ物は{self.food.value}なんだね!")
        return


@bot.command(name="food", description="好きな食べ物を聞きます")
async def food_slash(interaction: Interaction):
    modal = FavoriteFoodModal()
    await interaction.response.send_modal(modal=modal)

bot.run("TOKEN")

テストで食べ物の好みを聞くものを作っています。
上手く機能したら、必要な情報を書いてもらうようなものに仕上げる予定でした。
ちなみにスプレッドシートに飛ばす方法もわからないため、今のところ放置状態です。
.foodで起動できるようにしています。
しかしながらコマンドを押してもVisual Studioにエラーが返ってきます。

Ignoring exception in command food:
Traceback (most recent call last):
  File "C:\Python311\Lib\site-packages\discord\ext\commands\core.py", line 178, in wrapped
    ret = await coro(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\Desktop\bottest\main.py", line 31, in food_slash
    await interaction.response.send_modal(modal=modal)
          ^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Context' object has no attribute 'response'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Python311\Lib\site-packages\discord\ext\commands\bot.py", line 347, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Python311\Lib\site-packages\discord\ext\commands\core.py", line 950, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "C:\Python311\Lib\site-packages\discord\ext\commands\core.py", line 187, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Context' object has no attribute 'response'

全くmodalが出る気配が無く困っていますが、解決方法として何が考えられるでしょうか。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?