Существует функция /apply, которая отправляет встраивание и «ReviewView» в наш канал для сотрудников.
Код: Выделить всё
class ReviewView(View):
def __init__(self, embed_user:discord.user, floor:int):
super().__init__()
self.embed_user = embed_user
self.floor=floor
@discord.ui.button(label="Accept", style=discord.ButtonStyle.success)
async def approve(self, interaction: discord.Interaction, button: discord.ui.Button):
embed = interaction.message.embeds[0]
embed.color = discord.Color.green()
role = get(self.embed_user.guild.roles, name=f"F{self.floor} Carrier")
user = self.embed_user
user_roles = [role.name for role in user.roles]
if not any(role=="Carry Team" for role in user_roles):
carry_team = get(interaction.guild.roles, name=f"Carry Team")
await user.add_roles(carry_team)
try:
dm_embed = discord.Embed(title=f"Your dungeon floor {self.floor} application has been accepted", description="Thank you for joining our carrier program. You will be pinged when a carry service that you provide is requested!")
dm_embed.add_field(name="Rules", value="")
dm_embed.add_field(name="Accepted By", value=f"{interaction.user.mention}", inline=False)
dm_embed.set_author(name=interaction.user.name, icon_url=interaction.user.display_avatar.url)
dm_embed.timestamp = interaction.created_at
dm_embed.color=discord.Color.green()
await user.send(embed=dm_embed)
await interaction.message.edit(embed=embed)
await self.embed_user.add_roles(role)
await interaction.response.send_message(f"{self.embed_user.mention}'s application accepted by {interaction.user.mention}", ephemeral=False)
#This is just a lazy way to deal with when the user turns off server dms
except Exception:
carrier_chat=interaction.guild.get_channel(990438688561463297)
await interaction.message.edit(embed=embed)
await self.embed_user.add_roles(role)
await interaction.response.send_message(f"{self.embed_user.mention}'s application accepted by {interaction.user.mention}", ephemeral=False)
await carrier_chat.send(embed=dm_embed)
pass
Код: Выделить всё
view = ReviewView(embed_user=interaction.user, floor=floor)
Он возвращает только сообщение «Это взаимодействие не удалось», и в консоли ничего не отображается.
Любые идеи будут замечательными!
Позвольте мне узнайте, нужна ли дополнительная информация
Подробнее здесь: https://stackoverflow.com/questions/792 ... -successfu