【问题标题】:Python Discord Bot that bans people on a listPython Discord Bot 禁止列表中的人
【发布时间】:2019-07-24 01:51:07
【问题描述】:

所以我制作了一个机器人来禁止列表中的人。该列表是用户的 ID。向他们发送消息的第一部分有效,但禁止他们的第二部分无效。

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'

【问题讨论】:

    标签: python-3.x discord discord.py


    【解决方案1】:

    discord.py 使用两个不同的类来表示一个帐户,UserMemberMemberUser 的子类。 User 对象代表不和谐帐户(你、我、机器人),而 Member 对象代表特定服务器上帐户的状态,包括昵称、角色、权限等。

    您不能禁止User,因为User 对象不包含有关要禁止它们的服务器的任何信息。相反,您需要获取该服务器的成员对象。幸运的是,Server 对象有一个方法可以让这一切变得简单

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

    【讨论】:

    • 我使用了您的代码,但现在出现此错误: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: 'NoneType' object has no attribute 'id'
    • 这是您的机器人告诉您该服务器上没有具有该 ID 的成员。您可能想尝试通过 line.rstrip() 代替,该字符串中可能有一个换行符,这会搞砸
    猜你喜欢
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 2021-11-04
    • 2020-11-10
    • 2018-11-07
    • 2021-05-02
    相关资源
    最近更新 更多