@dreameddd

Как сделать добавление/изменение строки в emb при определённом условии (Discord)?

Хочу сделать изменение или добавление строки в emb при определенных условиях (if, elif, else). Как это можно сделать, чтобы только строка добавлялась уже в существующую форму emb?

Строка и текст, который должен меняться:
emb.add_field(name= "...", value=..., inline=False)
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
retUrn3d
@retUrn3d
Пользователь, просто пользователь...
Подготовил для вас простенькое решение, которое поможет вам наглядно понять что и куда.
@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)  # Отправляем отредактированное сообщение.

И гифка с демонстрацией этого на деле.
trim.gif
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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