AttributeError: у объекта 'list' нет атрибута 'channel' discord.py - PullRequest
1 голос
/ 01 апреля 2019

Я пытаюсь создать функцию, которая очищала бы чат от разногласий, используя https://www.youtube.com/watch?v=ZBVaH6nToyM, однако я думаю, что я объявил канал (channel = ctx.message.channel), однако ввод .clear приведет к ошибке

Ignoring exception in command clear
Traceback (most recent call last):
File "C:\Users\mark\AppData\Local\Programs\Python\Python36- 
32\lib\site-packages\discord\ext\commands\core.py", line 50, in 
wrapped
ret = yield from coro(*args, **kwargs)
File "C:/Users/mark/Desktop/purge.py", line 17, in clear
await client.delete_message(messages)
File "C:\Users\mark\AppData\Local\Programs\Python\Python36- 
32\lib\site-packages\discord\client.py", line 1261, in delete_message
channel = message.channel
AttributeError: 'list' object has no attribute 'channel
import discord
from discord.ext import commands
from discord.ext.commands import Bot
TOKEN = "token here"
client = commands.Bot(command_prefix = '.')

@client.event
async def on_ready():
print("Bot is online")

@client.command(pass_context = True)
async def clear(ctx, amount=100):
     channel = ctx.message.channel
     messages = []
     async for message in client.logs_from(channel,limit=int(amount)):
         messages.append(messages)
     await client.delete_message(messages)
     await client.say('message has been deleted')

  client.run(TOKEN)

1 Ответ

0 голосов
/ 01 апреля 2019

Вы в основном добавляете список снова и снова

my_list=[]
my_list.append(my_list)
print(my_list)

В результате получается что-то вроде этого

>>[[[...]]

Команда должна выглядеть примерно так

@bot.command(pass_context=True)
async def clear(msg,amt:int=20): #can be converted into int via :type
    messages=[]
    async for i in bot.logs_from(msg.message.channel,limit=amt):
        messages.append(i)
    await bot.delete_messages(messages)

Также примечание: вы не можете массово удалять сообщения старше 14 дней. Я думаю, это означает, что вы не можете использовать delete_messages и удалять его только по отдельности

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