D
D
Dream2021-05-20 11:48:39
Python
Dream, 2021-05-20 11:48:39

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

1 answer(s)
R
retUrn3d, 2021-05-20
@dreameddd

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)  # Отправляем отредактированное сообщение.

And a GIF demonstrating this in practice.
trim.gif

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question