@Teabrew-py

Как удалить сообщения указанного пользователя Discord Python?

Я Пишу бота и столкнулся с проблемой: Мне нужна команда clear, которая будет удалять сообщения. Она должна удалить только те сообщения, которые написал сам пользователь, не трогая другие. И вот действительно всё работает так:

@bot.command(pass_contex=True)
async def clear(ctx, arg=None):
    arg =  arg + 1
    await ctx. channel.purge(limit=arg, check=lambda message: message.author == ctx.author)
    await ctx.send(f'Удалено ` {arg - 1} ` сообщений', delete_after=5)


К сожалению, работает всё не так, как хотелось бы. Удаляются действительно нужные сообщения, но при проверке на удаление, те сообщения, которые не нужно удалять, считаются удалёнными. Проще показать это так:

[Моё сообщение] bla-bla
[Моё сообщение] bla-bla
[Сообщение другого пользователя] bla-bla
[Сообщение другого пользователя] bla-bla
[Сообщение другого пользователя] bla-bla
[Моё сообщение] bla-bla

Для того, чтобы удалить только мои сообщения, нужно написать .clear, тогда должны удалится только мои сообщения, но на деле нужно прописать .clear 6, так как учитываются не только мои сообщения, но и сообщения других пользователей

Как исправить?
  • Вопрос задан
  • 1111 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Либо смириться, что команда ищет твои сообщения среди N последних, а не ищет N твоих последних.
Либо загрузить историю чата, и найти, сколько сообщений было с момента Nго твоего сообщения.

Сразу скажу, последнее может быть муторно в реализации и тормознуто на практике. Что, если с момента твоего давнего затираемого сообщения в чате написали 100500 других?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы