我试着使用interaction.response.defer()
来避免我的程序中的“应用程序没有响应”错误,当它在不和谐上花费超过3秒时,它会向一个类别的所有通道发送消息,它工作,但它在不和谐上返回错误,而不是“工作”。有人有解决方案吗?提前感谢您的帮助
下面是我机器人:
import asyncio
import discord
from discord import app_commands
from discord.ext import commands
intents = discord.Intents().all()
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_ready():
print("Bot is up and ready! ")
try:
synced = await bot.tree.sync()
print(f"Synced {len(synced)} command(s)")
except Exception as e:
print(e)
@bot.tree.command(name="sendall", description="Send a message to all the channels in a category")
@app_commands.describe(category_name="Name of the category where you want to send the message.",
msg="The message you want to send")
async def sendall(interaction: discord.Interaction, category_name: str, *, msg: str):
# Récupère la catégorie correspondante
category = None
for c in interaction.guild.categories:
if c.name.lower() == category_name.lower():
category = c
break
# Vérifie si la catégorie est valide
if category is None:
await interaction.response.send_message("La catégorie spécifiée n'existe pas.")
return
# Envoie le message dans tous les salons de la catégorie
for channel in category.text_channels:
await channel.send(msg)
await interaction.response.defer(ephemeral=True) # defer before 3 seconds
await asyncio.sleep(15)
await interaction.followup.send("working") # any follow up message you want to send
bot.run("*****")
我期待从我的机器人得到“工作”消息后,它发送消息到所有渠道的类别,我尝试了一个较小的类别,需要不到3秒发送一切,它的工作,但当我尝试了一个类别,有更多的渠道,需要超过3秒,它的工作,但它返回给我“应用程序没有响应”错误
1条答案
按热度按时间3mpgtkmj1#
你需要把
interaction.response.defer
放在那些需要花费大量时间的代码上面,把它放在通道循环的上面(甚至放在交互的最顶端),我非常肯定这会解决你的问题。即: