Ошибка атрибута: объект «CategoryChannel» не имеет атрибута «история» [Discord.py]

#python #discord.py

#питон #discord.py

Вопрос:

Я использую этот код, чтобы получить общее количество сообщений, отправленных пользователем на сервер, и сохранить его в словаре с помощью channel.history, но по какой-то причине я получаю ошибку атрибута

 @client.event async def on_ready():  dct_channels = {}  dct_memb = {}  for guild in client.guilds:  a = guild.members   for channel in guild.channels:   dct_channels.setdefault(guild.name , [])  dct_channels[guild.name].append(channel.id)  for names in a:  dct_memb.setdefault(guild.name , [])  dct_memb[guild.name].append(names.id)    channels = []  users = []  data = {}  for i in dct_channels.values():  for j in i:  channels.append(j)    for j in dct_memb.values():  for i in j:  users.append(i)      for j in channels:  channel = client.get_channel(j)  async for message in channel.history():   for i in users:  user = client.get_user(i)  if message.author == user:  data.setdefault(user , message.content)  data[user].append(message.content)  print(data)  

Ответ №1:

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

 if isinstance(channel, discord.TextChannel):  

В цикле for.

Ваш исправленный код

 for j in channels:  channel = client.get_channel(j)  if isinstance(channel, discord.TextCahnnel):  async for message in channel.history():  for i in users:  user = client.get_user(i)  if message.author == user:  data.setdefault(user , message.content)  data[user].append(message.content)  print(data)  

Комментарии:

1. что это на самом деле возвращает?

2. Он возвращает True , если channel это текстовый канал.

3. Это не вернет вам историю. Это позволит проверить, можете ли вы получить историю канала.

4. о, ладно, спасибо, чувак, это сработало