Python 尝试指定成员时出现位置错误
嗨,我正在尝试获取一个成员名,而不是作者名 我尝试了一些方法,如for member is message.server.members:对服务器中的每个成员返回多个结果,并尝试了member:discord.member作为签名,但产生了错误: 以下是我的工作内容: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
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我错误地认为是邮件,这样做更有意义。不知道他们为什么把目标定在一个成员身上。