Удаление определенных сообщений, которые были отправлены ботом и отправлены пользователем. Discord.py переписать - PullRequest
0 голосов
/ 20 января 2019

У меня много проблем с перезаписью 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 ]

0 голосов
/ 23 января 2019
@client.command(pass_context=True)
async def delete(ctx, arg):
    arg1 = int(arg) + 1
    await client.purge_from(ctx.message.channel, limit=arg1)

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

0 голосов
/ 21 января 2019

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

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

до

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