Python Discord Bot, который запрещает людей в списке - PullRequest
0 голосов
/ 02 марта 2019

Итак, я создал бота, который запрещает людей в списке.Список идентификаторов пользователей.Первая часть, которая сообщает им, работает, но вторая часть, которая запрещает их, не работает.

if message.content.startswith('purge') and message.author.id == "317026781708288024":
    logID()
    msg = "Hey something bad happened and you got banned good luck the server is down now"
    f = open("ID.log","r")
    lines = f.readlines()
    for line in lines:
        member = await client.get_user_info(line)
        try:
            await client.send_message(member, msg)
        except Exception: 
            pass
        await client.ban(member, delete_message_days=7)
    f.close()

Я получаю ошибку:

Ignoring exception in on_message
Traceback (most recent call last):
File "/home/jacob/.local/lib/python3.6/site-packages/discord/client.py", line 307, in _run_event
yield from getattr(self, event)(*args, **kwargs)
File "Evster.py", line 141, in on_message
await client.ban(member, delete_message_days=7)
File "/home/jacob/.local/lib/python3.6/site-packages/discord/client.py", line 1735, in ban
yield from self.http.ban(member.id, member.server.id, delete_message_days)
AttributeError: 'User' object has no attribute 'server'

1 Ответ

0 голосов
/ 02 марта 2019

discord.py использует два разных класса для представления учетной записи, User и Member.Member является подклассом User.Объект User представляет учетную запись пользователя (вы, я, бот), а объект Member представляет состояние учетной записи на определенном сервере и включает псевдонимы, роли, разрешения и т. Д.

Вы не можете запретить User, потому что User объекты не содержат никакой информации о сервере, с которого они должны быть заблокированы.Вместо этого вам нужно получить объект члена этого сервера.К счастью, у Server объектов есть метод, который облегчает это

member = message.channel.server.get_member(line) 
...