Discord Selfbot 无法获取所有成员,只能获取其中的一部分

时间:2021-02-28 19:25:06

标签: python discord.py

嘿,我正在尝试让所有用户都在一个特定的指南中,我正在获取部分用户而不是全部用户,为什么?,而且我不在乎不和谐条款,我不会向服务器发送垃圾邮件或其他内容像这样所以请帮忙告诉我不和谐规则,因为我很清楚,这是我做的代码,

import discord
import asyncio

intents = discord.Intents(messages=True, guilds=True, members=True)

client = discord.Client(intents=intents)


token = ""



@client.event
async def on_ready():
    print("Bot Is Ready!")
    guild = client.get_guild(328154277111398403)
    for member in guild.members:
        print(member)
        await asyncio.sleep(0.1)




client.run(token, bot=False)

1 个答案:

答案 0 :(得分:1)

在 selfbots/userbots 的上下文中,discord.py 实际上没有能力获取成员列表(或者至少是其中的重要部分),因此不适合此任务。相反,您必须使用不同的库或编写自己的解决方案。继续阅读一些代码:)

代码:
具有此支持的 Python 库是 discum
以下是使用 discum 获取成员列表所需的最少代码:

import discum
bot = discum.Client(token='blah blah blah')

@bot.gateway.command
def helloworld(resp):
    if resp.event.ready_supplemental: 
        bot.gateway.fetchMembers("GUILD_ID_HERE", "CHANNEL_ID_HERE")

bot.gateway.run()

这是另一个示例,它创建了一个名为 get_members 的函数,该函数返回成员列表:https://github.com/Merubokkusu/Discord-S.C.U.M/blob/master/examples/gettingGuildMembers.py

这里有更多示例: https://github.com/Merubokkusu/Discord-S.C.U.M/blob/master/docs/fetchingGuildMembers.md

它是如何工作的?
由于我们无法像机器人帐户一样请求成员列表,我们需要利用成员列表(是的,您在进入公会时会看到右侧的成员侧边栏)。我们需要逐个阅读整篇文章。

基本上它是如何完成的,客户首先订阅公会频道中的成员事件(Luna 在她的非官方 discord 文档中对此进行了一些讨论,但遗漏了很多)。然后,当用户滚动成员列表时,会发送更多的惰性请求来获取成员列表的每个块。这就是 discum 中发生的事情:发送延迟请求,直到获取整个成员列表。 Here's some more info.