discord.py 类型错误:on_member_join() 缺少 1 个必需的位置参数:“成员”错误

时间:2021-05-14 22:40:14

标签: python discord discord.py bots

@client.event
async def on_member_join(ctx, member : discord.member):
    print(f'{time} {member} has joined {ctx.guild.name}, Server ID: {ctx.guild.id}')
    with open('join-log.txt', 'a') as joinlog:
        joinlog.writelines(f'{time} {member} has joined {ctx.guild.name}, Server ID: {ctx.guild.id}\n')

@client.event
async def on_member_remove(ctx, member : discord.member):
    print(f'{time} {member} has joined {ctx.guild.name}, Server ID: {ctx.guild.id}')
    with open('leave-log.txt', 'a') as leavelog:
        leavelog.writelines(f'{time} {member} has left {ctx.guild.name}, Server ID: {ctx.guild.id}\n')

此代码旨在制作一个文本文件并存储离开和加入我的机器人的服务器的用户。它提出的错误是

TypeError: on_member_join() missing 1 required positional argument: 'member'

但我似乎无法弄清楚这段代码有什么问题

1 个答案:

答案 0 :(得分:1)

正如评论中提到的:on_member 事件只是将 member 作为参数,仅此而已。

为了仍然能够获得 nameguildid,我们可以将 ctx 替换为 member。我们还通过 datetime.datetime.utcnow 请求确切时间,但您也可以通过任何其他方式来获得。

查看完整代码:

import datetime

@client.event
async def on_member_join(member):
    print(f'{datetime.datetime.utcnow()} {member} has joined {member.guild.name}, Server ID: {member.guild.id}')
    with open('join-log.txt', 'a') as joinlog:
        joinlog.writelines(f'{datetime.datetime.utcnow()} {member} has joined {member.guild.name}, Server ID: {member.guild.id}\n')

@client.event
async def on_member_remove(member):
    print(f'{datetime.datetime.utcnow()} {member} has left {member.guild.name}, Server ID: {member.guild.id}')
    with open('leave-log.txt', 'a') as leavelog:
        leavelog.writelines(f'{datetime.datetime.utcnow()} {member} has left {member.guild.name}, Server ID: {member.guild.id}\n')

输出:

2021-05-14 22:56:12.511888 XXXX#0000 has left Test Server, Server ID: XXX
2021-05-14 22:56:22.067174 XXXX#0000 has joined Test Server, Server ID: XXX