@PR0V0DNIK

Как изменить отправленное Embed сообщение через бота на disnake?

Вкратце
Есть код, который в данный момент после ввода слэш команды отправляет сообщение с кнопками в первый канал и embed сообщение с пустым списком во второй канал. Нужно чтобы по нажатию на кнопку "Внести в список", бот добавлял в список упоминание нажавшего на кнопку, а при нажатии "Вынести из списка" удалял из этого сообщения упоминание пользователя.
Сообщение, которое он сейчас отправляет668e4b7047af2335428171.png
Что должно происходить после нажатия на кнопку "Добавить в список":668e4d00c93be182527263.png
class Capture(disnake.ui.View):

	def __init__(self):
		super().__init__(timeout=None)

	@disnake.ui.button(label="Внести в список", style=disnake.ButtonStyle.green, emoji="", custom_id="vnesti")
	async def vnesti(self, button: disnake.ui.Button, inter: disnake.Interaction):
		role = inter.guild.get_role(1253645876518322227)
		if role in inter.author.roles:
			await inter.send(embed=disnake.Embed(title="Ты внесён в список на капт:gun:"), delete_after=2, ephemeral=True)
			await chnl.send(embed=disnake.Embed(
				title="Внести в список",
				color=0x4be000,
				description=f"Внести в список{inter.author.mention}"
			))
		else:
			self.stop

			
	@disnake.ui.button(label="Вынести из списка", style=disnake.ButtonStyle.red, emoji="", custom_id="vinesti")
	async def vinesti(self, button: disnake.ui.Button, inter: disnake.Interaction):
		role = inter.guild.get_role(1253645876518322227)
		chnl = inter.guild.get_channel(1254749380578250824)
		if role in inter.author.roles:
			await inter.send(embed=disnake.Embed(title="Хорошо, я тебя понял:cry:"), delete_after=2 ,ephemeral=True)
			await chnl.send(embed=disnake.Embed(
				title="Вынести из списка",
				color=0x4be000,
				description=f"Вынести из списка на капт{inter.author.mention}"
			))
		else:
			self.stop

	@commands.slash_command(name="капт")
	async def capt(self, inter, enemy: str, time: str, place: str, time2: str):
		view = Capture()
		guild = self.bot.get_guild(inter.guild.id)
		chnl = self.bot.get_channel(1254189727104368682)
		chnl2 = self.bot.get_channel(1254749380578250824)
		role = guild.get_role(1253645876518322227)
		embed = disnake.Embed(title="Капт",
			color=0x4be000,
			description=f"Начало капта против {enemy} в {time}\nСтрой на {place} в {time2}\nНеявка = ОВС"
		)
		await chnl.send(embed=embed, view=view)
		await chnl.send(f"{role.mention}")
		await chnl2.send(embed=disnake.Embed(
			title="Капт список",
			color=0x4be000,
			description="Список участников:"
			)
		)
		await inter.send(embed=disnake.Embed(title="Готово✅"), delete_after=2, ephemeral=True)
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
fenrir1121
@fenrir1121 Куратор тега discord.py
Начни с документации
Для редактирования есть единственный метод edit_message, где в embed или embeds будет лежать ваш эмбед. Его нужно изменить или положить новый с измененными данными.

С эмбедом можно работать через его методы, а можно работать с обычным словарем через методы Embed.to_dict и Embed.from_dict. Структура у него простая и подробно описана в офф документации.

Далее пишите свою логику, которая будет искать нужный кусок текста и удалять его. Со вставкой будет проще, дописывайте в конец.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы