`import discord
from discord.ext import commands
import time
import json
import platform
from discord import ui
class MyModal(ui.Modal):
added = ui.TextInput(label='What did you add', placeholder='## What did you add...', style=discord.TextStyle.long)
removed = ui.TextInput(label='What did you remove', placeholder='## What did you remove...', style=discord.TextStyle.long)
class Client(commands.Bot):
client = commands.Bot(command_prefix='!', intents=discord.Intents().all())
async def on_ready(self):
print('Logged in as: ' + self.user.name)
print('Bot ID:' + str(self.user.id))
print('Discord Version: ' + discord.__version__)
print('Python Version: ' + str(platform.python_version()))
client = Client.client
@client.command(name="modal")
async def modal(interaction: discord.Interaction):
await interaction.response.send_modal(MyModal)
client.run(TOKEN)`
我关注了一个youtube tutorial,我没有写所有相同的东西。
基本上,我想在输入命令(带前缀)时实现一个不一致的模态:'模态'我写的像视频中的家伙:
等待交互。响应。发送模态(MyModal())
因为这对他有效,我想我也会为我自己工作。
我也试过:
client.tree.command
但错误是"命令'modal'是找不到",同样的async def on_ready(self)也不工作,但我不认为这在这个问题的问题。程序正在检测'! modal'命令,但没有显示实际的模态。
属性错误:"Context"对象没有属性"response",我在那里没有上下文,因此不应将其检测为上下文。我知道上下文没有"response",但我在那里有交互。
- 我需要帮助,因为我想不通。
1条答案
按热度按时间ttcibm8c1#
我看了你的问题,其实很容易解决。
首先,你在
~commands.Bot
类中定义了一个~commands.Bot
变量,你的bot类应该是这样的:模态类中一切正常,但错误在响应中。正如您的问题描述所述,您正在尝试使用
!modal
来调用它,对吗?您必须知道~commands.Context
不能将模态作为响应发送,模态只能由~Interaction.response.send_modal
调用(在应用程序命令和视图中)此外,您将使用discord.Interaction
响应定义client.command
,将@client.command()
替换为@client.tree.command()
,并且在发送时丢失了title
和Modal
上的括号,请按以下方式进行修复:请记住,您将需要同步命令,这可能需要1小时。要同步它们,我强烈建议使用这样的命令:
任何其他疑问请在评论中提出
您实际上忘记了模态上的回调: