找不到discord服务器邀请的邀请者id

2024-06-16 12:27:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在试图找到邀请某人加入discord服务器的人的用户id。。我得到了错误

Ignoring exception in on_member_join Traceback (most recent call last): File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event await coro(*args, **kwargs) File "main.py", line 164, in on_member_join inviter = member.guild.get_member(inv_user.id) AttributeError: 'NoneType' object has no attribute 'id'

我的代码是

@bot.event
async def on_member_join(member):
    global count_df
    global inviters_df
    global leavers_df

    inv_user = await tracker.fetch_inviter(member)
    inviter = member.guild.get_member(inv_user.id)
    
    #Update invite counts
    try: #Check to see if the user had an invite count saved already
        count_df.loc[inviter.id]
    except KeyError: #If not, make a new entry for the member
        new_entry = pd.DataFrame([[1,0,0]], index=[inviter.id], columns=count_df.columns)
        count_df = count_df.append(new_entry)
    else: #If yes, then add to it
        count_df.loc[inviter.id,"Real"] += 1
    

    #Update inviter/leaver record
    inviters_df = inviters_df.append(pd.DataFrame([[inviter.id]], index=[member.id], columns=inviters_df.columns))
    inviters_df.to_csv('csv/member_invite_record.csv', index_label='Member')

    try:
        entries =leavers_df.loc[member.id]
    except KeyError:
        return #Member has not left the guild before, no need to update anything
    else:
        for entry in pd.DataFrame([entries]).itertuples():
            if entry.Inviter == inviter.id:
                count_df.loc[inviter.id,"Left"] -= 1
        count_df.to_csv('csv/invite_count.csv', index_label='User_ID')
        leavers_df.drop(labels=member.id, inplace=True)
        leavers_df.to_csv('csv/member_leaver_record.csv', index_label='Leaver')
    
    await give_roles(inviter)
    channel = bot.get_channel(821556573386047518)
    await channel.send(f'{inviter.mention} invited {member.mention} to the server!')

基本上,我让用户id进入csv文件,以跟踪邀请者和他们有多少邀请。错误发生在inviter = member.guild.get_member(inv_user.id) 我如何解决这个问题


Tags: csvtoiniddfgetindexcount
1条回答
网友
1楼 · 发布于 2024-06-16 12:27:48

您的代码似乎是正确的。但是,您需要Members Intent这是因为get_member需要一个成员对象,您只能使用Members意图获取该对象

您必须启用它here。选择所需的应用程序->;选择Bot->;服务器成员,然后确保其旁边显示蓝色。然后单击保存更改。您可能还希望启用Presence intent,因为您将来可能需要它,这样可以节省您返回并再次执行的时间

然后,您必须编辑bot变量,如下所示:

intents = discord.Intents()
intents.all()

bot = commands.Bot(command_prefix=".", intents=intents)

相关问题 更多 >