我目前正在使用pycord在python中创建一个不和bot。我有一个命令,发送与嵌入两个字段的消息。一个名为Yes,值为0,另一个名为No,值也为0。在选择菜单中,我创建了两个选项。选项是和选项否。我的目标是在不重新发送选择菜单的情况下增加嵌入字段的值,因此它的选择保留在那里。我的问题是,我正在创建一个新的嵌入与新的值,但当发送视图重置自己。
这是我选择菜单回调函数:
async def select_callback(self, select, interaction):
embed = interaction.message.embeds[0]
fields = embed.fields
new_embed = discord.Embed(
title=embed.title,
description=embed.description,
)
for field in fields:
if field.name == "Yes" and select.values[0] == "Yes":
new_embed.add_field(name="Yes", value=str(int(field.value) + 1), inline=True)
await interaction.response.send_message("You voted for `Yes`", ephemeral=True)
elif field.name == "No" and select.values[0] == "No":
new_embed.add_field(name="No", value=str(int(field.value) + 1), inline=True)
await interaction.response.send_message("ou voted for `No`", ephemeral=True)
else:
new_embed.add_field(name=field.name, value=field.value, inline=field.inline)
await interaction.message.edit(embed=new_embed)
我已经问过ChatGPT一些解决方案,但他们都没有工作。我也谷歌了一下,没有找到解决办法。我自己也试过,我试过把视图和嵌入分成两个消息。遗憾的是没有任何解决办法。
我发现这是不可能的,因为选择菜单自己重置。
您可以通过更改条目中的'default'参数来设置选项列表中的默认值:
async def select_callback(self, select, interaction):
select.options[0].default = True
await interaction.response.edit_message(view=self)