Answer the question
In order to leave comments, you need to log in
How to add/change a line in emb under certain conditions (Discord)?
I want to change or add a line to emb under certain conditions (if, elif, else). How can this be done so that only the line is added to an already existing emb form?
Line and text to change:
emb.add_field(name= "...", value=..., inline=False)
Answer the question
In order to leave comments, you need to log in
I prepared for you a simple solution that will help you visually understand what and where.
@bot.command()
async def habr(ctx, arg=None):
await ctx.message.delete() # Удаляем наше сообщение.
emb = discord.Embed(title="Хабр", colour=discord.Color.orange()) # Инициализируем эмбед.
emb.add_field(name='Первое поле', value=f'Реально же первое!') # Добавляем поле.
msg = await ctx.send(embed=emb) # Отправляем сообщение и запоминаем что оно такое красивое есть.
await asyncio.sleep(2)
emb = msg.embeds[0] # Выдергиваем с нашего отправленного сообщения эмбед и пересобираем его так, как нужно нам.
for i, item in enumerate(emb.fields): # Перебираем поля в эмбеде. i - индекс(позиция); item - содержание.
if arg: # Если есть аргумент, то добавляем его в наше новое поле.
emb.add_field(name='Второе поле', value=f'{arg}')
else: # Если аргумента нету, то редактируем наше первое поле.
if "Первое поле" in item.name:
emb.set_field_at(index=i, name=item.name, value='Без аргумента? Жаль.', inline=item.inline)
await msg.edit(embed=emb) # Отправляем отредактированное сообщение.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question