Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试指定成员时出现位置错误_Python_Python 3.x_Discord_Discord.py - Fatal编程技术网

Python 尝试指定成员时出现位置错误

Python 尝试指定成员时出现位置错误,python,python-3.x,discord,discord.py,Python,Python 3.x,Discord,Discord.py,嗨,我正在尝试获取一个成员名,而不是作者名 我尝试了一些方法,如for member is message.server.members:对服务器中的每个成员返回多个结果,并尝试了member:discord.member作为签名,但产生了错误: 以下是我的工作内容: async def on_message_delete(self, message): server = message.server author = message.author role = get

嗨,我正在尝试获取一个成员名,而不是作者名

我尝试了一些方法,如for member is message.server.members:对服务器中的每个成员返回多个结果,并尝试了member:discord.member作为签名,但产生了错误:

以下是我的工作内容:

async def on_message_delete(self, message):
    server = message.server
    author = message.author
    role =  get(server.roles, name="Powerbot")
    channel = get(message.server.channels, name="mod-log")
    time = datetime.utcnow()
    cleanmsg = message.content
    for i in message.mentions:
        cleanmsg = cleanmsg.replace(i.mention, str(i))
    fmt = '%H:%M:%S'
    name = author
    name = " ~ ".join((name.name, name.nick)) if name.nick else name.name
    if role not in author.roles:
        infomessage = "A message by {}, was deleted in {} by {}".format(message.author.mention, message.channel.mention, member,mention)
        delmessage = discord.Embed(description=infomessage, colour=discord.Color.purple(), timestamp=time)
        delmessage.add_field(name="Message:", value=cleanmsg)
        delmessage.set_footer(text="User ID: {}".format(message.author.id))
        delmessage.set_author(name=name + " message deleted.", icon_url=message.author.avatar_url)
        delmessage.set_thumbnail(url="http://i.imgur.com/fJpAFgN.png")
        try:
            await self.bot.send_message(channel, embed=delmessage)
        except:
            pass
指定member.notice所在的行

infomessage=由{}发送的消息,已由{}.formatmessage.author.Title、message.channel.Title、member.Title在{}中删除

输出示例:成员在频道中删除了作者的消息


如果有人能帮上忙,我们将不胜感激。

我敢肯定,客户不会被告知是谁删除了这封邮件,只会被告知邮件已被删除。消息对象本身不包含该信息,来自重写分支的消息也不包含该信息


我对底层的Discord API不太熟悉,但网关事件看起来就是Discord.py在删除消息时接收到的事件,它没有提到任何关于删除者身份的内容

由于stable discord.py不支持审核日志,因此无法从您使用的discord版本中查看删除邮件的人。您将需要discord.py重写以使用以下解决方案:

@bot.event()
async def on_message_delete(msg):
    audits = await msg.guild.audit_logs(limit=10, action=discord.AuditLogAction.message_delete)
    async for audit in audits:
        try:
            await audit.target.get_message(msg.id)
        except discord.NotFound:
            continue      
        print(audit.user)
        break
这是基于这样一种假设,即消息即使在被删除后也会被保留。如果上述方法不起作用,我想我们最好能做的是:

@bot.event()
async def on_message_delete(msg):
    audits = await msg.guild.audit_logs(limit=10, action=discord.AuditLogAction.message_delete)
    audit = await audits.get(extra__channel=msg.channel)
    print(audit.user)
有关更多信息,请参阅:


错误是什么?TypeError:on_message_delete缺少1个必需的位置参数:“member”,如果我将member:discord.member添加到协同程序签名中,我会收到该消息。我可能在代码示例中输入了一两个错误,因为我在手机上无法验证。如果有人能指出代码中的任何错误或它是否有效,那就太好了。谢谢目标是删除其邮件的用户或成员,而不是邮件本身。@PatrickHaugh我错误地认为是邮件,这样做更有意义。不知道他们为什么把目标定在一个成员身上。