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が出る気配が無く困っていますが、解決方法として何が考えられるでしょうか。