Удаление определенных сообщений, которые были отправлены ботом и отправлены пользователем. Discord.py переписать

У меня много проблем с перезаписью discord.py и его миграцией. Я посмотрел на миграцию на сайт v1.0 и там было сказано, что нужно добавить message.delete(), и я так и сделал, но понял, что это не работает, поэтому я также ввел ctx. Но это привело к ошибке. На данный момент есть две команды с этой ошибкой.

Я уже пытался поместить сообщение в переменную.

@client.command()
async def clear(ctx, amount=100):
    message = ctx.message
    channel = ctx.message.channel
    messages = []
    await ctx.channel.purge(limit=int(amount+1))
    mymessage = await channel.send('Messages deleted')
    await ctx.message.delete(mymessage)

@client.command()
async def verify(ctx, *, arg):
    print(ctx.message.channel.id)
    print(ctx.message.author)
    if ctx.channel.id == 521645091098722305:
        role = await ctx.guild.create_role(name=arg)
        await ctx.message.author.add_roles(role)
        mymessage = await ctx.send('Done! Welcome!')
        await ctx.message.delete(mymessage)
        await ctx.message.delete(ctx.message)

Я ожидал, что вывод удалит сообщение. Для ясного это удаляет это и затем возвращает это. для проверки он просто сохраняет его и показывает ошибку: поднять CommandInvokeError(exc) из exc discord.ext.commands.errors.CommandInvokeError: Команда вызвала исключение: TypeError: delete() принимает 1 позиционный аргумент, но 2 были дано

Также моя роль дает проверки иногда идет 3 раза. Я вошел в диспетчер задач и убил весь питон, но он все-таки сделал это. Однажды, когда я очищался, он сказал Готово! Добро пожаловать. Если вы также можете ответить на этот вопрос, я был бы рад! Заранее спасибо.

2 ответа

Message.delete не принимает никаких аргументов. Это метод, который вы вызываете для сообщения, которое хотите удалить. + Изменить

await ctx.message.delete(mymessage)
await ctx.message.delete(ctx.message)

в

await mymessage.delete()
await ctx.message.delete()
@client.command(pass_context=True)
async def delete(ctx, arg):
    arg1 = int(arg) + 1
    await client.purge_from(ctx.message.channel, limit=arg1)

! удалить 10 - удалить последние 10 сообщений

Другие вопросы по тегам