как редактировать сообщение бота отправленное в ответ на команду (discord.py)

@bot.command()
async def roulette(ctx, message):
    print(message)
    await ctx.send('{0} выпадает'.format(randint(1,6)))
    for i in range(0, 10):
        print(message)
        await message.edit(content=i) # на этой строке возникает ошибка
        sleep(0.2)

Мысль этого вопроса - изменение последнего отправленного сообщения ботом и исправление ошибки. Заранее спасибо :3


Ответы (1 шт):

Автор решения: denisnumb

Ваша функция принимает 2 аргумента - ctx и message.

Первый (ctx) в функцию передает библиотека Discord-py, когда вы вызываете функцию. Это контекст команды. Из него можно получить канал, сообщение, автора, сервер и другую информацию.

Второй аргумент (message) принимает значение первого слова после !roulette, где ! - префикс вашего бота. То есть, при отправке команды !roulette сообщение1 сообщение2, в переменную message будет записана строка 'сообщение1'.


Ошибка возникает потому, что вы пытаетесь отредактировать не сообщение, а переменную message, которая является простой строкой типа str.

Чтобы все работало корректно, вам нужно создать объект сообщения при его первой отправке:

msg = await ctx.send('{0} выпадает'.format(randint(1,6)))

А затем изменять уже этот объект:

await msg.edit(content=i)
→ Ссылка