【问题标题】:I can't get members from a 16k member server, what am I doing wrong?我无法从 16k 会员服务器获取会员,我做错了什么?
【发布时间】:2020-02-14 22:42:17
【问题描述】:

我正在尝试使用他们的 ID 从不和谐服务器获取某些用户对象,但由于某种原因它无法获取公会对象。我的代码:

@botclient.event
async def on_ready():
    for x in all_ids:
        guild = botclient.get_guild(GUILD)
        user=guild.get_member(x)
        all_urls[x]=user.avatar_url

botclient.run(TOKEN)

[TOKEN 和 GUILD 上面有更详细的说明,我检查了很多次,似乎没有任何问题]

它以前在一个较小的服务器上工作过,我已经尝试了几种变体,但每个变体都给了我一个 AttributeError:

    user=guild.get_member(x)    
AttributeError: 'NoneType' object has no attribute 'get_member'

(有时在尝试获取头像 URL 时也会发生这种情况)

我启用了日志记录,并且在异常之后,它会输出(我已经删除了公会 ID)

INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 1000 members in guild ID -.
INFO:discord.state:Processed a chunk for 107 members in guild ID -.

..这让我相信它实际上成功地获得了公会,但由于某种原因它在代码中不起作用

我找不到任何关于此的文档,如果有人能指出在哪里可以找到它/指出我犯的任何错误,那将不胜感激!

【问题讨论】:

  • 看起来获得公会有时会失败。尝试将guild=... 行移到循环外
  • @PatrickHaugh 试过了,仍然给我一个Ignoring exception in on_ready Traceback (most recent call last): File "C:\Users\Rev\AppData\Local\Programs\Thonny\lib\site-packages\discord\client.py", line 312, in _run_event await coro(*args, **kwargs) File "E:\Documents\Python Documents\bot\test.py", line 23, in on_ready all_urls[x]=user.avatar_url AttributeError: 'NoneType' object has no attribute 'avatar_url',然后继续所有INFO:discord.state:Processed a chunk for 1000 members in guild ID -.

标签: python-3.x discord.py


【解决方案1】:

您是否将机器人添加到服务器?

经过一番测试,如果不允许机器人访问服务器,您似乎无法获取该数据。如果没有,请添加它,然后重试,应该可以。

编辑

@bot.command()
async def getMembers(ctx):
    members = ctx.guild.members

    print(members[:10])

【讨论】:

  • 虽然它在服务器中,但当我运行程序时它显示为在线。这可能与烫发有关吗?我认为机器人不需要任何人就能获得成员。 Afaik 机器人只有查看频道权限。
  • 嗯,不,刚刚经过测试,我的机器人能够做到这一点,只需要查看频道权限。尝试运行我添加到答案中的命令,看看是否返回任何内容。
  • 运行时,它不打印任何东西,日志只是再次显示INFO:discord.state:Processed a chunk for 1000 members in guild ID -.(等)
【解决方案2】:

我已经通过使用await client.fetch_member() 而不是guild.get_member() 让它工作了!

仍然不明白为什么guild.get_member() 不起作用,虽然...

我将来可能需要它,如果到那时我仍然无法让它工作,那将是很遗憾的,但我想这现在是一种解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多